CftClub.ru
Клуб специалистов ЦФТ-Банк

500 мильёнов записей в таблице - нормально?

 
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Oracle DBA
Предыдущая тема :: Следующая тема  
Автор Сообщение
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
Эксперт
Резидент CftClub


Вступление в Клуб: 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    Ответить с цитатой
Полезность: Нет оценки
Serj пишет:
....

Всем спасибо. На сервере что-то починилось само-собой.
Вроде как, админ в отпуске был Laughing
Сейчас за 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 пишет:
А можете еще уточнить из какой точно таблицы выбираете? Это дистрибутивная таблица?

нет, не дистрибутивная.
сейчас админ занимается производительностью - теперь это его забота.
Показать сообщения:   
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Oracle DBA Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Рейтинг@Mail.ru