本申请涉及数据库中继承表的维护技术,尤其涉及一种子表处理方法、装置及电子设备、存储介质。
背景技术:
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、即,要删除某一个子表时,如果父表存在查询、更新和删除等操作中的任意一个操作或任意多个操作,则先不对父表和子表进行隔离,开启第一事务以支持父表和子表都进行相应操作。当第一事务提交后,也就是执行完成后,再隔离父表和子表,并删除子表,此时,父表的操作不会受到影响。本申请提供的方法将删除子表的动作分解为两个事务进行,并以第一事务的提交时间节点为准,执行第二事务以对父表和子表进行分类处理,第二事务不影响第一事务的执行。因此,删除子表的操作不会阻塞对父表的查询操作、删除操作和更新操作等,从而极大地提高系统的并发度,提升数据库对前端应用的响应速度,降低一些操作数据库的语句和创建数据表的语句对于业务处理速度的影响。
1.一种子表处理方法,其特征在于,包括:
2.根据权利要求1所述的方法,其特征在于,所述执行第二事务以隔离所述父表的状态和所述目标子表的状态包括:
3.根据权利要求2所述的方法,其特征在于,所述执行第一事务以对所述父表和所述目标子表进行与所述操作状态对应的操作包括:
4.根据权利要求1所述的方法,其特征在于,所述标识所述目标子表为待删除子表包括:
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
7.一种子表处理装置,其特征在于,包括:
8.一种电子设备,其特征在于,包括:处理器,以及与所述处理器通信连接的存储器;
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机执行指令,当所述指令被执行时,使得计算机执行如权利要求1-6中任一项所述的方法。
10.一种计算机程序产品,其特征在于,包括计算机程序,所述计算机程序被处理器执行时用于实现如权利要求1-6任一项所述的方法。