PostgreSQL分区表实现方法和使用缺点

分区表是采用表继承的方式来实现的,主表中不存放任何的数据。

分区表中插入数据可以依赖触发器、也可以使用pg中的rule(规则)

但使用规则有如下的缺点:

(1)相比于触发器,该规则有显著的开销,而且每次检查是都会有此开销。不过,批量插入时只会有一次开销,所以在批量插入的情况下,去其相对于触发器更有优势。然后在更多的情况下,触发器的方法更好一些。

(2)如果想用copy插入数据,由于copy不会触发“规则”,因此先得把要复制的数据直接copy到分区表(不是主表)。不过,copy是会触发触发器的,所以用触发器的方法就可以正常使用。

(3)如果插入数据是在规则设置之外的,那么会插入到主表中。如果此时希望直接报错,而不是把数据插入到主表中,使用规则是无法实现的。

打开排除约束(constraint_exclusion)是一种查询优化技巧。在pg9.2.4中,参数constraint_exclusion默认就是partition,如果采用默认值,在sql查询中将where语句的过滤条件与表上的check条件进行对比,就可得知不需要扫描的分区,从而跳过相应的分区表,性能也就得到了提高。

(0)
上一篇 2022年3月21日
下一篇 2022年3月21日

相关推荐