ORACLE Скорость загрузки таблицы - PullRequest
1 голос
/ 22 июня 2011

Это новая проблема, с которой я раньше не сталкивался.

У меня есть таблица, которая в один момент содержала более 100 тыс. Записей, это журнал событий для среды разработки.

загрузка таблицы заняла до 10 секунд (просто щелкните по ней, чтобы просмотреть данные в таблице).

Я удалил все строки, кроме 30, и загрузка все равно занимает 7 секунд.

Я использую Toad, и он дает мне диалоговое окно с надписью «Обработка операторов ...»

Есть идеи?

Ниже приведены некоторые избранные утверждения и сколько времени они заняли

select * from log;  21 rows in 10 secs
select * from log where id = 120000; 1 row in 1 msec
select * from log where user = 35000; 9 rows in 7 sec

Идентификатор - это pk, в пользовательском поле нет индекса.

У меня есть табличное представление, которое также содержит все поля, расположенные поверх этой таблицы, и работает так же медленно.

Ответы [ 2 ]

5 голосов
/ 22 июня 2011

Если вы выдаете «select * from event_log_table», то вы сканируете всю таблицу с полным сканированием таблицы. Он должен сканировать все выделенные сегменты, чтобы увидеть, есть ли там строки. Если ваша таблица когда-то содержала более 100 тыс. Строк, то она выделила как минимум объем пространства, чтобы можно было хранить эти 100 тыс. Строк. Пожалуйста, смотрите: http://download.oracle.com/docs/cd/B19306_01/server.102/b14231/schema.htm#sthref2100

Теперь, если вы удалите строки, пространство по-прежнему будет выделено для этой таблицы, и Oracle все равно будет сканировать все пространство. Это работает как высокая отметка.

Чтобы уменьшить верхнюю отметку, вы можете выполнить команду TRUNCATE TABLE, которая сбрасывает верхнюю отметку. Но тогда вы потеряете ВСЕ строки.

И есть возможность уменьшить пространство в таблице. Вы можете прочитать об этом и его предпосылках здесь: http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/statements_3001.htm#sthref5117

С уважением,
Роб.

0 голосов
/ 22 июня 2011

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

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