#postgresql #postgresql-performance
#postgresql #postgresql-производительность
Вопрос:
Проблема: Postgres одной таблице потребовалось 1 час 30 минут только для анализа статистики по умолчанию, равной 100.
- Почему?
- Как мы можем предсказать это время в будущем?
- Есть ли какой-нибудь способ ускорить ее для таких таблиц
Текущая настройка: версия 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
выполняется. Невозможно диагностировать с помощью этой небольшой информации.