PostgreSQL分区表实现方法和使用缺点
程序员文章站
2022-06-23 15:47:12
分区表是采用表继承的方式来实现的,主表中不存放任何的数据。
分区表中插入数据可以依赖触发器、也可以使用pg中的rule(规则)
但使用规则有如下的缺点:
(1)相比于触发器,该规则有显著的开销,而且...
分区表是采用表继承的方式来实现的,主表中不存放任何的数据。
分区表中插入数据可以依赖触发器、也可以使用pg中的rule(规则)
但使用规则有如下的缺点:
(1)相比于触发器,该规则有显著的开销,而且每次检查是都会有此开销。不过,批量插入时只会有一次开销,所以在批量插入的情况下,去其相对于触发器更有优势。然后在更多的情况下,触发器的方法更好一些。
(2)如果想用copy插入数据,由于copy不会触发“规则”,因此先得把要复制的数据直接copy到分区表(不是主表)。不过,copy是会触发触发器的,所以用触发器的方法就可以正常使用。
(3)如果插入数据是在规则设置之外的,那么会插入到主表中。如果此时希望直接报错,而不是把数据插入到主表中,使用规则是无法实现的。
打开排除约束(constraint_exclusion)是一种查询优化技巧。在pg9.2.4中,参数constraint_exclusion默认就是partition,如果采用默认值,在sql查询中将where语句的过滤条件与表上的check条件进行对比,就可得知不需要扫描的分区,从而跳过相应的分区表,性能也就得到了提高。
下一篇: 白城11月好玩的地方大全
推荐阅读
-
Python单元测试_使用装饰器实现测试跳过和预期故障的方法
-
Data URI scheme详解和使用实例及图片base64编码实现方法
-
ES6使用export和import实现模块化的方法
-
C#使用Socket实现发送和接收图片的方法
-
纯css3使用vw和vh实现自适应的方法
-
Android编程使用LinearLayout和PullRefreshView实现上下翻页功能的方法
-
使用phonegap克隆和删除联系人的实现方法
-
使用ES6实现MVVM双向绑定的方法和步骤
-
ES6使用export和import实现模块化的方法
-
Data URI scheme详解和使用实例及图片base64编码实现方法