PostgreSQL分区表实现方法和使用缺点
程序员文章站
2022-03-02 22:45:32
分区表是采用表继承的方式来实现的,主表中不存放任何的数据。
分区表中插入数据可以依赖触发器、也可以使用pg中的rule(规则)
但使用规则有如下的缺点:
(1)相比于触发器,该规则有显著的开销,而且...
分区表是采用表继承的方式来实现的,主表中不存放任何的数据。
分区表中插入数据可以依赖触发器、也可以使用pg中的rule(规则)
但使用规则有如下的缺点:
(1)相比于触发器,该规则有显著的开销,而且每次检查是都会有此开销。不过,批量插入时只会有一次开销,所以在批量插入的情况下,去其相对于触发器更有优势。然后在更多的情况下,触发器的方法更好一些。
(2)如果想用copy插入数据,由于copy不会触发“规则”,因此先得把要复制的数据直接copy到分区表(不是主表)。不过,copy是会触发触发器的,所以用触发器的方法就可以正常使用。
(3)如果插入数据是在规则设置之外的,那么会插入到主表中。如果此时希望直接报错,而不是把数据插入到主表中,使用规则是无法实现的。
打开排除约束(constraint_exclusion)是一种查询优化技巧。在pg9.2.4中,参数constraint_exclusion默认就是partition,如果采用默认值,在sql查询中将where语句的过滤条件与表上的check条件进行对比,就可得知不需要扫描的分区,从而跳过相应的分区表,性能也就得到了提高。
推荐阅读
-
详解java中的深拷贝和浅拷贝(clone()方法的重写、使用序列化实现真正的深拷贝)
-
使用Spring Boot和AspectJ实现方法跟踪基础结构
-
使用jQuery实现input数值增量和减量的方法教程
-
vue中使用cookies和crypto-js实现记住密码和加密的方法
-
JavaScript使用原型和原型链实现对象继承的方法详解
-
使用phpstorm和xdebug实现远程调试的方法
-
实例讲解使用CSS实现多边框和透明边框的方法
-
使用react-router4.0实现重定向和404功能的方法
-
使用mock.js随机数据和使用express输出json接口的实现方法
-
使用JS简单实现apply、call和bind方法的实例代码