gpt4 book ai didi

PostgreSQL "pg_prewarm"缓冲区大小

转载 作者:行者123 更新时间:2023-11-29 14:25:08 27 4
gpt4 key购买 nike

表格orders总共包含 1,500,000 个陀螺。重新启动系统后,我运行了以下查询:

SELECT pg_prewarm('orders');
EXPLAIN (ANALYZE, BUFFERS) SELECT * FROM orders WHERE o_totalprice < 100

缓冲区输出如下:

Buffers: shared hit=15768 read=10327

select 语句不返回任何记录。

现在我的问题是,PostgreSQL 是如何计算出它将在缓冲区中占用 15768 个 block 的?

最佳答案

您的 shared_buffers 设置为 128MB,对吧?

128 MB 的共享缓冲区在缓存中转换为 16384 个大小为 8KB 的 block 。

因此,当您运行 pg_prewarm('orders') 时,PostgreSQL 会将完整的表读入共享缓冲区。现在该表比您的 shared_buffers 大,因此当读取最后一个 block 时,第一个 block 再次“退出”缓存,因为 shared_buffers 无法容纳所有 block 。

如果您想将整个表放入缓存,请增加shared_buffers

关于PostgreSQL "pg_prewarm"缓冲区大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58685849/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com