postgresql - PostgreSQL 中的 "buffer"有多大

标签 postgresql performance

我正在使用 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/

相关文章:

performance - 优化 Node.js 入站/出站连接

c# - RavenDB 读取性能

ios - 加速从 SpriteSheet 创建 UIImage

regex - 用字符串中的子查询结果替换数字

database - 如何从 PostgreSQL 中的另一个函数调用表函数?

postgresql - Postgres 和 Clojure JDBC 中的外键和字符限制

sql - SQL JOIN 中的 AND/OR 语句

ruby-on-rails - 升级到 OSX Mavericks 后修复 postgresql

javascript - 如何修复 React Apex Chart 初始安装延迟?

javascript - 在 JavaScript 中仅使用表达式/不使用语句是否会降低性能?