数据库并发事务的管理方法、装置、管理系统和介质
- 国知局
- 2024-10-09 15:45:29
本发明涉及数据库领域,特别涉及一种数据库并发事务的管理方法、装置、管理系统和介质。
背景技术:
1、数据库管理系统通常在逻辑层记录导致状态变更的事件,例如mysql的二进制日志。这些日志用于数据库同步、增量备份和恢复,确保事务顺序与持久化存储顺序一致。具体来说,mysql要求服务层的二进制日志顺序与存储引擎层的事务提交顺序保持一致,因此采用串行组提交方式,将多个事务按到达顺序排列,形成一个事务组,组内的事务按照排列的顺序依次串行操作,如先串行写入日志,再串行提交到b+树存储引擎。
2、由于lsm树具有更低的存储开销和写放大,很多数据库管理系统将lsm树存储引擎集成到系统当中,由此获得相较于b+树存储引擎更优的性能和更低的成本。由于原有的mysql数据库逻辑层是配合b+树存储引擎所设计的,而继续沿用原有的事务处理逻辑,在数据库逻辑层和lsm树存储引擎层之间采用串行组提交的方式会导致事务之间的等待时间过长,在多客户端请求的情况下严重限制数据库管理系统的性能,而多客户端同时请求数据库服务的场景十分常见。因此,需要提供一种数据库并发事务的管理方法、装置、管理系统和介质。
技术实现思路
1、本发明提供一种数据库并发事务的管理方法。改善了现有技术中数据库管理系统在高并发环境下,事务处理速率较低的问题。
2、本发明提供的一种数据库并发事务的管理方法,所述数据库包括服务层和存储引擎层,所述方法包括:所述服务层在预设的时间范围内,接收来自多个客户端发送的事务请求,并根据接收顺序对每个事务请求进行解析,获得每个事务请求对应的事务;所述服务层还基于预存的初始事务编号,依序为所述时间范围内获得的每个事务进行事务编号,编号完毕后,依据事务编号更新初始事务编号,并将各事务及对应的事务编号并行发送至所述存储引擎层;所述存储引擎层接收各事务,并在接收的各事务编号小于或等于所述时间范围内事务编号的最大值时,对确定的各事务进行处理。
3、于本发明一实施例中,所述服务层还基于预存的初始事务编号,依序为所述时间范围内获得的每个事务进行事务编号,编号完毕后,依据事务编号更新初始事务编号,并将各事务及对应的事务编号并行发送至所述存储引擎层,包括:所述服务层依据预存的初始事务编号,按照事务编号递增的方式,对所述时间范围内的各事务进行事务编号;所述服务层确定事务编号的最大值、事务编号的最小值,并使用事务编号的最大值作为更新后的初始事务编号;所述服务层对于每个事务:将事务编号的最大值、事务编号的最小值,事务和对应的事务编号作为一个组合;所述服务层将各组合并行发送至所述存储引擎层。
4、于本发明一实施例中,所述存储引擎层接收各事务,并在接收的各事务编号小于或等于所述时间范围内事务编号的最大值时,对确定的各事务进行处理,包括:所述存储引擎层接收各事务,并对各个事务对应的事务编号进行判断:当事务编号小于或等于事务编号的最大值时,则将对应的事务进行处理;否则,所述存储引擎层将事务编号对应的事务的状态更改为休眠状态,停止处理该事务,等待所述存储引擎层后续进行判断。
5、于本发明一实施例中,所述服务层还基于预存的初始事务编号,依序为所述时间范围内获得的每个事务进行事务编号,编号完毕后,依据事务编号更新初始事务编号,并将各事务及对应的事务编号并行发送至所述存储引擎层,包括:所述服务层基于预存的初始事务编号,依序为所述时间范围内每个事务进行事务编号;所述服务层对每个事务中包含的所有键值对进行键值对编号,获取每个事务对应的键值对编号范围;所述服务层获得所述时间范围内的各事务编号和键值对编号范围后,依据事务编号更新初始事务编号;所述服务层对于每个事务:将事务编号的最大值、事务编号的最小值,事务和对应的事务编号、对应的键值对编号范围作为一个组合;所述服务层将各组合并行发送至所述存储引擎层。
6、于本发明一实施例中,所述服务层对每个事务中包含的所有键值对进行键值对编号,获取每个事务对应的键值对编号范围,包括:所述服务层按照事务编号顺序分析各个事务:所述服务层对事务中包含的每个键值对,按照编号递增的方式依序进行键值对编号,组成事务对应的键值对编号范围。
7、于本发明一实施例中,所述存储引擎层接收各事务,并在接收的各事务编号小于或等于所述时间范围内事务编号的最大值时,对确定的各事务进行处理,并将处理后的各事务进行提交,包括:所述存储引擎层接收各事务,并对各个事务对应的事务编号进行判断:当事务编号小于或等于事务编号的最大值时,则所述存储引擎层对该事务编号对应的事务,依据其键值对编号范围计算实际键值对编号,并根据实际键值对编号和事务编号对事务进行处理;当事务编号大于事务编号的最大值时,则所述存储引擎层将事务编号对应的事务状态更改为休眠状态,停止处理该事务,等待所述存储引擎层后续进行判断。
8、于本发明一实施例中,所述存储引擎层对该事务编号对应的事务,依据其键值对编号范围计算实际键值对编号,并根据实际键值对编号和事务编号对事务进行处理,包括:所述存储引擎层按照事务编号顺序对每个事务进行处理:所述存储引擎层基于事务对应的键值对编号范围以及当前的初始键值对编号,获取实际键值对的编号范围;所述存储引擎层按照实际键值对的编号范围将事务中包含的键值对写入至预设的内存表中,并提交事务;所述存储引擎层在检测到所述时间范围内的所有事务提交完毕后,根据最大的实际键值对编号更新初始键值对编号。
9、于本发明一实施例中,所述存储引擎层接收各事务,并对各个事务对应的事务编号进行判断包括:所述存储引擎层接收各事务;所述存储引擎层判断是否存在休眠状态的事务:若存在,则依据休眠状态的事务的事务编号判断是否唤醒休眠的事务后,对接收的各事务对应的事务编号进行判断;否则,则直接对接收的各事务对应的事务编号进行判断。
10、于本发明一实施例中,还提供了一种数据库并发事务的管理系统,所述数据库包括服务层和存储引擎层,所述服务层包括事务编号模块和解析模块,所述存储引擎层包括事务处理模块,所述系统包括:事务编号模块,用于在预设的时间范围内,接收来自多个客户端发送的事务请求,并根据接收顺序对每个事务请求进行解析,获得每个事务请求对应的事务;解析模块,用于基于预存的初始事务编号,依序为所述时间范围内获得的每个事务进行事务编号,编号完毕后,依据事务编号更新初始事务编号,并将各事务及对应的事务编号并行发送至所述存储引擎层;事务处理模块,用于接收各事务,并在接收的各事务编号小于或等于所述时间范围内事务编号的最大值时,对确定的各事务进行处理。
11、于本发明一实施例中,还提供一种管理装置,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时,实现上述任一项所述的数据库并发事务的管理方法。
12、于本发明一实施例中,还提供一种数据库管理系统,所述数据库管理系统应用上述任一项所述的方法进行数据库并发事务的管理。
13、于本发明一实施例中,还提供一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序被计算机的处理器执行时,使计算机执行上述任一项所述的数据库并发事务的管理方法。
14、本发明提出的一种数据库并发事务的管理方法、装置、管理系统和介质。在数据库服务层依据并发事务的写入顺序进行编号,在上层服务层将各事务完成编号之后,将所有事务全部下发到下层存储引擎层。在下层依据事务编号识别上层监控到事务的顺序,引导所有事务按照所识别的顺序在存储引擎层进行提交。在保障上下层事务顺序一致性的同时,减少事务相互等待的时间,增加事务之间的并行粒度,提高数据库管理系统的整体运行效率。本发明可以应用于对该流程中数据库的多个客户端的并发事务请求进行管理,以在多客户端的情况下实现数据库系统的可伸缩性和可拓展性,同时保证原有的服务层和存储引擎层之间的事务顺序一致性。
本文地址:https://www.jishuxx.com/zhuanli/20240929/309952.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 YYfuon@163.com 举报,一经查实,本站将立刻删除。