暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

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

原创 吾亦可往 2024-10-30
272

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


背景技术
在分布式数据库日益发展的当下,市场对分布式数据库的需求逐步增加,但验证分布式数据库正确性的手段比较匮乏。在部署分布式数据库的同时,用户倾向于回流多分片的数据变动,在单机数据库上进行验证最终的数据一致性。现有回流有两种办法实现:一
种是将各个分片的逻辑日志导入到一个单机数据库中;另一种测试用数据变动捕获节点(CDC,Change Data Capture)功能来实现分布式数据库的回流。前者毫无疑问,最简单,但问题也很多。不仅仅多个分片,一个个往单机数据库里导入并回放很花时间,而且还无法解决多分片事务一致的问题,即一个事务无法保证在多分片是同时执行完的,无法按照事务ACID的概念来保障单机事务的正确性,更何况还有多分片复制表、DDL等问题无法解决。后者则是利用分布式数据库的CDC功能来生成一份单机数据库可消费的逻辑日志,这种不仅可以解决多分片复制表、DDL等问题,事务也是完全按照原子性来的,甚至已提交事务回滚也完全兼容。
现有的通过CDC功能可能出现回滚失败的场景,进而导致队列里面事务数量越来越多,会发现每次获取找一个事务需要花费很长时间。且每处理一个事务都会把这个事务写到逻辑日志里面进行落盘,在N分片环境下,除了合并出来的那个事务外,还有N‑1个空事
务,也就是说需要落盘N次,也就是说每个事务需要N次磁盘IO,落盘次数以及与磁盘IO交互次数过高,开销太大。因此,如何优化数据库CDC的结构和性能成为现在亟待解决的问题。


1 .一种数据库的优化方法,其特征在于,包括:
当检测到所述数据库中每个分片的目标队列中存在第一事务时,对所述第一事务进行合并处理,所述第一事务的全局提交序为零;
当全部所述第一事务处理完成后,从每个所述分片的目标堆中获取第二事务进行合并处理,所述第二事务的全局提交序为非零;
将预设数量个进行合并处理后的事务存储至目标位置,并进行落盘操作。
2 .根据权利要求1所述的方法,其特征在于,所述第一事务通过以下方式存储至所述目标队列:
将第一线程中用于存放事务的容器确定为一个类,所述第一线程用于消费逻辑日志中的事务;
通过所述第一线程将全局提交序为零的第一事务存储至所述类中的目标队列的队尾;
所述第二事务通过以下方式存储至所述目标堆中:
通过所述第一线程将全局提交序为非零的第二事务存储至所述目标堆中。
3 .根据权利要求1所述的方法,其特征在于,所述对所述第一事务进行合并处理,包括:
通过第二线程从所述目标队列获取全局提交序最小的第一事务,以通过所述第二线程对所述第一事务进行合并处理后,将所述目标队列中的第一事务删除。
4 .根据权利要求3所述的方法,其特征在于,所述从每个所述分片的目标堆中获取第二事务进行合并处理,包括:
当检测到每个所述目标队列中不存在第一事务时,从每个所述分片的目标堆的堆顶获取全局提交序最小的第二事务,以通过所述第二线程对所述第二事务进行合并处理后,将所述目标堆中的第二事务删除。
5 .根据权利要求4所述的方法,其特征在于,所述通过所述第二线程对所述第二事务进行合并处理,包括:
通过所述第二线程将全局提交序相同的第二事务合并为一个目标事务;
将所述数据库中分片号最小的目标分片对应的事务的事务序作为合并后的事务对应的事务序,将所述数据库中其他分片上的事务的事务序用空事务代替。
6 .根据权利要求1所述的方法,其特征在于,所述将预设数量个进行合并处理后的事务存储至目标位置,并进行落盘操作,包括:
针对所述数据库的数据变动捕获节点对应的系统表增加三个列,分别用于记录落盘信息、逻辑日志文件以及所述逻辑日志待写入的位置;
当在所述数据变动捕获节点插入所述系统表时,确定所述落盘信息为零;
当逻辑日志触发落盘操作时,根据所述逻辑日志文件和所述逻辑日志待写入的位置进行落盘操作,以及将所述落盘信息更新为一。
7 .根据权利要求6所述的方法,其特征在于,所述方法还包括:
当所述逻辑日志触发落盘操作时,对从每个所述分片上收到的逻辑日志的位点进行更新;
当所述数据库服务端重启时,在所述系统表中检索落盘信息为零的逻辑日志;
删除所述落盘信息为零的逻辑日志在所述系统表中的行记录。
8 .一种数据库的优化装置,其特征在于,包括:

队列处理模块,用于当检测到所述数据库中每个分片的目标队列中存在第一事务时,
对所述第一事务进行合并处理,所述第一事务的全局提交序为零;
堆处理模块,用于当全部所述第一事务处理完成后,从每个所述分片的目标堆中获取第二事务进行合并处理,所述第二事务的全局提交序为非零;
落盘操作模块,用于将预设数量个进行合并处理后的事务存储至目标位置,并进行落盘操作。
9 .一种计算机设备,其特征在于,包括:处理器和存储器,所述处理器用于执行所述存储器中存储的数据库的优化程序,以实现权利要求1~7中任一项所述的数据库的优化方法。
10 .一种存储介质,其特征在于,所述存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现权利要求1~7中任一项所述的数据库的优化方法。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论