⚾ Специалист по PostgreSQL выдал базу.
Часть 3. Чек-лист оптимизаци запросов
Что вам нужно знать, чтобы понимать, как оптимизировать запросы:
1️⃣ Как читать статистику распрделения данных в БД. Как я понял имеется в виду представление pg_stats.
2️⃣ Есть планировщик и экзекьютор. Планировщик опирается на ту статистику, которая собрана по таблице в pg_stats. По умолчанию он анализирует 30000 строчек. Можно настроить для каждой таблички свой сэмпл. В MySQL есть аналоги.
3️⃣ pg_stats – важные колонки:
🟠n_distinct – количество уникальных значений в одной колонке. К прмеру для булеана понятно, что это значение будет 2.
🟠correlation – упорядоченность данных
🟠null_frac – количество нуллов
🟠most_common_vals – наиболее часто встречающиеся значения (ну типа если у вас таблица с транзакциями, то в этой графе первым значением будет "выполнено")
🟠most_common_freqs – частота их встреч (ну и тут соответственно будет что-то типа 0.99 это для значения "выполнено")
4️⃣ Для анализа запроса желательно вручную собрать сэмпл на 30000 записей, как это делает планировщик.
🫡Интересный факт: Иногда статистика планировщика может быть собрана по неудачному сэмплу, и это просадит запросы. Событие редкое, встречается раз в год, один раз на сто баз.
#postgresql #андрейсальников
Post #225
441
- 🔥 5
- 👌 2
- ❤ 1