Сервер oracle зависает при вставке строк в таблицу измерений - PullRequest
1 голос
/ 11 января 2012

Есть две таблицы. Первая - это таблица фактов, около 0,1 миллиарда строк. Другая - это таблица измерений, содержащая всего около 100 строк. Я создал индекс растрового соединения для таблицы фактов, чтобы оптимизировать запрос.

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

Кто-нибудь знает, в чем может быть причина?

Ответы [ 2 ]

4 голосов
/ 11 января 2012

Индекс точечного рисунка - это матрица, содержащая столбец для каждого отдельного значения и строку для каждой записи в индексированной таблице. Тот же принцип применяется в индексе соединения растрового изображения: у вас есть один столбец для каждого отдельного значения в таблице DIMENSION и одна строка в таблице FACT.

Из чего должно быть очевидно, что при вставке одной строки в таблицу DIMENSION будет 100 миллионов записей в индексе. Это займет много времени.

Вы говорите, что вставляете "несколько строк". Итак, если честно, как вы думаете, было бы разумным временем для создания всех этих записей?

Это компромисс между растровым индексом: он может сэкономить много времени на запросы, но накладные расходы на обслуживание чрезвычайно высоки. Следовательно, мы должны тщательно подумать, прежде чем развертывать растровый индекс. Иногда можно уменьшить эти расходы, но это зависит от конкретных обстоятельств.

Есть еще одна вещь, которую следует иметь в виду при использовании индексов растрового соединения, которые могут также вызвать зависание сервера:

"Только одна таблица может обновляться одновременно разными транзакциями при использовании индекса соединения растровых изображений. "

Вы должны прочитать документацию. Узнайте больше.

0 голосов
/ 16 января 2012

У растровых индексов есть связанное снижение производительности при загрузке большого количества строк.Чтобы добиться желаемой эффективности, просто пометьте индекс как непригодный, загрузите записи и перестройте индекс.Вы должны увидеть, как увеличивается время загрузки с количеством данных, о которых вы говорите.

...