一种autovacuum的触发控制方法及系统技术方案

技术编号:38392703 阅读:18 留言:0更新日期:2023-08-05 17:45
本发明专利技术涉及一种autovacuum的触发控制方法及系统,方法包括:S1:获取并计算记录有事务号的表,在设定周期内年龄的增长大小;S2:获取并计算数据库中业务表的表大小,获取业务表的活动元组和死元组,结合业务表大小、活动元组和死元组计算autovacuum在清理表的过程中,产生wal的大小;S3:根据plolardb内置记录的表pg_class的表年龄,对pg_class记录的业务表进行分批,结合S1和S2的计算结果,估算在未来设定周期内,需要autovacuum处理的业务表的表大小和autovacuum产生的wal大小;S4:根据S3的结果计算需要调度至低峰期进行人工vaccum的业务表,进行调度。与现有技术相比,本发明专利技术能够避免占用业务高峰的数据库资源。免占用业务高峰的数据库资源。免占用业务高峰的数据库资源。

【技术实现步骤摘要】
一种autovacuum的触发控制方法及系统


[0001]本专利技术涉及数据库处理
,尤其是涉及一种autovacuum的触发控制方法及系统。

技术介绍

[0002]autovacuum是PostgreSQL和PolarDB内置的组件,用以清理死元组、回收事务号以及收集统计信息,autovacuum有触发条件,但很少有约束条件。因此,经常在白天或者业务高峰期触发autovacuum,占用了数据库资源。

技术实现思路

[0003]本专利技术的目的就是为了克服上述现有技术存在的缺陷而提供一种utovacuum的触发控制方法及系统,该专利技术能够避免占用业务高峰的数据库资源。
[0004]本专利技术的目的可以通过以下技术方案来实现:
[0005]根据本专利技术提供的第一个方面,本专利技术提供一种autovacuum的触发控制方法,包括如下步骤:
[0006]S1:获取并计算记录有事务号的表,在设定周期内年龄的增长大小;
[0007]S2:获取并计算数据库中业务表的表大小,获取业务表的活动元组和死元组,结合业务表大小、活动元组和死元组计算autovacuum在清理表的过程中,产生wal的大小;
[0008]S3:根据plolardb内置记录的表pg_class的表年龄,对pg_class记录的业务表进行分批,结合S1和S2的计算结果,估算在未来设定周期内,需要autovacuum处理的业务表的表大小和autovacuum产生的wal大小;
[0009]S4:根据S3的结果计算每个小时需要autovacuum处理的业务表的表大小和autovacuum产生的wal大小,进而计算需要调度至低峰期进行人工vaccum的业务表,进行调度。
[0010]优选地,所述S1具体包括如下步骤:
[0011]S101:基于polardb内置的用以存储每秒数据库年龄的视图,创建第一临时表,第一临时表用以存储时间和记录有事务号的表的表年龄,且第一临时表设有主键和数字类型;
[0012]S102:对第一临时表进行自关联,得到第二临时表,第二临时表用以存储时间段和每个时间段内,记录有事务号的表的表年龄的增长量;
[0013]S103:对第二临时表进行处理,得到设定周期内,记录有事务号的表的表年龄的增长大小。
[0014]优选地,所述S2具体包括如下步骤:
[0015]S201:获取并根据数据库中业务表的数据块数量计算业务表大小size_all;
[0016]S202:根据业务表的活动元组live_tuple和死元组dead_tuple,结合业务表大小size_all估算autovacuum产生wal的大小autovacuum_wal_size。
[0017]优选地,描述autovacuum产生wal的大小autovacuum_wal_size的计算公式为:
[0018]autovacuum_wal_size=(dead_tuple/(dead_tuple+live_tuple))*size_all。
[0019]优选地,所述S3具体包括如下步骤:
[0020]S301:获取并根据plolardb内置记录的表pg_class的表年龄,对pg_class记录的业务表进行分批,对于每批业务表,对各业务表的表大小和autovacuum产生wal的大小进行求和,得到每批业务表的表大小和autovacuum产生wal的大小;
[0021]S302:设置表年龄上限,以当前时间为锚点,结合S1的结果,迭代预估未来设定周期内,需要autovacuum处理的业务表的表大小和autovacuum产生的wal大小。
[0022]优选地,所述S4具体包括如下步骤:
[0023]S401:根据S3得到的未来设定周期内,需要autovacuum处理的业务表的表大小和autovacuum产生的wal大小,生成第一列表list_a,第一列表list_a包括每个小时需要autovacuum处理的业务表的表大小和autovacuum产生的wal大小,具体为每小时的[时间戳,表名1,表大小1,脏数据大小1,表名2,表大小2,脏数据大小2,
……
];
[0024]S402:将第一列表list_a中的表大小和脏数据大小进行平均,使得每个小时的表大小和脏数据大小趋近于平均值,生成第二列表list_b,根据第二列表list_b,将第一列表list_a中高于平均值的表调度至低峰期进行人工vaccum。
[0025]优选地,所述S402中,生成第二列表list_b的具体过程为:
[0026]将第一列表list_a中的表大小和脏数据大小进行平均,得到平均值,将第一列表list_a中所有的表进行分组,分成n组,得到每组的表大小和脏数据大小的和,取出趋近平均值的分组方式,保留为第二列表list_b。
[0027]优选地,在调度过程中,需监控该调度是否产生影响,根据调度产生的影响,对调度进行调整,具体过程为:
[0028]监控数据库会话状态,当调度过程中,用户会话产生的锁超过设定阈值后,即记录锁状态,杀掉该用户会话,记录调度任务失败;
[0029]监控数据库会话状态,当业务用户产生的会话执行的SQL的平均时间高于基线*阈值系数,则记录会话状态,杀掉用户的会话,记录任务失败;
[0030]根据预设定的尝试次数及间隔时间,进行重新调度。
[0031]根据本专利技术提供的第二个方面,本实施例提供一种应用如上任一所述的autovacuum的触发控制方法的autovacuum的触发控制系统,包括:
[0032]表年龄计算模块:用以计算记录有事务号的表,在设定周期内年龄的增长大小;
[0033]脏数据计算模块:用以计算autovacuum在清理表的过程中,产生wal的大小;
[0034]autovacuum信息预估模块:用以接收并根据表年龄计算模块和脏数据计算模块的输出结果,估算在未来设定周期内,需要autovacuum处理的业务表的表大小和autovacuum产生的wal大小;
[0035]人工vaccum业务表计算及调度模块:用以接收并根据autovacuum信息预估模块的输出结果,计算需要调度至低峰期进行人工vaccum的业务表,并进行调度。
[0036]优选地,所述系统还包括用以监控人工vaccum业务表计算及调度模块在调度过程中是否产生影响,根据调度产生的影响,对调度进行调整。
[0037]与现有技术相比,本专利技术具有以如下有益效果:
[0038](1)本专利技术提供的一种autovacuum的触发控制方法,通过计算在未来设定周期内,需要autovacuum处理的业务表的表大小和autovacuum产生的wal大小;进而计算并根据每个小时需要autovacuum处理的业务表的表大小和autovacuum产生的wal大小,确定需要调度至低峰期进行人工vaccum的业本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种autovacuum的触发控制方法,其特征在于,包括如下步骤:S1:获取并计算记录有事务号的表,在设定周期内年龄的增长大小;S2:获取并计算数据库中业务表的表大小,获取业务表的活动元组和死元组,结合业务表大小、活动元组和死元组计算autovacuum在清理表的过程中,产生wal的大小;S3:根据plolardb内置记录的表pg_class的表年龄,对pg_class记录的业务表进行分批,结合S1和S2的计算结果,估算在未来设定周期内,需要autovacuum处理的业务表的表大小和autovacuum产生的wal大小;S4:根据S3的结果计算每个小时需要autovacuum处理的业务表的表大小和autovacuum产生的wal大小,进而计算需要调度至低峰期进行人工vaccum的业务表,进行调度。2.根据权利要求1所述的一种autovacuum的触发控制方法,其特征在于,所述S1具体包括如下步骤:S101:基于polardb内置的用以存储每秒数据库年龄的视图,创建第一临时表,第一临时表用以存储时间和记录有事务号的表的表年龄,且第一临时表设有主键和数字类型;S102:对第一临时表进行自关联,得到第二临时表,第二临时表用以存储时间段和每个时间段内,记录有事务号的表的表年龄的增长量;S103:对第二临时表进行处理,得到设定周期内,记录有事务号的表的表年龄的增长大小。3.根据权利要求1所述的一种autovacuum的触发控制方法,其特征在于,所述S2具体包括如下步骤:S201:获取并根据数据库中业务表的数据块数量计算业务表大小size_all;S202:根据业务表的活动元组live_tuple和死元组dead_tuple,结合业务表大小size_all估算autovacuum产生wal的大小autovacuum_wal_size。4.根据权利要求3所述的一种autovacuum的触发控制方法,其特征在于,描述autovacuum产生wal的大小autovacuum_wal_size的计算公式为:autovacuum_wal_size=(dead_tuple/(dead_tuple+live_tuple))*size_all。5.根据权利要求1所述的一种autovacuum的触发控制方法,其特征在于,所述S3具体包括如下步骤:S301:获取并根据plolardb内置记录的表pg_class的表年龄,对pg_class记录的业务表进行分批,对于每批业务表,对各业务表的表大小和autovacuum产生wal的大小进行求和,得到每批业务表的表大小和autovacuum产生wal的大小;S302:设置表年龄上限,以当前时间为锚点,结合S1的结果,迭代预估未来设定周期内,需要autovacuum处理的业务表的表大小和autovacuum产生的...

【专利技术属性】
技术研发人员:陈天鑫邢迎新钱程曹英健黄秋子施睿王珂
申请(专利权)人:中国人寿保险股份有限公司上海数据中心
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1