创建临时表是否会导致pg_class表碎片化

时间:2016-08-11 15:16:35

标签: performance postgresql

MS-SQL开发人员在Postgres商店工作(PG 8.4和PG 9.4)

另一个开发人员提到在Postgres SQL中不使用临时表的原因是它会导致Postgres系统表(特别是pg_class)中的碎片导致性能下降。这是真的吗?

干杯

1 个答案:

答案 0 :(得分:2)

碎片在应用于数据库表时是一个相当无意义的术语,因为它们总是由固定大小的块组成(PostgreSQL中为8 KB)。

真实情况是,使用临时表将在系统目录表和pg_class之类的索引中创建条目,当临时表消失时,这些条目将被删除。如果您执行很多,那么同样的事情可能会发生与任何其他大量更新的表一样:autovacuum可能无法跟上,并且您的系统目录表及其索引可能会变得臃肿

现在有a proposal on pgsql-hackers发明了一种新类型的临时表,可避免此类问题。

但是,除非你一直使用很多临时表,否则无需担心。只需在需要时使用它们!