Базовый расчет конфигурационных параметров управления памятью для обслуживания СУБД PostgreSQL
Задача
Подготовить базовую формулу расчета для базовой настройки конфигурационных параметров управления памятью для обслуживания СУБД :
shared_buffers
Задаёт объём памяти, который будет использовать сервер баз данных для буферов в разделяемой памяти.
Если вы используете выделенный сервер с объёмом ОЗУ 1 ГБ и более, разумным начальным значением shared_buffers будет 25% от объёма памяти. Существуют варианты нагрузки, при которых эффективны будут и ещё большие значения shared_buffers, но так как Postgres Pro использует и кеш операционной системы, выделять для shared_buffers более 40% ОЗУ вряд ли будет полезно.
maintenance_work_mem
Задаёт максимальный объём памяти для операций обслуживания БД, в частности VACUUM, CREATE INDEX и ALTER TABLE ADD FOREIGN KEY.
autovacuum_work_mem
Задаёт максимальный объём памяти, который будет использовать каждый рабочий процесс автоочистки.
shared_buffers
40% от размера RAM.
maintenance_work_mem
10% от размера RAM
autovacuum_work_mem
1. Настроить параметра autovacuum для больших таблиц (~ более 1M строк)
autovacuum_vacuum_scale_factor = 0
autovacuum_analyze_scale_factor = 0
autovacuum_vacuum_insert_scale_factor = 0
autovacuum_vacuum_threshhold = 100000
autovacuum_analyze_threshhold = 100000
autovacuum_vacuum_insert_threshold = 100000
2. Установить autovacuum_max_workers
autovacuum_max_workers = 10
Тонкая настройка параметров autovacuum/autoanalyze(naptime, cost_delay) - будет рассмотрена позднее.
3. Установить значение autovacuum_work_mem
autovacuum_work_mem = 100000 * 6 * 1.2 ~ 1MB
Базовый расчет памяти для обслуживания СУБД
shared_buffers + maintenance_work_mem + (autovacuum_work_mem * autovacuum_max_workers )
Пример :
RAM = 2GB
autovacuum_max_workers = 4
shared_buffers + maintenance_work_mem + (autovacuum_work_mem * autovacuum_max_workers ) = 1020 MB (~49%RAM).
Postgres DBA
63 поста14 подписчиков
Правила сообщества
Пока действуют стандартные правила Пикабу.