【技术实现步骤摘要】
数据表切换方法、装置、设备及存储介质
本专利技术涉及人工智能领域,尤其涉及一种数据表切换方法、装置、设备及存储介质。
技术介绍
数据表是数据库中储存数据的组成单元。随着时间推移,数据表中的数据越来越多,甚至达到百万级乃至千万级数据量。当数据表的数据过于庞大时,在数据表中进行数据查询和修改需要耗费大量的时间,因此常常采用分区和分表的方式来对数据表进行减负。传统的分区或分表方式主要先建立一张目标数据表的同构表,然后通过脚本或定时任务将目标数据表中的数据增加到同构表中,再对目标数据表和同构表进行重命名,将同构表改名为目标数据表的名字,从而对两个表进行切换,最后再将切换过程中目标数据表中未同步的增量数据同步到同构表中。但是在采用传统的数据表切换方法时,由于同步和切换之间存在时差,因此切换后的同构表中会存在数据遗漏,从而导致两个数据表之间存在数据不一致的现象。此外,当切换失败时,会进行回滚后再次执行切换,同构表在切换过程中的增量数据会同步至目标数据表中,目标数据表增加了本不应增加的数据,从而导致数据异常。专利技 ...
【技术保护点】
1.一种数据表切换方法,应用于单数据源热切换,其特征在于,所述数据表切换方法包括:/n接收用户发起的数据表重建请求,并确定所述数据表重建请求对应的第一数据表;/n根据所述第一数据表的表格格式,生成第二数据表,其中,所述第二数据表包含预置分区写入规则或分表写入规则;/n当获取待执行的第一SQL语句时,判断所述第二数据表是否包含所述第一数据表中的数据,其中,所述第一SQL语句的目标数据表为所述第一数据表;/n若所述第二数据表包含所述第一数据表中的数据,则根据所述第一SQL语句,生成目标数据表为所述第二数据表的第二SQL语句并执行,以对所述第一数据表和所述第二数据表进行切换;/n ...
【技术特征摘要】
1.一种数据表切换方法,应用于单数据源热切换,其特征在于,所述数据表切换方法包括:
接收用户发起的数据表重建请求,并确定所述数据表重建请求对应的第一数据表;
根据所述第一数据表的表格格式,生成第二数据表,其中,所述第二数据表包含预置分区写入规则或分表写入规则;
当获取待执行的第一SQL语句时,判断所述第二数据表是否包含所述第一数据表中的数据,其中,所述第一SQL语句的目标数据表为所述第一数据表;
若所述第二数据表包含所述第一数据表中的数据,则根据所述第一SQL语句,生成目标数据表为所述第二数据表的第二SQL语句并执行,以对所述第一数据表和所述第二数据表进行切换;
若所述第二数据表不包含所述第一数据表中的数据,则根据所述第一SQL语句,对所述第一数据表和第二数据表进行数据双写。
2.根据权利要求1所述的数据表切换方法,其特征在于,所述若所述第二数据表不包含所述第一数据表中的数据,则根据所述第一SQL语句,对所述第一数据表和第二数据表进行数据双写包括:
若所述第二数据表不包含所述第一数据表中的数据,则根据预置语句类型库,确定所述第一SQL语句对应的语句类型,其中所述语句类型包括查询类型和数据表修改类型;
若所述第一SQL语句对应的语句类型为查询类型,则执行所述第一SQL语句;
若所述第一SQL语句对应的语句类型为数据表修改类型,则根据所述第一SQL语句,生成目标数据表为所述第二数据表的第三SQL语句,并执行所述第一SQL语句和所述第三SQL语句,以对所述第一数据表和所述第二数据表进行数据双写。
3.根据权利要求2所述的数据表切换方法,其特征在于,在所述若所述第一SQL语句对应的语句类型为数据表修改类型,则根据所述第一SQL语句,生成目标数据表为所述第二数据表的第三SQL语句,并执行所述第一SQL语句和所述第三SQL语句,以对所述第一数据表和所述第二数据表进行数据双写之后,还包括:
记录所述第一SQL语句对应的第一影响记录数和所述第三SQL语句对应的第二影响记录数;
判断所述第一影响记录数和所述第二影响记录数是否相等;
若所述第一影响记录数与所述第二影响记录数不相等,则执行预置回滚语句,以将所述第二数据表回滚至执行所述第三SQL语句前的状态;
根据预置校正规则,对所述第二数据表中的数据进行校正。
4.根据权利要求3所述的数据表切换方法,其特征在于,所述数据表修改类型包括数据增减类型和数据修改类型,所述根据预置校正规则,对所述第二数据表中的数据进行校正包括:
若所述第一SQL语句对应的语句类型为数据增减类型,则执行所述第三SQL语句,并记录重新执行次数,直至达到预置停止执行条件时并停止执行所述第三SQL语句;
若所述重新执行次数等于预置重试阈值,则记录所述第三SQL语句的语句类型和语句参数;
其中,所述停止执行条件包括所述重新执行次数等于所述重试阈值或所述第二影响记录数与所述第一影响记录数相等。
5.根据权利要求3或4所述的数据表切换方法,...
【专利技术属性】
技术研发人员:魏飞,
申请(专利权)人:中国平安财产保险股份有限公司,
类型:发明
国别省市:广东;44
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。