0

我对 PostgreSQL 加入有疑问。PostgreSQL 是否为 JOINed 表创建临时表,或者它使所有内容都
没有任何临时表?

我的问题的原因是:当我使用许多 JOIN 发出 SELECT 请求时,我看到写操作中的 IO 峰值。这个问题的原因是什么?

非常感谢。

4

1 回答 1

1

如果结果集足够大,PostgreSQL 将暂时将结果集溢出到磁盘。除非您的数据库小于 RAM,否则它没有太多选择。

但是,如果这是自数据页创建以来您第一次读取数据页,您也可能会看到意外写入。每个页面上都设置了“提示位”以优化可见性检查。这些在清理等或访问页面时设置。如果您在进行表扫描之后执行大型导入,您可能会得到很多意外的 IO,因为所有提示位都被设置并写出。

于 2013-01-09T12:11:47.927 回答