我在Postgres中查找查询优化。
我不明白这句话: 索引扫描涉及随机磁盘访问,仍然必须读取底层数据块以进行可见性检查。
“能见度检查”在这里意味着什么?
答案 0 :(得分:0)
PostgreSQL使用一种称为多版本并发控制的技术来管理对数据的并发访问。在插入它的事务提交之前,数据不可见。在其他情况下,数据会被静默忽略,因为它们看不到它(除非在极少数情况下,显式锁定或更高的隔离级别)。
这意味着PostgreSQL必须检查实际行的事务ID,以确保它们对所有事务都可见。现在,9.2(iirc)和更高版本允许PostgreSQL跳过此检查,如果页面中的所有元组都可见。但是否则必须每行检查一次。