System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 数据库的优化方法、装置、计算机设备及存储介质制造方法及图纸_技高网

数据库的优化方法、装置、计算机设备及存储介质制造方法及图纸

技术编号:40520484 阅读:13 留言:0更新日期:2024-03-01 13:38
本发明专利技术实施例涉及一种数据库的优化方法、装置、计算机设备及存储介质,所述方法包括:当检测到所述数据库中每个分片的目标队列中存在第一事务时,对所述第一事务进行合并处理,所述第一事务的全局提交序为零;当全部所述第一事务处理完成后,从每个所述分片的目标堆中获取第二事务进行合并处理,所述第二事务的全局提交序为非零;将预设数量个进行合并处理后的事务存储至目标位置,并进行落盘操作。由此,可以实现提高事务合并的速度,合并性能方面取得了显著的提升,减少了落盘次数以及磁盘IO交互次数,通过优化落盘次数的方式提升CDC性能。

【技术实现步骤摘要】

本专利技术实施例涉及数据库,尤其涉及一种数据库的优化方法、装置、计算机设备及存储介质


技术介绍

1、在分布式数据库日益发展的当下,市场对分布式数据库的需求逐步增加,但验证分布式数据库正确性的手段比较匮乏。在部署分布式数据库的同时,用户倾向于回流多分片的数据变动,在单机数据库上进行验证最终的数据一致性。现有回流有两种办法实现:一种是将各个分片的逻辑日志导入到一个单机数据库中;另一种测试用数据变动捕获节点(cdc,change data capture)功能来实现分布式数据库的回流。前者毫无疑问,最简单,但问题也很多。不仅仅多个分片,一个个往单机数据库里导入并回放很花时间,而且还无法解决多分片事务一致的问题,即一个事务无法保证在多分片是同时执行完的,无法按照事务acid的概念来保障单机事务的正确性,更何况还有多分片复制表、ddl等问题无法解决。后者则是利用分布式数据库的cdc功能来生成一份单机数据库可消费的逻辑日志,这种不仅可以解决多分片复制表、ddl等问题,事务也是完全按照原子性来的,甚至已提交事务回滚也完全兼容。

2、现有的通过cdc功能可能出现回滚失败的场景,进而导致队列里面事务数量越来越多,会发现每次获取找一个事务需要花费很长时间。且每处理一个事务都会把这个事务写到逻辑日志里面进行落盘,在n分片环境下,除了合并出来的那个事务外,还有n-1个空事务,也就是说需要落盘n次,也就是说每个事务需要n次磁盘io,落盘次数以及与磁盘io交互次数过高,开销太大。因此,如何优化数据库cdc的结构和性能成为现在亟待解决的问题。</p>

技术实现思路

1、鉴于此,为解决上述技术问题或部分技术问题,本专利技术实施例提供一种数据库的优化方法、装置、计算机设备及存储介质。

2、第一方面,本专利技术实施例提供一种数据库的优化方法,包括:

3、当检测到所述数据库中每个分片的目标队列中存在第一事务时,对所述第一事务进行合并处理,所述第一事务的全局提交序为零;

4、当全部所述第一事务处理完成后,从每个所述分片的目标堆中获取第二事务进行合并处理,所述第二事务的全局提交序为非零;

5、将预设数量个进行合并处理后的事务存储至目标位置,并进行落盘操作。

6、在一个可能的实施方式中,所述第一事务通过以下方式存储至所述目标队列:

7、将第一线程中用于存放事务的容器确定为一个类,所述第一线程用于消费逻辑日志中的事务;

8、通过所述第一线程将全局提交序为零的第一事务存储至所述类中的目标队列的队尾;

9、所述第二事务通过以下方式存储至所述目标堆中:

10、通过所述第一线程将全局提交序为非零的第二事务存储至所述目标堆中。

11、在一个可能的实施方式中,所述对所述第一事务进行合并处理,包括:

12、通过第二线程从所述目标队列获取全局提交序最小的第一事务,以通过所述第二线程对所述第一事务进行合并处理后,将所述目标队列中的第一事务删除。

13、在一个可能的实施方式中,所述从每个所述分片的目标堆中获取第二事务进行合并处理,包括:

14、当检测到每个所述目标队列中不存在第一事务时,从每个所述分片的目标堆的堆顶获取全局提交序最小的第二事务,以通过所述第二线程对所述第二事务进行合并处理后,将所述目标堆中的第二事务删除。

15、在一个可能的实施方式中,所述通过所述第二线程对所述第二事务进行合并处理,包括:

16、通过所述第二线程将全局提交序相同的第二事务合并为一个目标事务;

17、将所述数据库中分片号最小的目标分片对应的事务的事务序作为合并后的事务对应的事务序,将所述数据库中其他分片上的事务的事务序用空事务代替。

18、在一个可能的实施方式中,所述将预设数量个进行合并处理后的事务存储至目标位置,并进行落盘操作,包括:

19、针对所述数据库的数据变动捕获节点对应的系统表增加三个列,分别用于记录落盘信息、逻辑日志文件以及所述逻辑日志待写入的位置;

20、当在所述数据变动捕获节点插入所述系统表时,确定所述落盘信息为零;

21、当逻辑日志触发落盘操作时,根据所述逻辑日志文件和所述逻辑日志待写入的位置进行落盘操作,以及将所述落盘信息更新为一。

22、在一个可能的实施方式中,所述方法还包括:

23、当所述逻辑日志触发落盘操作时,对从每个所述分片上收到的逻辑日志的位点进行更新;

24、当所述数据库服务端重启时,在所述系统表中检索落盘信息为零的逻辑日志;

25、删除所述落盘信息为零的逻辑日志在所述系统表中的行记录。

26、第二方面,本专利技术实施例提供一种数据库的优化装置,包括:

27、队列处理模块,用于当检测到所述数据库中每个分片的目标队列中存在第一事务时,对所述第一事务进行合并处理,所述第一事务的全局提交序为零;

28、堆处理模块,用于当全部所述第一事务处理完成后,从每个所述分片的目标堆中获取第二事务进行合并处理,所述第二事务的全局提交序为非零;

29、落盘操作模块,用于将预设数量个进行合并处理后的事务存储至目标位置,并进行落盘操作。

30、第三方面,本专利技术实施例提供一种计算机设备,包括:处理器和存储器,所述处理器用于执行所述存储器中存储的数据库的优化程序,以实现上述第一方面中任一项所述的数据库的优化方法。

31、第四方面,本专利技术实施例提供一种存储介质,所述存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现上述第一方面中任一项所述的数据库的优化方法。

32、本专利技术实施例提供的数据库的优化方案,通过当检测到所述数据库中每个分片的目标队列中存在第一事务时,对所述第一事务进行合并处理,所述第一事务的全局提交序为零;当全部所述第一事务处理完成后,从每个所述分片的目标堆中获取第二事务进行合并处理,所述第二事务的全局提交序为非零;将预设数量个进行合并处理后的事务存储至目标位置,并进行落盘操作。由此,可以实现提高事务合并的速度,合并性能方面取得了显著的提升,减少了落盘次数以及磁盘io交互次数,通过优化落盘次数的方式提升cdc性能。

本文档来自技高网...

【技术保护点】

1.一种数据库的优化方法,其特征在于,包括:

2.根据权利要求1所述的方法,其特征在于,所述第一事务通过以下方式存储至所述目标队列:

3.根据权利要求1所述的方法,其特征在于,所述对所述第一事务进行合并处理,包括:

4.根据权利要求3所述的方法,其特征在于,所述从每个所述分片的目标堆中获取第二事务进行合并处理,包括:

5.根据权利要求4所述的方法,其特征在于,所述通过所述第二线程对所述第二事务进行合并处理,包括:

6.根据权利要求1所述的方法,其特征在于,所述将预设数量个进行合并处理后的事务存储至目标位置,并进行落盘操作,包括:

7.根据权利要求6所述的方法,其特征在于,所述方法还包括:

8.一种数据库的优化装置,其特征在于,包括:

9.一种计算机设备,其特征在于,包括:处理器和存储器,所述处理器用于执行所述存储器中存储的数据库的优化程序,以实现权利要求1~7中任一项所述的数据库的优化方法。

10.一种存储介质,其特征在于,所述存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现权利要求1~7中任一项所述的数据库的优化方法。

...

【技术特征摘要】

1.一种数据库的优化方法,其特征在于,包括:

2.根据权利要求1所述的方法,其特征在于,所述第一事务通过以下方式存储至所述目标队列:

3.根据权利要求1所述的方法,其特征在于,所述对所述第一事务进行合并处理,包括:

4.根据权利要求3所述的方法,其特征在于,所述从每个所述分片的目标堆中获取第二事务进行合并处理,包括:

5.根据权利要求4所述的方法,其特征在于,所述通过所述第二线程对所述第二事务进行合并处理,包括:

6.根据权利要求1所述的方法,其特征在于,所述将预设数量个进行...

【专利技术属性】
技术研发人员:袁玉聪周亚运钱毅王伟勋吴沛霆岳新新周诚李金虎
申请(专利权)人:金篆信科有限责任公司
类型:发明
国别省市:

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

1