首先是分区建立在继承的基础上,先创建母表,通过约束条件创建子表,再通过创建触发器保证数据能插入到相应的子表中。这一切都是需要我们手动来创建的。
而把这一些手动的过程全封装到函数中,通过函数的调用即可方便创建与维护,并且避免了手工创建引入错误。
下载源代码安装。
进入psql安装pg_partman扩展。
CREATE EXTENSION pg_partman SCHEMA partman;
设置partman为当前的表搜索路径。
先创建一张母表。
我们先来查看创建成功后结果,使用下面的命令。
结果是:
由上可知,总共创建了一个叫part_test_part_trig_func的触发器和九张子表(part_test_p2015_10_11到part_test_p2015_10_18)。
可以用下面的命令来查看触发器part_test_part_trig_func的内容。
partman=# select prosrc from pg_proc where proname='part_test_part_trig_func';
今天的时间是:
Wed Oct 14 21:46:30 HKT 2015
也就是14号之前有四张表,14号之后有四张表。
在上面的例子中。
create_parent的第一个参数接的是母表的名称,第二个接的是要分区的列的名称,第三个表示按照时间来分区,第四表示是按照时间上的每天来分区。这也解释了为什么会出现上面的按时间顺序命名的分区表的情况。
关于pg_partman的更多内容可以查看官方的这篇文档pg_partman.md。
关于pg_partman的更多示例可以查看官方的这篇文档。
另外,ruby也有相关的分区工具,就是用ruby来生成分区的指令。https://github.com/ankane/pgslice
完结。