Базы Данных (Data Base) | SQL & NoSQL. PostgreSQL, MySQL и Big Data. Уроки для Backend и Data Engineer. Архитектура БД, Оптимизация и Design.
IT и технологии · 16 июня 2026 г.
Мини-гайд по трём ключевым сущностям PostgreSQL: соединения, буфер и WAL
Мини-гайд по трём ключевым сущностям PostgreSQL: соединения, буфер и WAL 1. Соединения (Connections) PostgreSQL по умолчанию позволяет одновременно до 100 соединений (max_connections). 🔹 Проблема: слишком много прямых соединений создают нагрузку на память и CPU. 🔹 Решение: используйте пуллинг через PgBouncer или Pgpool-II. [databases] mydb = host=127.0.0.1 port=5432 dbname=mydb [pgbouncer] listen_addr = 0.0.0.0 listen_port = 6432 pool_mode = transaction max_client_conn = 500 default_pool_size = 20 🔹 Совет: на проде стремитесь держать max_connections < 200 и масштабируйте через пуллер. 2. Буфер (Shared Buffers & Work Mem) PostgreSQL активно использует память для кэширования страниц и сортировок. 🔹 shared_buffers – основной буфер кэша: shared_buffers = 4GB # ≈25% от RAM на выделенном сервере 🔹 work_mem – память на сортировку/слияние одного потока: work_mem = 64MB # для сложных запросов с сортировками и хэш-джоинами maintenance_work_mem = 512MB # для VACUUM/CREATE INDEX 🔹 Best practice: 🔹 Установите shared_buffers ≈ 25% RAM. 🔹 Настройте work_mem исходя из числа параллельных операций, не превышайте общий объём памяти. 3. WAL (Write-Ahead Log) WAL обеспечивает надёжность и репликацию. 🔹 wal_level – детальность логирования: wal_level = replica # для потоковой репликации 🔹 checkpoint_timeout и max_wal_size: checkpoint_timeout = 10min max_wal_size = 1GB 🔹 Архивация WAL для резервных копий: archive_mode = on archive_command = 'cp %p /mnt/backup/wal/%f' 🔹 Рекомендации: 🔹 Увеличьте max_wal_size, если у вас большие всплески нагрузки. 🔹 Настройте сжатие WAL (pg_wal) для экономии места. 💡 Сохрани, чтобы не забыть! #db 👉 @database_info