我对PostgreSQL加入有疑问。 PostgreSQL是否为JOINed表创建临时表,或者它使所有内容都成为了 没有任何临时表?
我的问题的原因是: 当我用许多JOIN创建SELECT请求时,我看到写入操作中的IO峰值。 这个问题可能是什么原因?
非常感谢。
答案 0 :(得分:1)
如果结果集足够大,PostgreSQL会暂时将结果集溢出到磁盘。除非你的数据库小于你的RAM,否则没有多少选择。
但是,如果这是您自创建数据页以来第一次读取数据页,您还可以看到意外写入。每页上都设置了“提示位”以优化可见性检查。在抽真空等或访问页面时,这些设置。如果您执行大型导入,然后执行表扫描,则可以获得大量意外IO,因为所有提示位都已设置并写出。