Disk в PostgreSQL

Зачем это знать:

  • PostgreSQL может быть медленным из-за диска, даже если CPU свободен.

  • Disk - частое узкое место для БД.

Связанные темы:

Память, кэш и I/O

WAL, Checkpoint и восстановление

VACUUM, Autovacuum и bloat

Мониторинг и диагностика PostgreSQL


Куда тратится диск

  • heap таблиц,

  • индексы,

  • WAL,

  • temp files,

  • autovacuum,

  • backup/restore.

Частые проблемы

  • много случайных чтений,

  • большие Seq Scan,

  • много записи,

  • checkpoint пишет много грязных страниц,

  • temp files растут из-за сортировок,

  • индексы сильно разрослись.

Пример

SELECT *
FROM orders
WHERE status = 'NEW';

Если таблица большая и индекса нет, запрос может читать много страниц с диска.

Проверка:

EXPLAIN (ANALYZE, BUFFERS)
SELECT *
FROM orders
WHERE status = 'NEW';

Как снижать

  • добавлять индексы осознанно,

  • не делать лишние индексы,

  • следить за WAL/temp files,

  • чистить bloat через autovacuum/VACUUM,

  • выбирать SSD/NVMe для random I/O,

  • разделять данные, WAL и backup если нужно.

Последнее обновление