Расчет памяти Postgresffective_cache_size - PullRequest
0 голосов
/ 27 мая 2019

Я проверяю некоторые настройки в моем производственном экземпляре Postgres. Наш сервер БД имеет 32 ГБ оперативной памяти. Начиная с pg_settings, я вижу, что effective_cache_size установлено на:

postgres=> select name, setting, unit from pg_settings where name like 'effective_cache_size'; 
         name         | setting | unit 
----------------------+---------+------
 effective_cache_size | 7851762 | 8kB
(1 row)

Насколько я понимаю, это значение составляет 7851762 X 8 КБ = 62,8 ГБ. Если мои вычисления верны, мы в основном говорим оптимизатору, что у нас есть 62 ГБ для этого параметра, тогда как у нас только 32 ГБ физической ОЗУ.

Пожалуйста, исправьте меня, если я неправильно вычисляю этот параметр. Я всегда путаюсь с вычислением распределения параметров для блоков с 8 КБ.

1 Ответ

1 голос
/ 27 мая 2019

7851762 умножить на 8 КБ - это приблизительно 60 ГБ.

Я бы настроил параметр на 30 ГБ, если машина выделена для базы данных PostgreSQL.

Этот параметр сообщает PostgreSQL, сколько памяти доступно для кэширования его файлов. Если значение высокое, PostgreSQL будет оценивать соединения с вложенными циклами с более низким сканированием индекса на внутренней стороне, поскольку предполагает, что индекс, вероятно, будет кэшироваться.

...