Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
Damir Участник - экстремал
Вступление в Клуб: 29.03.2013
|
Ср Июн 26, 2013 13:37  500 мильёнов записей в таблице - нормально? |
|
Полезность: Нет оценки
|
Уважаемые ДБА, подскажите...
есть у нас табличка, в которой около 500 мильёнов записей лежит.
простецкий запрос:
Код: | select count(1) from big_table |
выполняется 1.5 часа (план - фулл скан по индексу первичного ключа).
собственно, меня напрягло не количество записей, а 1.5 часа на выполнение запроса.
предложите что-нибудь умное..... |
|
 |
yaffil Профи
Вступление в Клуб: 18.08.2011
|
Ср Июн 26, 2013 14:37   |
|
Полезность: Нет оценки
|
1й столбец индексируется?
Попробуйте собрать статистику по данной таблице. |
|
 |
Damir Участник - экстремал
Вступление в Клуб: 29.03.2013
|
Чт Июн 27, 2013 04:58   |
|
Полезность: Нет оценки
|
yaffil пишет: | 1й столбец индексируется?
Попробуйте собрать статистику по данной таблице. |
1-ый столбец - это поле ID, первичный ключ. Конеччно он проиндексирован. На плане - фулл скан именно этого индекса.
на плане 2 последние цифры - кост и кардиналити.
кардиналити в плане совпадает с количеством записей, т.е. чего потом выдает запрос.
Код: | SELECT STATEMENT, GOAL = ALL_ROWS 2834714 1
SORT AGGREGATE 1
INDEX FULL SCAN COMP PK_Z#ACCARC_ID 2834714 516988101 |
|
|
 |
Alkov Профи
Вступление в Клуб: 23.09.2010
|
Чт Июн 27, 2013 08:56   |
|
Полезность: Нет оценки
|
Пресобрать статистику или лучше перестроить индекс ? |
|
 |
Random Эксперт
Вступление в Клуб: 27.06.2011
|
Пт Июн 28, 2013 08:22  Re: 500 мильёнов записей в таблице - нормально? |
|
Полезность: Нет оценки
|
Damir пишет: | Уважаемые ДБА, подскажите...
есть у нас табличка, в которой около 500 мильёнов записей лежит.
простецкий запрос:
Код: | select count(1) from big_table |
выполняется 1.5 часа (план - фулл скан по индексу первичного ключа).
собственно, меня напрягло не количество записей, а 1.5 часа на выполнение запроса.
предложите что-нибудь умное..... |
Предлагаю:
Код: | select num_rows from user_tables where table_name = 'BIG_TABLE' |
|
|
 |
Serj Профи
Вступление в Клуб: 02.08.2007
|
Пт Июн 28, 2013 08:39   |
|
Полезность: Нет оценки
|
А что собственно напрягает? Все записи получаются из индекса построенного по первичному ключу. В чем вопрос то? высокая кардинальность - идет полный просмотр индекса содержащего все значения таблицы, единственно что странно , то что нет INDEX FAST FULL SCAN, а просто INDEX FULL SCAN - возможно портит все системная статистика. Перестройка индекса не поможет - она поможет только место выиграть, на скорость не влияет ничуть. Сбор статистики так же вряд ли поможет. что выдает Код: | select sname, pname, pval1 from sys.aux_stats$ |
|
|
 |
Serj Профи
Вступление в Клуб: 02.08.2007
|
Пт Июн 28, 2013 08:54   |
|
Полезность: Нет оценки
|
До кучи интересно еще так оценить время и посмотреть план выполнения или трассировку - запроса
Код: |
select/*+ FULL (big_table) */ count(*) from big_table;
|
|
|
 |
Damir Участник - экстремал
Вступление в Клуб: 29.03.2013
|
Пн Июл 01, 2013 06:46   |
|
Полезность: Нет оценки
|
Serj пишет: | А что собственно напрягает? Все записи получаются из индекса построенного по первичному ключу. В чем вопрос то? что выдает Код: | select sname, pname, pval1 from sys.aux_stats$ |
|
Индексы обычно кэшируются и т.д. Ну не 1.5 часа же индекс перебирать - вот это и напрягает.
sys.aux_stats$ - нет у меня прав на нее, похоже. Таблица или Вью не существует. |
|
 |
Serj Профи
Вступление в Клуб: 02.08.2007
|
Пн Июл 01, 2013 11:50   |
|
Полезность: Нет оценки
|
Возможно тут налицо - чтения из индекса по блочно всех значений таблицы - INDEX FULL SCAN ,что очень долго для просмотра, но не имея трассировки запроса сказать сложно. Интересно проверить как себя поведет фулскан таблицы - там должны быть мультиблочные чтения( по-идее). А вот за методы доступа именно сильно отвечает системная статистика - неплохо бы ее глянуть. А то что индексы кэшируются, это не совсем так - блоки индекса попадают в буферный кэш - и часто бывает вытесняются другими более "горячими" блоками других таблиц и индексов. |
|
 |
Damir Участник - экстремал
Вступление в Клуб: 29.03.2013
|
Пн Июл 01, 2013 15:01   |
|
Полезность: Нет оценки
|
Всем спасибо. На сервере что-то починилось само-собой.
Вроде как, админ в отпуске был
Сейчас за 5 мин. отрабатывает - вполне приемлемо (и по Фулл Скану индекса и по Фулл Скану таблицы). |
|
 |
Serj Профи
Вступление в Клуб: 02.08.2007
|
Вт Июл 02, 2013 04:56   |
|
Полезность: Нет оценки
|
Хотя бы новый план запроса поглядеть, а то так и не узнаем до конца что это было. |
|
 |
Damir Участник - экстремал
Вступление в Клуб: 29.03.2013
|
Вт Июл 02, 2013 10:34   |
|
Полезность: Нет оценки
|
Serj пишет: | Хотя бы новый план запроса поглядеть, а то так и не узнаем до конца что это было. |
А планы не изменились.
Подозреваю, что на сервере просто диски умирали.
Ну и краем уха слышал, что какие-то табличные пространства "не могут быть расширены" - я сам не админ, в этом не шарю.
В любом случае, спасибо за соучастие, сейчас уже все починили. |
|
 |
dbmaslov Профи
Вступление в Клуб: 11.07.2007
|
Ср Июл 24, 2013 19:19   |
|
Полезность: Нет оценки
|
Очень хочется понять, а что же сделано было... ? Буду благодарен за инфо! |
|
 |
dbmaslov Профи
Вступление в Клуб: 11.07.2007
|
Чт Июл 25, 2013 07:28   |
|
Полезность: Нет оценки
|
А можете еще уточнить из какой точно таблицы выбираете? Это дистрибутивная таблица? |
|
 |
Damir Участник - экстремал
Вступление в Клуб: 29.03.2013
|
Чт Июл 25, 2013 10:46   |
|
Полезность: Нет оценки
|
dbmaslov пишет: | А можете еще уточнить из какой точно таблицы выбираете? Это дистрибутивная таблица? |
нет, не дистрибутивная.
сейчас админ занимается производительностью - теперь это его забота. |
|
 |
|