我正在使用 pg_buffercache
模块来查找耗尽我的 RAM 缓存的 pig 。例如,当我运行此查询时:
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 个缓冲区是多少字节?
最佳答案
PostgreSQL 的硬编码 block 大小为 8192 字节 -- 请参阅 pre-defined block_size variable .每当您编辑配置以指定 shared_buffers
等时,这曾经是一个要记住的数字,但配置现在支持像 MB
这样的后缀,它将为你。
通过努力,可以将 block_size 更改为其他值。对于少数应用程序,可能有更优化的大小,但代码对大小做出假设的地方数量很大。
关于postgresql - PostgreSQL 中的 "buffer"有多大,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2887402/