Dmitriy Kononov.
Обсудим задачуСвязаться

Новости и разборы

Тяжёлый запрос: оценка плана и большие значения в базе

pg_plan_filter ограничивает запрос по оценке, PlanetScale разбирает TOAST. Что проверять до запуска отчёта и измерять после.

Отчёт выбирает несколько тысяч строк, но каждая содержит большой текст или JSON. Число записей выглядит небольшим, а чтение всё равно задерживает работу. Две октябрьские публикации помогают отделить предварительную оценку запроса от фактического поведения данных при выполнении.

Ограничитель использует оценку планировщика

В сообществе PostgreSQL 7 октября опубликован релиз pg_plan_filter 1.0.0. Модуль проверяет оценочную стоимость плана до исполнения, поддерживает предел отдельного statement и транзакции и может применяться только к SELECT. Указана поддержка PostgreSQL 14–18.

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

Проектное решение должно объяснять отказ сотруднику. Если отчёт не запущен из-за ограничения, команда должна видеть причину и допустимый следующий шаг. Бесконечный повтор того же запроса не является восстановлением процесса.

Большое значение имеет собственный путь хранения

PlanetScale 12 октября разобрал TOAST в Postgres: большие значения переменной длины могут сжиматься или храниться вне основной строки. Конкретное поведение зависит от данных и конфигурации; приведённый числовой пример не устанавливает одинаковый порог для каждой записи.

Публикация также различает конфигурации версий. Нельзя автоматически переносить возможности обсуждаемой PostgreSQL 19 beta на модуль с заявленной поддержкой 14–18. Перед выбором нужно сверить реальную версию и настройки вашего окружения.

Путь запроса проходит через регулируемый ограничитель к хранилищу, где линза выделяет крупные значения среди тонких записей.
Концептуальная AI-иллюстрация плана запроса и хранения больших значений.

Объединить проверку плана и результата

Содержательная связь двух источников такова: оценка перед исполнением и стоимость чтения больших значений описывают разные части одной задачи. Фильтр плана не заменяет измерения, а удобное хранение текста не делает отчёт лёгким по умолчанию.

Возьмите характерный запрос и обезличенный набор с разными размерами полей. Сравните чтение только нужных столбцов и полного содержимого. Зафиксируйте план, фактическую длительность, объём результата и правильность вывода. Не меняйте рабочую схему на основании одного синтетического примера.

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

Переход от таблиц к системе помогает определить данные отчёта. Историческая аналитика рассылок даёт контекст интеграции без обещания современного ускорения. Для вашей обработки данных обсудите запрос, большие поля и критерии результата.

Источники