Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Можно ли выключить кеширование для конкретного запроса?  [new]
Alibek B.
Member

Откуда:
Сообщений: 3721
У меня есть запрос, в котором последнее соединение производится с очень большой таблицей.
Этот запрос обычно выполняется быстро (менее 100мс), но иногда долго (сотни секунд). При этом повторное выполнение производится быстро.
Я пытаюсь оптимизировать запрос и хочу быть уверенным, что при запуске он именно выполняется, а не использует закешированный результат. Можно ли запретить использование кеша для конкретного запроса, не очищая весь shared pool?
26 янв 19, 13:49    [21794778]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли выключить кеширование для конкретного запроса?  [new]
Vivat!San
Member

Откуда: Москва
Сообщений: 718
Можете быть уверены, он всегда выполняется, разберитесь для чего нужен shared_pool.
26 янв 19, 15:28    [21794812]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли выключить кеширование для конкретного запроса?  [new]
Elic
Member

Откуда:
Сообщений: 29977
Vivat!San
разберитесь для чего нужен shared_pool.
И где тогда хранится result_cache?
26 янв 19, 16:28    [21794836]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли выключить кеширование для конкретного запроса?  [new]
Пылинка
Member

Откуда: СПб
Сообщений: 389
Elic
Vivat!San
разберитесь для чего нужен shared_pool.
И где тогда хранится result_cache?

Elic
Vivat!San
разберитесь для чего нужен shared_pool.
И где тогда хранится result_cache?

В принципе возможно в Client Result Cache, но обычно там где вы "намекаете".

У меня сразу вопрос к автору
-зачем это нужно (модифицировать данные связанные с запросом - резалт инвалидируется)
- а как же Buffer cache - данные таблиц.
-есть еще дисковый кеш вашей ОС, который тоже влияет.
+
я вообще то зарекся вникать в тонкости оракла - мне за это платить почему то не хотят. Вот есть dbms_result_cache.bypass(true/false);
26 янв 19, 21:25    [21794968]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли выключить кеширование для конкретного запроса?  [new]
Elic
Member

Откуда:
Сообщений: 29977
Пылинка
там где вы "намекаете"
Вообще-то ТС крайне косноязычен и плавает в технологиях настолько, что непонятно, какой же пул ему нужен на самом деле.
26 янв 19, 22:29    [21795002]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли выключить кеширование для конкретного запроса?  [new]
Alibek B.
Member

Откуда:
Сообщений: 3721
Возможно я термины употребляю некорректно.
Тогда попробую без них.
При повторном выполнении запроса бывает так, что он выполняется быстро. Не уверен, что именно является причиной, но думаю, что это оптимизатор кеширует результаты.
Если дело именно в этом, то я бы хотел сбросить этот кеш, чтобы оценить истинное время выполнения запроса.
27 янв 19, 01:24    [21795051]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли выключить кеширование для конкретного запроса?  [new]
Alibek B.
Member

Откуда:
Сообщений: 3721
Пылинка
У меня сразу вопрос к автору

Периодически запускаемый скрипт получает список новых записей (которые нужно обрабатывать) и выполняет с ними определенные действия.
Один из атрибутов выборки извлекается из большой таблицы (порядка 500кк строк) и неоптимальный запрос будет сильно нагружать сервер.
27 янв 19, 01:31    [21795052]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли выключить кеширование для конкретного запроса?  [new]
Valergrad
Member

Откуда:
Сообщений: 703
Alibek B.,

если проблема в оценке времени запроса - смотрите просто на consistent gets в статистике сессии.
А вообще почему бы вам просто не внести эту таблицу в keep pool, чтобы запрос всегда выполнялся быстро?
27 янв 19, 02:08    [21795067]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли выключить кеширование для конкретного запроса?  [new]
Elic
Member

Откуда:
Сообщений: 29977
Valergrad
внести эту таблицу в keep pool
Нашёлся-таки учёный, который не только смог объяснить причину стука в подвале, но и сразу же предложил способ его устранения.
27 янв 19, 09:05    [21795093]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли выключить кеширование для конкретного запроса?  [new]
xtender
Member

Откуда: Мск
Сообщений: 5704
Alibek B.
Я пытаюсь оптимизировать запрос
как вы пытаетесь оптимизировать запрос без понимания, что происходит при его выполнении?
Alibek B.
При повторном выполнении запроса бывает так, что он выполняется быстро.
ну уж минимум-то можно было изучить: получение реального плана и трассировки.
Alibek B.
думаю, что это оптимизатор кеширует результаты.
может быть что угодно: dynamic sampling при первом выполнении, изменение плана от cardinality feedback/adaptive statistics и тд, но вот как раз чтобы кэширование в buffer cache (и это делает никак не оптимизатор, который CBO) влияло на разницу от сотен секунд до 10мс - крайне маловероятно
27 янв 19, 13:09    [21795151]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить