在PostgreSQL中一个 "缓冲区 "有多大?[英] How large is a "buffer" in PostgreSQL

本文是小编为大家收集整理的关于在PostgreSQL中一个 "缓冲区 "有多大?的处理方法,想解了在PostgreSQL中一个 "缓冲区 "有多大?的问题怎么解决?在PostgreSQL中一个 "缓冲区 "有多大?问题的解决办法?那么可以参考本文帮助大家快速定位并解决问题。

问题描述

我正在使用 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 个缓冲区的字节数是多少?

推荐答案

PostgreSQL 的硬编码块大小为 8192 字节 -- 请参阅 预定义的 block_size 变量.每当您编辑配置以指定 shared_buffers 等时,这曾经是一个需要牢记的数字,但该配置现在支持像 MB 这样的后缀,它将为您进行转换.

通过努力,可以将 block_size 更改为其他值.对于少数应用程序,可能存在更优化的大小,但代码对大小做出假设的位置数量很大.

本文地址:https://www.itbaoku.cn/post/1763859.html