System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术涉及数据库,尤其涉及一种动态分表方法、装置、设备及存储介质。
技术介绍
1、在互联网的需求功能开发中,经常会遇到数据库表数据量太大导致系统处理变慢的情况,如表记录达到3个亿以上后,所有查询写入语句都会变得很慢,直至功能不可用。
2、目前可以直接使用oracle的数据库表分区,同时配合分区索引或全局索引,在对数据库表进行操作时,则会按分区字段直接落到某个分区进行操作,从而达到将数据库大表操作拆小,最终完成语句操作,实现系统功能。然而,由于该数据库表分区的方式通常是使用分区索引设计,并预先设计分区的个数对数据库大表进行分区,从而在数据库表的分区索引未正确设计时,容易导致数据库表操作响应过慢。
3、上述内容仅用于辅助理解本专利技术的技术方案,并不代表承认上述内容是现有技术。
技术实现思路
1、本专利技术的主要目的在于提供了一种动态分表方法、装置、设备及存储介质,旨在解决现有技术中的数据库表分区的方式在数据库表的分区索引未正确设计时,容易导致数据库表操作响应过慢的技术问题。
2、为实现上述目的,本专利技术提供了一种动态分表方法,所述动态分表方法包括:
3、确定待入库信息对应的分表分配方式,并根据所述分表分配方式为所述待入库信息分配目标分表,所述目标分表为数据库表中的分表;
4、通过目标操作语句确定所述目标分表对应的目标分表表名,所述目标操作语句中携带有写入、更新和删除中的至少一种操作;
5、根据所述目标分表表
6、执行更新后的目标操作语句,以对所述数据库表进行分表处理。
7、可选地,所述分表分配方式包括:轮询分配方式;所述根据所述分表分配方式为所述待入库信息分配目标分表的步骤,包括:
8、若所述分表分配方式为所述轮询分配方式,则获取数据库表中的所有可分配分表对应的分表表名,并将所述分表表名存储至预设表名数组;
9、根据表名存储顺序确定所述预设表名数组中的目标分表,并为所述待入库信息分配所述目标分表。
10、可选地,所述分表分配方式还包括:随机分配方式;所述根据所述分表分配方式为所述待入库信息分配目标分表的步骤,包括:
11、若所述分表分配方式为所述随机分配方式,则获取数据库表中的所有可分配分表对应的分表表名,并将所述分表表名存储至预设表名数组;
12、通过随机数生成工具生成目标随机数字;
13、确定所述预设表名数组中所述目标随机数字对应的目标分表,并为所述待入库信息分配所述目标分表。
14、可选地,所述分表分配方式还包括:权重分配方式;所述根据所述分表分配方式为所述待入库信息分配目标分表的步骤,包括:
15、若所述分表分配方式为所述权重分配方式,则获取数据库表中的所有可分配分表对应的分表表名,以及所述分表表名对应的表名权重;
16、基于所述分表表名和所述表名权重构造权重范围信息;
17、基于目标权重值和所述权重范围信息从所述所有可分配分表中确定目标分表,并为所述待入库信息分配所述目标分表,所述目标权重值为随机生成的权重值。
18、可选地,所述确定待入库信息对应的分表分配方式的步骤之前,还包括:
19、将数据库表中所有分表对应的分表信息存储至本地线程栈;
20、所述通过目标操作语句确定所述目标分表对应的目标分表表名的步骤,包括:
21、对目标操作语句进行解析,并在解析过程中通过mybatis插件获取所述本地线程栈中所述目标分表对应的分表字段值;
22、根据所述分表字段值确定所述目标分表对应的目标分表表名。
23、可选地,所述将数据库表中所有分表对应的分表信息存储至本地线程栈的步骤之后,还包括:
24、实时获取各分表对应的分表大小;
25、判断所述分表大小是否大于预设分表大小阈值;
26、若是,则生成分表告警日志。
27、可选地,所述根据所述目标分表表名对所述目标操作语句进行更新的步骤,包括:
28、确定所述目标操作语句对应的表名替换操作,所述表名替换操作包括:表名写入、表名更新和表名删除中的至少一种;
29、根据所述表名替换操作对所述目标操作语句进行更新。
30、此外,为实现上述目的,本专利技术还提出一种动态分表装置,所述装置包括:
31、分表分配模块,用于确定待入库信息对应的分表分配方式,并根据所述分表分配方式为所述待入库信息分配目标分表,所述目标分表为数据库表中的分表;
32、表名确定模块,用于通过目标操作语句确定所述目标分表对应的目标分表表名;
33、语句更新模块,用于根据所述目标分表表名对所述目标操作语句进行更新;
34、分表处理模块,用于执行更新后的目标操作语句,以对所述数据库表进行分表处理。
35、此外,为实现上述目的,本专利技术还提出一种动态分表设备,所述设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的动态分表程序,所述动态分表程序配置为实现如上文所述的动态分表方法的步骤。
36、此外,为实现上述目的,本专利技术还提出一种存储介质,所述存储介质上存储有动态分表程序,所述动态分表程序被处理器执行时实现如上文所述的动态分表方法的步骤。
37、在本专利技术中,公开了确定待入库信息对应的分表分配方式,并根据分表分配方式为待入库信息分配目标分表,目标分表为数据库表中的分表;通过目标操作语句确定目标分表对应的目标分表表名,目标操作语句中携带有写入、更新和删除中的至少一种操作;根据目标分表表名对目标操作语句进行更新;执行更新后的目标操作语句,以对数据库表进行分表处理;相较于现有技术中使用分区索引设计,并预先设计分区的个数对数据库大表进行分区,由于本专利技术根据为待入库信息分配的目标分表对应的目标分表表名对目标操作语句进行更新,以执行更新后的目标操作语句对数据库表进行分表处理,从而解决了现有技术中的数据库表分区的方式在数据库表的分区索引未正确设计时,容易导致数据库表操作响应过慢的技术问题。
本文档来自技高网...【技术保护点】
1.一种动态分表方法,其特征在于,所述动态分表方法包括:
2.如权利要求1所述的动态分表方法,其特征在于,所述分表分配方式包括:轮询分配方式;所述根据所述分表分配方式为所述待入库信息分配目标分表的步骤,包括:
3.如权利要求1所述的动态分表方法,其特征在于,所述分表分配方式还包括:随机分配方式;所述根据所述分表分配方式为所述待入库信息分配目标分表的步骤,包括:
4.如权利要求1所述的动态分表方法,其特征在于,所述分表分配方式还包括:权重分配方式;所述根据所述分表分配方式为所述待入库信息分配目标分表的步骤,包括:
5.如权利要求1~4中任一项所述的动态分表方法,其特征在于,所述确定待入库信息对应的分表分配方式的步骤之前,还包括:
6.如权利要求5所述的动态分表方法,其特征在于,所述将数据库表中所有分表对应的分表信息存储至本地线程栈的步骤之后,还包括:
7.如权利要求1~4中任一项所述的动态分表方法,其特征在于,所述根据所述目标分表表名对所述目标操作语句进行更新的步骤,包括:
8.一种动态分表装置,其
9.一种动态分表设备,其特征在于,所述设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的动态分表程序,所述动态分表程序配置为实现如权利要求1至7中任一项所述的动态分表方法的步骤。
10.一种存储介质,其特征在于,所述存储介质上存储有动态分表程序,所述动态分表程序被处理器执行时实现如权利要求1至7任一项所述的动态分表方法的步骤。
...【技术特征摘要】
1.一种动态分表方法,其特征在于,所述动态分表方法包括:
2.如权利要求1所述的动态分表方法,其特征在于,所述分表分配方式包括:轮询分配方式;所述根据所述分表分配方式为所述待入库信息分配目标分表的步骤,包括:
3.如权利要求1所述的动态分表方法,其特征在于,所述分表分配方式还包括:随机分配方式;所述根据所述分表分配方式为所述待入库信息分配目标分表的步骤,包括:
4.如权利要求1所述的动态分表方法,其特征在于,所述分表分配方式还包括:权重分配方式;所述根据所述分表分配方式为所述待入库信息分配目标分表的步骤,包括:
5.如权利要求1~4中任一项所述的动态分表方法,其特征在于,所述确定待入库信息对应的分表分配方式的步骤之前,还包括:
...
【专利技术属性】
技术研发人员:赖年祥,陈浩洋,黄宇兵,
申请(专利权)人:中邮消费金融有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。