Почему сбор статистики в базах данных называется ресурсоемкой деятельностью? - PullRequest
0 голосов
/ 19 декабря 2018

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

Таблицы, для которых требуется сбор статистики, запрашиваются в течение дня.План объяснения показывает «высокую достоверность», если мы собираем статистику по нескольким столбцам.

Поэтому я просто хочу понять, почему сбор статистики называется ресурсоемким действием?Если мы не собираем статистику по таблицам, которые загружаются в течение дня, разве мы не обременяем систему, выполняя SQL, для которых планы объяснения говорят: «Сбор статистики»?

Спасибо!

Ответы [ 2 ]

0 голосов
/ 19 декабря 2018

Сбор статистики - это обслуживание, которое требует баланса в рабочей среде Teradata.Teradata продолжает добиваться успехов в повышении эффективности ведения статистики с каждым выпуском базы данных.Если я правильно помню, одно из последних улучшений состоит в том, чтобы выявлять неиспользуемую статистику или объекты и обходить обновление статистики во время сбора статистики.Но это ресурсоемкая операция для больших таблиц с несколькими наборами статистики.

Частота, с которой вы собираете статистику, будет зависеть от размера таблицы, способа загрузки таблицы и количества статистических данных, существующих в этой таблице.Таблицы, которые «очищаются и заполняются», требуют более частого сбора статистики, чем таблицы, в которые данные добавляются или обновляются на месте.Первый должен иметь статистику, собранную после загрузки.Последнее будет варьироваться в зависимости от объема данных, который изменяется в зависимости от времени с момента последнего сбора статистики.Устаревшая статистика может ввести в заблуждение оптимизатор или заставить оптимизатор отказаться от них в пользу случайной выборки.

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

Нередко мероприятия по обслуживанию статистики планируются в нерабочее время или в выходные дни.Для больших платформ сбор статистики по всей системе может измеряться часами.Как администратор базы данных, я не хотел бы обновлять статистику для большой производственной таблицы в середине дня, если не было запроса, который вызывал катастрофические проблемы (например, горячий AMPing).Даже тогда можно было бы предотвратить выполнение этого запроса, пока статистика не будет собрана в нерабочее время.

Если в вашей среде определены SLA и вы полагаете, что сбор статистики улучшит вашу способность выполнять ваши SLA, тогда необходимо обсудить с DBA лучшее понимание.Исходя из того, что вы описали, ответ DBA неудивителен, потому что они пытаются гарантировать, что пользователи получают ресурсы в течение дня.

Наконец, если у вас есть таблицы, которые загружаются в течение дня, сбор ИТОГОВОЙ статистики имеет низкие накладные расходы и должен быть частью вашей процедуры ETL.Ранее, сбор статистики PARTITION также был желателен, независимо от того, была ли таблица фактически разделена, но я не помню, потерял ли она популярность в последних выпусках (16.xx) Teradata.Статистика PARTITION также была довольно низкой.

Надеюсь, это поможет.

0 голосов
/ 19 декабря 2018

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

Но да, сбор статистики немного более интенсивен, чем поиск наличия значения ключа вТаблица.Так что да, в загруженных системах не самая мудрая идея - добавить коллекцию статистики в комбинацию нагрузки.

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

РЕДАКТИРОВАТЬ

О, да, чтобы ответить на фактический вопрос, который вы задали: «Почему сбор статистики в базах данных называется потреблением ресурсов?деятельность?": потому что он потребляет ресурсы и серьезно выше среднего по сравнению с «обычными» транзакциями базы данных.

...