# default
data_directory = '/var/lib/postgresql/13/main'
hba_file = '/etc/postgresql/13/main/pg_hba.conf'
ident_file = '/etc/postgresql/13/main/pg_ident.conf'
external_pid_file = '/var/run/postgresql/13-main.pid'
port = 5432
max_connections = 100
unix_socket_directories = '/var/run/postgresql'
ssl = on
ssl_cert_file = '/etc/ssl/certs/ssl-cert-snakeoil.pem'
ssl_key_file = '/etc/ssl/private/ssl-cert-snakeoil.key'
shared_buffers = 128MB
dynamic_shared_memory_type = posix
max_wal_size = 1GB
min_wal_size = 80MB
log_line_prefix = '%m [%p] %q%u@%d '
log_timezone = 'Europe/Moscow'
cluster_name = '13/main'
stats_temp_directory = '/var/run/postgresql/13-main.pg_stat_tmp'
datestyle = 'iso, mdy'
timezone = 'Europe/Moscow'
lc_messages = 'C.UTF-8'
lc_monetary = 'C.UTF-8'
lc_numeric = 'C.UTF-8'
lc_time = 'C.UTF-8'
default_text_search_config = 'pg_catalog.english'
include_dir = 'conf.d'

# carbon

shared_buffers = 64MB
temp_buffers = 8MB
work_mem = 8MB

# https://bcrm.carbonsoft.ru/project/Document/DOC-000190#optimizacziya-pamyati-postgresql
# другие косты считаются от seq_page, этому его ставим в 1 _для простоты рассчётов_
seq_page_cost = 1.0

# не сильно завышен, но всё ещё даёт двойной прирост по сравнению с mysql
random_page_cost = 10.1

# типа общий объём файлового кэша всех слоёв: VM, хоста, рейда - чисто коэффициент для рассчёта костов
# если большой — считает что индексы юзать удобно, делаем его большим, считая что вся наша БД входит в память
effective_cache_size = 4GB

# нужно увеличивать при больших объёмах в бд, жирных update etc, у нас нет т.к. db per client
maintenance_work_mem = 1MB

# хитрая фигня для запросов выхлопа во внешние системы в виде json'а, мы это не делаем (в теории перестраховка)
# мб backup restore его юзает
logical_decoding_work_mem = 1MB

# если стоит другое - всё начинает тормозить в два раза сильнее
shared_memory_type = mmap

# asyncio для основных потоков (1000 норм для SSD, а больше _вроде_ нельзя)
effective_io_concurrency = 1000

# asyncio для служебных потоков
maintenance_io_concurrency = 100

# нет параллельной обработки _одного_ запроса
max_worker_processes = 1

# TODO: удалить при выпуске боксовой версии
listen_addresses = '0.0.0.0'
