D-R*_*ock 9 postgresql cache explain
我EXPLAIN (ANALYZE, BUFFERS) SELECT ...在我的 Postgres 9.3 服务器上运行。我最终Buffers: shared hit=166416 dirtied=2在输出中看到了类似的东西。
从文档中,“脏”表示:
脏的块数表示此查询更改的先前未修改的块数;而写入的块数表示该后端在查询处理期间从缓存中逐出的先前脏块的数量。
这听起来像是将块标记为脏的过程应该只在更新数据时发生。SELECT但是,我的查询是,并且只读取数据。我想它只会报告点击或阅读。我显然错了。但是,在这种情况下到底发生了什么?
小智 11
这有一个简单的原因。
在 PostgreSQL 中,一行必须经过可见性检查。在第一次读取时,系统会检查是否每个人都可以看到一行。如果是,它将被“冻结”。这就是写的来源。同样,VACUUM也设置位。
有详细解释:http : //www.cybertec.at/speeding-up-things-with-hint-bits/。
| 归档时间: |
|
| 查看次数: |
2133 次 |
| 最近记录: |