在postgresql中,分区是通过继承的方式来实现的,每个分区实际上都是一个独立的表。数据更新可通过trigger或者规则rule来实现。
对数据表进行分区的一个简单原则就是,当表的大小超过了数据库服务器的物理内存大小时使用分区。
需要注意的几个点:
1、分区表并不能完全的继承父表的所有属性,比如唯一约束、主键、外键。而检查约束与非空约束是可以继承的。
2、修改父表的结构,子表结构同时被修改。
3、reindex、vacuum命令不会影响到子表。
4、不要在父表上定义检查约束,除非你想约束所有分区。
5、不要在父表上创建索引和或唯一约束,因为没有任何意义。应该在每个分区上分别创建。
分区的一些好处:
1、便于管理,如按月分区,若想删除历史数据,可以直接删除对应分区。避免delete大量数据时导致vacuum超载。
2、可以提升某些查询的性能。比如查询的数据正好在某一个或少数几个分区中时,使用率