Насколько велик «буфер» в PostgreSQL - PullRequest
4 голосов
/ 22 мая 2010

Я использую модуль pg_buffercache для поиска свиней, которые поглощают мой кэш RAM. Например, когда я запускаю этот запрос:

SELECT c.relname, count(*) AS buffers
FROM pg_buffercache b INNER JOIN pg_class c
    ON b.relfilenode = c.relfilenode AND
       b.reldatabase IN (0, (SELECT oid FROM pg_database WHERE datname = current_database()))
GROUP BY c.relname
ORDER BY 2 DESC
LIMIT 10;

Я обнаружил, что sample_table использует 120 буферов.

Сколько стоит 120 буферов в байтах?

Ответы [ 2 ]

1 голос
/ 22 мая 2010

PostgreSQL имеет жестко закодированный размер блока 8192 байт - см. Предопределенную переменную block_size . Раньше это был номер, который нужно иметь в виду, когда вы редактировали конфигурацию, указав shared_buffers и т. Д., Но теперь конфигурация поддерживает суффиксы, такие как MB, которые будут выполнять преобразование за вас.

Возможно, с тяжелой работой, изменить block_size на другие значения. Для меньшинства приложений может быть более оптимальный размер, но число мест, в которых код делает предположение о размере, велико.

0 голосов
/ 18 ноября 2016

В соответствии с тем, что сказал Эдмунд, мы можем сделать этот выбор в нашей базе данных схем:

SELECT c.relname,
   Pg_size_pretty(Count(*) * 8192)
   AS buffered,
   Round(100.0 * Count(*) / (SELECT setting
                             FROM   pg_settings
                             WHERE  name = 'shared_buffers') :: INTEGER, 1)
   AS
   buffers_percent,
   Round(100.0 * Count(*) * 8192 / Pg_relation_size(c.oid), 1)
   AS
   percent_of_relation
FROM   pg_class c
       INNER JOIN pg_buffercache b
               ON b.relfilenode = c.relfilenode
       INNER JOIN pg_database d
               ON ( b.reldatabase = d.oid
                    AND d.datname = Current_database() )
WHERE  Pg_relation_size(c.oid) > 0
GROUP  BY c.oid,
          c.relname
ORDER  BY 3 DESC
LIMIT  10;   
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...