Следующий параметр PostgreSQL для изучения – это work_mem.
Конфигурационные параметры PostgreSQL лежат в каталоге с данными (PGDATA) в файле postgresql.conf.
- Параметр: work_mem
- Раздел: Использование ресурсов / Память
- Изменение: user, пользователи могут менять значение для своего сеанса (командой SET)
- Принимаемое значение: integer
- Минимальное значение: 4096 кБ
- Максимальное значение: 2097151 кБ (почти 2 ГБ)
- Значение по умолчанию: 4096 кБ
- Особенность: Пользователи могут устанавливать данное значение прямо в сеансе с помощью команды:
- SET work_mem=’1MB’.
И можно установить значение для текущей транзакции:
- SET LOCAL work_mem = ‘4MB’;
- Размер work_mem автоматически не выделяется.
- Описание: В параметре work_mem задается объем памяти, который будет использоваться для сложных запросов.
Сложные запросы – это запросы, в которых используются сортировки (ORDER BY), выборка уникальных значений (DISTINCT) и соединения. На такие операции сначала тратится память из work_mem, если ее не хватает – создаются временные файлы на диске, что замедляет выполнение запроса. work_mem выделяется сверх shared_buffers, а не в нем.
work_mem выделяется под каждый сложный запрос. Например, если будет десять запросов с сортировкой, то под каждый из них будет выделен свой work_mem. Не знаю, сколько максимально будет выделено под это дело. Возможно, ограничивается доступной оперативной памятью. Я проводил эксперименты – у меня пользователя PostgreSQL отключал, если слишком много памяти забирал.
- Как посмотреть
- Команда SHOW work_mem:
-
- Запросом: select * from pg_settings s where name = ‘work_mem’:
Leave a Reply