Кэширование небольших, более или менее постоянных таблиц в Oracle 11g - PullRequest
1 голос
/ 20 августа 2010

Многие запросы в нашем приложении включают соединения между большими (+ часто обновляемыми) таблицами с небольшими (+ константными таблицами).В целом я имею в виду> 1 миллион строк, а под маленькой таблицей я имею в виду <5000 строк. </p>

Я ищу способы использования некоторой технологии функций / оптимизации в Oracle (не на уровне приложений), чтобы эти объединения могли бытьсделано более эффективно.Прочитав этот вопрос, я обнаружил, что кэширование результатов и материализованные представления соответствуют моему сценарию.

Я взвешиваю минусы для каждого из этих двух методов:

  1. Кэш результатов: Поскольку большие таблицы изменчивы, следовательно, я не думаю, что кэш результатов может помочь мне в эффективном объединении.Но что, если я помещу маленькие таблицы в кеш результатов - поможет ли это в JOIN'ах таким образом, что Oracle не будет читать диск для извлечения данных из маленьких таблиц при выполнении JOIN?

  2. Материализованные представления: Я думаю, что это может снова вызвать проблемы с устаревшими данными, потому что большие таблицы часто обновляются

Я хотел знать, какой метод люди нашлиполезно в подобных сценариях.

1 Ответ

2 голосов
/ 20 августа 2010

Это зависит от вида запросов.

Если запрос просматривает большое количество строк в большой таблице (например, агрегация, типичная для хранилища данных), вы можете воспользоваться преимуществом «предварительной агрегации».более старые / статические строки в материализованном виде (что, вероятно, потребует разбиения).В соединениях вы можете просматривать растровые индексы / растровые индексы соединений в зависимости от характера (особенно параллелизма) вставок / обновлений.

Если каждый запрос просматривает одно и то же подмножество большой таблицы (например, «на этой неделезаказы "), то кластеризация этого подмножества на одних и тех же битах диска может помочь с кэшированием памяти.

Если каждый запрос просматривает разные подмножества большой таблицы, то, вероятно, кеширование не поможет, но вы должны убедиться, что ваши индексы верны.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...