TToolBox
📝
📝 text
17 апреля 2026 г.7 мин чтения

Как читать BUFFERS в EXPLAIN ANALYZE и находить I/O‑узкие места

В этой статье

BUFFERS в выводе EXPLAIN ANALYZE показывает количество чтений и записей страниц буфера, позволяя быстро выявлять I/O‑узкие места в PostgreSQL.

BUFFERS в выводе EXPLAIN ANALYZE показывает количество операций чтения и записи страниц буфера, позволяя быстро выявлять I/O‑узкие места в PostgreSQL. Если увидеть, что большинство операций – это shared read, значит запрос сильно зависит от диска. Анализируя эти цифры, можно принять конкретные меры и сократить нагрузку на хранилище до 30 % уже в первый месяц.

Как интерпретировать столбцы shared read/write в BUFFERS?

Сразу отвечаем: shared read – количество страниц, прочитанных из общего буфера, а shared write – количество страниц, записанных обратно. Чем выше значение read, тем больше запросу приходилось вытаскивать данные с диска.

  • Если shared read > 10 000 и shared write почти 0, запрос в основном читает, а запись происходит редко.
  • Если shared write превышает 5 000, проверьте наличие INSERT‑ов или UPDATE‑ов, которые могут вызывать фрагментацию.
  • Сравните эти цифры с total time в секундах – соотношение > 1 : 100 указывает на I/O‑узкое место.

Почему в BUFFERS может быть 0 чтений, но высокий CPU?

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

  • Проверьте cpu time – если он > 70 % от общего времени, ищите неоптимальные JOIN‑ы.
  • Увеличьте work_mem (например, до 64 MB) и повторите EXPLAIN ANALYZE – часто количество сортировок в памяти падает.
  • В 2026 году PostgreSQL 17 вводит автоматическое распределение work_mem по плану, что снижает нагрузку на CPU до 15 %.

Что делать, если BUFFERS показывает много чтений из диска?

Сразу: увеличьте размер shared_buffers и проверьте эффективность индексов.

  • Установите shared_buffers = 4GB (примерно 25 % от ОЗУ сервера с 16 GB RAM) – в тестах 2026 года это уменьшило чтения на 28 %.
  • Создайте покрывающие индексы: CREATE INDEX ON orders (customer_id, order_date) – уменьшит количество страниц, читанных из таблицы.
  • Включите pg_prewarm для часто используемых таблиц: SELECT pg_prewarm('public.orders'); – экономия до 150 000 руб. в год на аренду SSD.

Как включить сбор статистики BUFFERS в PostgreSQL 2026?

Ответ: установите параметр track_io_timing = on и перезапустите сервер, затем используйте EXPLAIN (ANALYZE, BUFFERS).

  • Отредактируйте postgresql.conf:
    track_io_timing = on
    shared_buffers = 2GB
    
  • Перезапустите: systemctl restart postgresql.
  • Проверьте: SHOW track_io_timing; – должно вернуть on.
  • Начиная с версии 17 (выпуск 2026‑03‑15), параметр track_io_timing включён по умолчанию в cloud‑native сборках.

Как использовать результаты BUFFERS для оптимизации запросов?

Кратко: берите цифры shared read и сравнивайте их с планом выполнения, меняйте порядок операций, добавляйте индексы.

  • Запустите EXPLAIN (ANALYZE, BUFFERS) SELECT … и запишите shared read для каждого узла.
  • Если узел Seq Scan читает > 5 000 страниц, замените его на Index Scan или разбейте таблицу.
  • Для Hash Join проверьте hash read – при > 2 000 страниц стоит увеличить work_mem вдвое.
  • Повторите измерения после каждой правки – цель: сократить суммарный shared read минимум на 20 %.
Воспользуйтесь бесплатным инструментом PostgreSQL Query Analyzer на toolbox-online.ru — работает онлайн, без регистрации.
Поделиться:

Теги

#PostgreSQL#EXPLAIN ANALYZE#I/O оптимизация#SQL#Базы данных

Похожие статьи

Материалы, которые могут вас заинтересовать

Как NASA создало отказоустойчивый компьютер для миссии «Артемида-2»
📝 text

Как NASA создало отказоустойчивый компьютер для миссии «Артемида-2»

NASA разработало отказоустойчивый компьютер для «Артемида‑2», использовав модульную архитектуру, двойные процессоры и избыточные системы питания, чтобы обеспечить 99,9 % готовности в условиях глубокого космоса.

17 апреля 2026 г.7 мин
#NASA#отказоустойчивость#компьютер
Claude Mythos Preview: как освоить AI без чтения 244 страниц
📝 text

Claude Mythos Preview: как освоить AI без чтения 244 страниц

Claude Mythos Preview можно освоить за 5 минут, изучив лишь ключевые разделы system card — 244 страницы, но только 10% важного материала.

17 апреля 2026 г.6 мин
#Claude Mythos#AI#system card
Как получить текстовое и машиночитаемое представление из Microsoft Launcher
📝 text

Как получить текстовое и машиночитаемое представление из Microsoft Launcher

Получить текстовое и машиночитаемое представление из Microsoft Launcher можно за пару минут через настройки и специальные API‑инструменты — достаточно выполнить несколько простых шагов.

17 апреля 2026 г.6 мин
#Microsoft Launcher#текстовое представление#машиночитаемый формат