Команда Postgres Analyze заняла 1 час 30 минут для одной таблицы на RDS среднего размера

#postgresql #postgresql-performance

#postgresql #postgresql-производительность

Вопрос:

Проблема: Postgres одной таблице потребовалось 1 час 30 минут только для анализа статистики по умолчанию, равной 100.

  1. Почему?
  2. Как мы можем предсказать это время в будущем?
  3. Есть ли какой-нибудь способ ускорить ее для таких таблиц

Текущая настройка: версия Postgres: 12.4 Свежий экземпляр, восстановленный из моментального снимка на AWS, а затем обновленный до 12.4 VCPU: 4 ОПЕРАТИВНАЯ память: 16 ГБ IOPS: 3000 Размер отношения: 23 ГБ Общий размер отношения: 139 ГБ Размер таблицы: 83 ГБ Количество повторений: 1.21582e 07

Это из-за большого размера тоста?

Ответ №1:

Нет, это ненормально.

Если ваша система не очень, очень медленная, проблема, вероятно ACCESS EXCLUSIVE , заключалась в блокировке, которую кто-то взял на стол и никогда не снимал.

Комментарии:

1. Не было исключительных событий блокировки / взаимоблокировки / блокировки и блокировки. Может ли это быть не из-за размера тоста …. размер таблицы 83, а отношение sze 23 ГБ, так что есть 50 ГБ тоста … это означает, что для 60% записей он должен перейти в таблицу тоста, а затем пометить свободным в местоположении мертвых кортежей для кортежей произвольной длины?

2. Нет, это также не может быть размером TOAST. Вам нужно будет посмотреть pg_stat_activity , пока ANALYZE выполняется. Невозможно диагностировать с помощью этой небольшой информации.