本申请涉及并发控制领域,特别是一种面向列存数据库的并发控制方法及其装置。
背景技术:
1、在数据库系统中,并发控制通常都是基于行的。行级并发控制放大了冲突范围,实际更新同一行的不同列在某些场景下并不冲突,如基于主键更新的场景,两个事务更新同一主键记录的不同列实际上是不冲突的,但是行式并发控制下放大到行级别是冲突的。
2、在列式数据库系统中,每列独立存储,如果采用行式并发控制,将事务控制信息单独作为一列存储。相邻行会共享事务控制块,这样额外引入了事务控制块的写写冲突。
3、此外,列存下要兼顾批量查询的性能,行级并发控制下批量读取数据需要检查每条记录的锁状态,查询性能比较低。
技术实现思路
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、一种计算机设备,包括处理器、存储器及存储在所述存储器上并能够在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如上所述的一种面向列存数据库的并发控制方法的步骤。
33、一种计算机可读存储介质,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现如上所述的一种面向列存数据库的并发控制方法的步骤。
34、本申请具有以下优点:
35、在本申请的实施例中,相对于现有技术中的在列式数据库系统中,采用行式并发控制弱的问题,本申请提供了采用列锁与组级mvcc来做并发控制的解决方案,具体为:当接收到数据待处理请求时,则确定所述数据待处理请求对应的事务类型和请求信息;其中,所述事务类型包括修改和读取;依据所述请求信息确定待处理列数据对应的数据组;依据所述事务类型对所述数据组执行数据处理。通过列锁做并发控制,减少事务冲突;通过组级mvcc,实现查询与修改相互不阻塞,提升批量查询性能;按组管理锁资源,提升锁利用效率;根据需要配置组内的锁资源,平衡并发能力和访问效率。
1.一种面向列存数据库的并发控制方法,所述列存数据库的每列包含有若干数据块,所述数据块中包含若干数据组,其特征在于,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,所述请求信息包括待处理数据行号和待处理请求列号,所述依据所述请求信息确定待处理列数据对应的数据组的步骤,包括:
3.根据权利要求2所述的方法,其特征在于,所述数据组内的数据至少包括一个事务锁,所述依据所述事务类型对所述数据组执行数据处理的步骤,包括:
4.根据权利要求3所述的方法,其特征在于,所述依据所述事务类型对所述数据组执行数据处理的步骤,包括:
5.根据权利要求3所述的方法,其特征在于,所述依据所述事务锁确定是否存在与所述待处理请求列号的数据行对应的修改冲突的步骤,包括:
6.根据权利要求3所述的方法,其特征在于,所述持有所述事务锁并执行所述数据待处理请求的步骤,包括:
7.根据权利要求6所述的方法,其特征在于,所述若有,则依据所述事务锁执行所述数据待处理请求的步骤,包括:
8.一种面向列存数据库的并发控制装置,所述列存数据库的每列包含有若干数据块,所述数据块中包含若干数据组,其特征在于,所述装置包括:
9.一种计算机设备,其特征在于,包括处理器、存储器及存储在所述存储器上并能够在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如权利要求1至7中任一项所述的方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现如权利要求1至7中任一项所述的方法。