- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
表格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/
表格orders总共包含 1,500,000 个陀螺。重新启动系统后,我运行了以下查询: SELECT pg_prewarm('orders'); EXPLAIN (ANALYZE, BUFFERS)
我有很多通过 IMPORT FOREIGN SCHEMA 导入的外部表: CREATE USER MAPPING FOR myuser SERVER postgres OPTIONS (
我是一名优秀的程序员,十分优秀!