关于分区表
您好,我是本际云服务器推荐网的小编小本本。说到分区,我们首先想到的是表为什么要分区,分区有什么好处?当前版本不能对单表或者单个分区进行并行执行垃圾回收。对于多表或者多个分区,可以并行执行垃圾回收操作。如果单表数据量过大,可能导致垃圾回收不过来,进而导致表迅速膨胀,占用过多的空间从而导致故障。此外,单表的freeze时间过长,可能会导致xid耗尽,此时就只能停库操作降低年龄之后才能正常运行。

大批量的delete操作会产生大量的wal日志,从而导致从库延迟。如果大表分区了,我们可以通过drop历史分区或者truncate历史分区的方式清理历史数据,不用担心大量WAL日志的产生。并且执行时间很快。另外,单表的逻辑备份恢复无法并行执行,数据全量同步时会很慢,并且异常中断后又需要重新开始这个大表的同步。因此,使用分区表可以提高操作效率,减轻系统压力。
关于pg_rewrite插件
pg_rewrite是一个将普通表转换为分区表的插件。该插件需要pg13或更高版本才能安装。安装后,需要修改postgresql.conf参数文件并重启生效。然后使用超级用户创建扩展pg_rewrite。pg_rewrite用法:运行partition_table()函数将普通表的数据复制至分区表,并将普通表的表名修改成自定义表名用于备份。并将分表区的表名修改成与原普通表一致的表名。
使用pg_rewrite插件有一些限制。它不支持外部表分区,非分区表一定要有PK。推荐分区表与非分区表保持一致的约束。pg_rewrite相关的变量有:1.rewrite.check_constraints:检查目标表是否与源表具有相同的约束;2.rewrite.max_xlock_time:限制排他锁的持有时间,避免过多地阻止对表的访问。
以上是有关PostgreSQL在线将普通表转换为分区表插件之pg_rewrite的信息,希望对您有所帮助。
原创文章,作者:小编小本本,如若转载,请注明出处:https://www.benjiyun.com/yunzhujiyunwei/vps-yunwei/6501.html
