CN115587099A - 一种分布式的表锁应用方法、装置、存储介质及电子设备 - Google Patents

一种分布式的表锁应用方法、装置、存储介质及电子设备 Download PDF

Info

Publication number
CN115587099A
CN115587099A CN202211313874.3A CN202211313874A CN115587099A CN 115587099 A CN115587099 A CN 115587099A CN 202211313874 A CN202211313874 A CN 202211313874A CN 115587099 A CN115587099 A CN 115587099A
Authority
CN
China
Prior art keywords
lock
data
log
node
data table
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202211313874.3A
Other languages
English (en)
Inventor
孔繁宇
崔晓飞
韩富晟
曹庭
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Oceanbase Technology Co Ltd
Original Assignee
Beijing Oceanbase Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Oceanbase Technology Co Ltd filed Critical Beijing Oceanbase Technology Co Ltd
Priority to CN202211313874.3A priority Critical patent/CN115587099A/zh
Publication of CN115587099A publication Critical patent/CN115587099A/zh
Priority to US18/494,268 priority patent/US20240232161A9/en
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2282Tablespace storage structures; Management thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1448Management of the data involved in backup or backup restore
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2308Concurrency control
    • G06F16/2336Pessimistic concurrency control approaches, e.g. locking or multiple versions without time stamps
    • G06F16/2343Locking methods, e.g. distributed locking or locking implementation details

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Computing Systems (AREA)
  • Software Systems (AREA)
  • Quality & Reliability (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本说明书公开了一种分布式的表锁应用方法、装置、存储介质及电子设备。该分布式的表锁应用方法包括:主节点接收数据处理请求,并确定数据处理请求对应待处理数据所处的数据表,生成针对数据表的表锁,对数据表进行锁操作,并生成数据表对应的锁状态信息,将锁状态信息写入到主节点本地的日志中,以及将日志同步给从节点,以使从节点将日志进行保存,在主节点发生重启后,判断主节点是否存储有日志,若是,则根据日志中记录的锁状态信息,恢复对数据表的锁操作。

Description

一种分布式的表锁应用方法、装置、存储介质及电子设备
技术领域
本说明书涉及计算机技术领域,尤其涉及一种分布式的表锁应用方法、装置、存储介质及电子设备。
背景技术
在分布式数据系统中,通常会将正在处理的任务拆分为多个子任务,从而将这些子任务分配给不同的计算机进行处理,以提高处理效率。在此过程中,为了防止多个进程同时操作数据库中的一个数据(如对数据库中的某个数据进行修改),从而导致数据库读写失败,通常会对数据库中的数据进行上锁,即当一个进程对数据库中的数据进行操作时,数据库会对该数据进行锁定,以防止当前时刻其他进程对该数据进行操作。
然而,目前的数据锁机制无法有效的保证对数据的锁定操作,很有可能造成数据库的读写失败,导致数据处理任务无法顺利进行。
发明内容
本说明书提供一种分布式的表锁应用方法、装置、存储介质及电子设备。从而有效的保证对数据的锁定操作。
本说明书采用下述技术方案:
本说明书提供了一种分布式的表锁应用方法,所述方法应用于分布式数据库中的主节点,包括:
主节点接收数据处理请求,并确定所述数据处理请求对应待处理数据所处的数据表;
生成针对所述数据表的表锁,所述表锁包括表级锁以及分区级锁,所述表级锁用于在响应于数据定义语言DDL操作后,对所述数据表进行锁定,所述分区级锁用于在响应于数据操作语言DML操作后,对所述数据表的分区进行锁定;
通过所述表锁,对所述数据表进行锁操作,并生成所述数据表对应的锁状态信息;
将所述锁状态信息写入到所述主节点本地的日志中,以及将所述日志同步给从节点,以使所述从节点将所述日志进行保存;
在所述主节点发生重启后,判断所述主节点是否存储有所述日志;
若是,则根据所述日志中记录的所述锁状态信息,恢复对所述数据表的锁操作。
可选地,所述方法还包括:
向所述从节点发送表锁生成指令,以使所述从节点根据所述表锁生成指令,在所述从节点本地生成针对所述数据表的副本的表锁,以及所述从节点在竞选成为主节点后,根据在所述从节点本地生成的表锁以及所述主节点同步给所述从节点的所述日志,对所述副本执行锁操作。
本说明书提供了一种分布式的表锁应用方法,所述方法应用于分布式数据库中的从节点,包括:
接收模块,接收主节点同步的日志并保存,所述日志中包含有锁状态信息,所述锁状态信息是所述主节点通过生成的表锁对待处理数据所处的数据表进行锁操作后生成的,所述表锁是所述主节点接收数据处理请求后,针对所述待处理数据所处的数据表生成的,所述表锁包括表级锁以及分区级锁,所述表级锁用于在响应于DDL操作后,对所述数据表进行锁定,所述分区级锁用于在响应于DML操作后,对所述数据表的分区进行锁定;
在接收到所述主节点发送的日志获取请求时,将所述日志发送给所述主节点,以使所述主节点根据所述日志中记录的所述锁状态信息,恢复对所述数据表的锁操作,其中,所述日志获取请求是所述主节点完成重启后确定本地未存储所述日志时向所述从节点发送的。
可选地,所述方法还包括:
接收所述主节点发送的表锁生成指令;
根据所述表锁生成指令,在所述从节点本地生成针对所述数据表的副本的表锁;
在所述主节点发生故障后,向其余节点发送所述从节点自身竞选成为主节点的竞选请求;
响应于所述从节点自身竞选为主节点,根据所述从节点生成的表锁以及所述主节点同步的日志中记录的锁状态信息,对所述数据表的副本执行锁操作。
本说明书提供了一种分布式的表锁应用装置,包括:
接收模块,接收数据处理请求,并确定所述数据处理请求对应待处理数据所处的数据表;
生成模块,生成针对所述数据表的表锁,所述表锁包括表级锁以及分区级锁,所述表级锁用于在响应于DDL操作后,对所述数据表进行锁定,所述分区级锁用于在响应于DML操作后,对所述数据表的分区进行锁定;
操作模块,通过所述表锁,对所述数据表进行锁操作,并生成所述数据表对应的锁状态信息;
同步模块,将所述锁状态信息写入到主节点本地的日志中,以及将所述日志同步给从节点,以使所述从节点将所述日志进行保存;
判断模块,在所述主节点发生重启后,判断所述主节点是否存储有所述日志;
恢复模块,若是,则根据所述日志中记录的所述锁状态信息,恢复对所述数据表的锁操作。
可选地,所述生成模块具体用于,向所述从节点发送表锁生成指令,以使所述从节点根据所述表锁生成指令,在所述从节点本地生成针对所述数据表的副本的表锁,以及所述从节点在竞选成为主节点后,根据在所述从节点本地生成的表锁以及所述主节点同步给所述从节点的所述日志,对所述副本执行锁操作。
本说明书提供了一种分布式的表锁应用装置,包括:
接收模块,接收主节点同步的日志并保存,所述日志中包含有锁状态信息,所述锁状态信息是所述主节点通过生成的表锁对待处理数据所处的数据表进行锁操作后生成的,所述表锁是所述主节点接收数据处理请求后,针对所述待处理数据所处的数据表生成的,所述表锁包括表级锁以及分区级锁,所述表级锁用于在响应于DDL操作后,对所述数据表进行锁定,所述分区级锁用于在响应于DML操作后,对所述数据表的分区进行锁定;
发送模块,在接收到所述主节点发送的日志获取请求时,将所述日志发送给所述主节点,以使所述主节点根据所述日志中记录的所述锁状态信息,恢复对所述数据表的锁操作,其中,所述日志获取请求是所述主节点完成重启后确定本地未存储所述日志时向从节点发送的。
可选地,所述接收模块还用于,接收所述主节点发送的表锁生成指令;根据所述表锁生成指令,在所述从节点本地生成针对所述数据表的副本的表锁;在所述主节点发生故障后,向其余节点发送所述从节点自身竞选成为主节点的竞选请求;响应于所述从节点自身竞选为主节点,根据所述从节点生成的表锁以及所述主节点同步的日志中记录的锁状态信息,对所述数据表的副本执行锁操作。
本说明书提供了一种计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述分布式的表锁应用方法。
本说明书提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述分布式的表锁应用方法。
本说明书采用的上述至少一个技术方案能够达到以下有益效果:
在本方案中,主节点接收数据处理请求,并确定数据处理请求对应待处理数据所处的数据表,生成针对数据表的表锁,对数据表进行锁操作,并生成数据表对应的锁状态信息,将锁状态信息写入到主节点本地的日志中,以及将日志同步给从节点,以使从节点将日志进行保存,在主节点发生重启后,判断主节点是否存储有日志,若是,则根据日志中记录的锁状态信息,恢复对数据表的锁操作。
从上述方法可以看出,本方案在进行数据处理的过程中,主节点会生成待处理数据所在数据表的表锁,并将数据处理过程中的锁状态信息同步到日志中,这样一来,即使主节点发生重启或者主节点中的表锁丢失,也可以根据存储的日志恢复之前的锁操作状态,避免了由于主节点重启以及主节点中的表锁丢失导致无法保证对数据的锁定操作,从而使后续数据处理过程中待处理数据不会被多个进程调用,保证了数据处理任务的顺利进行。
附图说明
此处所说明的附图用来提供对本说明书的进一步理解,构成本说明书的一部分,本说明书的示意性实施例及其说明用于解释本说明书,并不构成对本说明书的不当限定。在附图中:
图1为本说明书中提供的一种分布式的表锁应用方法流程示意图;
图2为本说明书中提供的一种分布式的表锁应用方法流程示意图;
图3为本说明书中提供的一种分布式的表锁应用装置的示意图;
图4为本说明书中提供的一种分布式的表锁应用装置的示意图;
图5为本说明书中提供的一种对应于图1或图2的电子设备示意图。
具体实施方式
为使本说明书的目的、技术方案和优点更加清楚,下面将结合本说明书具体实施例及相应的附图对本说明书技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本说明书保护的范围。
以下结合附图,详细说明本说明书各实施例提供的技术方案。
图1为本说明书中提供的一种分布式的表锁应用方法的流程示意图,包括以下步骤:
S100:主节点接收数据处理请求,并确定所述数据处理请求对应待处理数据所处的数据表。
在分布式数据库系统中,通常会将正在处理的任务拆分为多个子任务,从而将这些子任务分配给不同的计算机进行处理,以提高处理效率,保障数据隐私安全。在此过程中,数据系统可以将涉及到当前数据处理任务的数据分配到多个节点中,从而由多个节点共同执行该任务。
在数据处理任务的实际执行过程中,对于分配到其中一个节点中的数据,如果同时存在有两个以上的进程对该数据进行处理(如对该数据同时进行删除以及修改),会导致该数据丧失一致性,从而使数据库发生错误。
通常情况下,数据库中的数据以数据表的形式进行存储,而对于分配到不同节点中的数据,如果这两个数据存储在同一个数据表中,当这两个节点之间的进程出现冲突(如其中一个节点对该数据表中的数据进行修改,而另一个节点对数据表进行删除)时,也会导致数据丧失一致性,从而使数据库发生错误。
而为了避免上述情况的发生,通常会通过数据锁来防止多个线程或者进程同时操作数据库中某个数据或者数据所在的数据表,以保证数据库中数据的一致性,防止数据库发生错误。但是,由于无法保存数据锁之前的锁操作状态(如锁定的位置以及锁定的方式等),如果存储该数据锁的节点发生重启,该数据锁就无法恢复重启之前对数据或者数据表的锁操作,致使重启后的节点无法有效的防止多个进程同时对同一个数据进行操作。并且,一旦存储该数据锁的节点发生故障,则会导致数据库的数据锁丢失,从而无法保证后续数据处理过程中数据库中数据的一致性。
基于此,本说明书提供了一种分布式的表锁应用方法,从而避免由于保存数据锁的节点发生重启,或者数据锁丢失导致无法在后续数据处理过程中保证数据库中数据的一致性。其中,主节点可以在接收数据处理请求时,确定数据处理请求对应待处理数据所处的数据表。
在分布式数据库系统中,设置有多个节点,这些节点可以为分布式数据库系统中部署的计算机或者服务器等指定设备。这样一来,分布式数据库系统可以将待处理数据的副本分配到不同的节点中,在数据处理的过程中,可以在这些节点中竞选出一个节点作为主节点,并将除该主节点外的其他节点作为从节点,主节点可以用于调配及管理其他从节点以保证数据全局的一致性,以及执行对数据库中数据的读写操作。从节点可以用于同步主节点的数据,处理数据的非事务相关的操作并转发数据的事务操作给主节点,并且可以执行对数据库中数据的读操作,但不能执行写操作。当主节点出现故障发生宕机后,各从节点中可以竞选出一个新的主节点,竞选方式可以根据实际情况进行设定,本说明书对此不做具体限定。
另外,上述数据处理请求可以为同一个客户端的不同进程对应的数据处理请求,也可以为不同客户端的不同进程对应的数据处理请求,当然,也可以为其他对象或者进程对应的数据处理请求。数据处理请求可以为对数据进行删除、改写、添加等操作的处理请求,也可以为对数据表进行删除、设置限制以及创建数据表等操作的处理请求,本说明书对此不做具体限定。
S102:生成针对所述数据表的表锁。
在数据处理的过程中,通常会分为诸如准备(Prepare)阶段、提交(Commit)阶段等多个阶段,为了保证数据的一致性,在数据处理的准备阶段,主节点可以生成针对待处理数据所在数据表的表锁。当然,主节点也可以在获取到待处理数据后,立刻生成针对该数据表的表锁。
具体的,主节点获取到待处理数据后,可以先在本地生成数据表的表锁,而后向多个从节点发送表锁生成指令,从节点在接收到该表锁生成指令后,可以在本地生成针对数据表的副本的表锁,以用于对主节点中的表锁进行备份。
进一步的,主节点可以将表锁的生成指令发送到每个从节点中,从而使每一个节点(包括主节点以及从节点)中都对应有一个表锁,当然,也可以只将表锁的生成指令发送到部分指定的从节点中,从而只在这部分从节点中对表锁进行保存。
在本说明书中,上述表锁可以包括表级锁以及分区级锁,表级锁用于在响应于数据定义语言(Data Definition Language,DDL)操作后,对数据表进行锁定,分区级锁用于在响应于数据操作语言(Data Manipulation Language,DML)操作后,对数据表的分区进行锁定,其中,DDL操作通常用于定义或改变数据表的结构、数据类型、表之间的链接和约束等初始化工作上,大多在建立数据表时使用,在数据表创建后,也可以通过DDL操作修改数据表的属性,或者为数据表创建索引等。DML操作用于对数据库里的数据进行操作,比如,往数据表中插入或者删除数据等,可以理解为主要用于对数据表中的数据进行修改。以SQL指令为例,CREATE、ALTER、DROP等指令属于DDL操作,SELECT、UPDATE、INSERT、DELETE等指令属于DML操作。
在本说明书中,分布式数据表的内容可以划分为多个分区,每个分区只包含该数据表的一部分内容,不同的数据表分区包含的内容允许部分重叠。分布式数据库系统有多个节点,则数据表的这多个分区分布在这多个节点上,典型的情况是,在不考虑容灾备份的情况下,数据表的各分区分别处于不同节点上,在考虑容灾备份的情况下,数据表的同一个分区有主副本和从副本,分别处于不同节点上,两者通过数据同步保持数据动态一致。
在实际应用中,DDL操作通常是低频操作,是针对整张数据表的,发生的次数相对少,而DML是高频操作,是针对数据表中的局部分区的,发生的次数相对多。针对这两类操作的特征,本申请将表锁也拆分为两级结构,即表级锁和分区级锁,基于不同的操作的触发,提供了差异化的上锁流程,以实现影响范围更为合理的操作互斥。基于此,若当服务器接收到针对分布式数据表的操作时,会判断该操作的类型,以决定接下来采用哪种上锁流程。
S104:通过所述表锁,对所述数据表进行锁操作,并生成所述数据表对应的锁状态信息。
具体的,生成数据表对应的表锁后,可以通过该表锁对数据表进行锁定,以使锁定后的待处理数据不能被除了当前数据处理请求对应的进程以外的其他进程所调用或者执行操作。例如,如果当前数据处理请求对应的进程正在执行对待处理数据的修改操作,则主节点会根据表锁对该待处理数据在数据库中对应的数据表进行锁定,这样一来,其他进程就不能在同一时刻对该待处理数据在数据库中对应的数据表以及数据表中的数据进行诸如删除、修改、设置约束等操作。
而若主节点监测到当前进程对待处理数据的数据处理操作执行结束,则可以通过表锁对之前锁定的数据表进行解锁,从而使其他进程能够对该待处理数据以及该待处理数据所在的数据表执行后续的操作。
还以上述例子为例,当主节点监测到当前进程完成对待处理数据的修改后,则可以通过表锁解除对待处理数据所在数据表的锁定,从而使其他进程能够对该待处理数据所在的数据表以及数据表中的数据进行诸如删除、修改、设置约束等操作。
通常情况下,当存储表锁的节点发生重启或者表锁丢失后,数据表往往会恢复到被表锁执行锁操作前的状态,例如,对待处理数据进行处理时该待处理数据所在的数据表为锁定状态,但是当存储该表锁的节点发生重启后,则待处理数据所在的数据表会恢复为没有表锁时的未被锁定状态,这样就无法防止其他进程对待处理数据的调用,导致数据处理无法继续进行。
因此,为了避免这种情况的发生,主节点通过表锁对待处理数据所在数据表执行锁操作后,可以生成该表锁对应的锁状态信息,其中,该锁状态信息中可以包含有表锁锁定的数据表在数据库中对应的位置、当前状态(如上锁状态、解锁状态)以及锁定方式等,当然,也可以包含有其他状态信息,本说明书对此不做具体限定。
S106:将所述锁状态信息写入到所述主节点本地的日志中,以及将所述日志同步给从节点,以使所述从节点将所述日志进行保存。
主节点确定数据表对应的锁状态信息后,可以将锁状态信息写入到主节点本地的日志中,同时将该日志同步到从节点中,使得从节点对同步的日志进行存储。
在本说明书中,主节点可以将表锁生成指令携带在上述日志中并同步给从节点,而后从节点可以根据该日志中记录的表锁生成指令生成针对数据表的副本的表锁。
S108:在所述主节点发生重启后,判断所述主节点是否存储有所述日志。
S110:若是,则根据所述日志中记录的所述锁状态信息,恢复对所述数据表的锁操作。
在实际应用中,当主节点发生重启后,之前的表锁也会随之丢失,而若想恢复之前的锁操作状态则需要通过日志中记录的锁状态信息恢复对数据表的锁操作。其中,节点发生重启的原因有多种,当主节点接收到重启命令执行正常的重启操作后,存储在本地的日志并不会丢失,而当主节点由于一些故障(如内存故障)发生重后,这些故障很可能会导致本地存储的日志丢失。
因此,在主节点发生重启后,需要判断主节点是否存储有日志。当确定主节点中仍存储有日志时,此时主节点可以直接根据本地日志中记录的锁状态信息,恢复对待处理数据所在数据表的锁操作。
而若确定主节点中未存储有日志,说明该日志发生丢失,此时主节点可以向从节点发送日志获取请求,从节点在接收到该日志获取请求后,可以将本地存储的日志返回给主节点,从而使主节点根据该日志中记录的锁状态信息,恢复对待处理数据所在数据表的锁操作。例如,如果主节点发生重启前,待处理数据所在数据表已经被表锁锁定,则主节点重启后,可以根据从节点发送的日志中记录的锁状态信息,通过表锁恢复主节点重启之前对待处理数据所在数据表的锁定操作。
在此过程中,若主节点中的日志丢失,则主节点可以根据同步到主节点中日志记录的锁状态信息重新生成新的表锁,并恢复数据表在表锁丢失之前的对应的锁操作状态。
而当主节点发生故障导致永久性宕机后,则说明该主节点无法继续执行后续的数据处理任务,因此,针对于其中的一个从节点,该从节点可以向其余节点发送竞选成为主节点的竞选请求,若该从节点竞选成功,则可以响应于从节点竞选为主节点,根据从节点生成的表锁以及主节点同步的日志中记录的锁状态信息,对数据表的副本执行锁操作。在分布式数据库系统中,当主节点执行对数据表中数据的处理时,从节点也会生成该数据表的副本,这样一来,当主节点发生故障并在从节点竞选成为主节点后,可以继续对数据表的副本进行处理。
其中,上述其余节点可以为分布式数据库系统中的其他从节点。当监测到在预设时间内主节点对应的状态均为未响应状态,则可以认为主节点发生永久性故障,此时可以向分布式数据库系统中的其余从节点发送竞选成为主节点的请求,其中,该预设时间可以根据实际情况进行设定,本说明书对此不做具体限定。
换句话说,如果主节点发生宕机之前,数据表被表锁锁定,则在主节点发生故障后,当其中一个从节点竞选成为主节点后,可以根据其同步到本地的日志,恢复对其中数据表的副本的锁定。
需要说明的是,本说明书还可以生成仅针对待处理数据的数据锁、针对待处理数据所在数据行的行锁、待处理数据所在数据页的页锁等其他类型的数据锁。当数据锁仅为针对待处理数据对应的数据锁时,可以仅针对待处理数据执行锁操作,当数据锁为行锁时,则可以对待处理数据所在的数据行执行锁操作,当数据锁为页锁时,则可以对该待处理数据所在的数据页执行锁操作,而恢复锁操作的方式与上述对数据表恢复锁操作的方式相同,本说明书对此不做具体限定。
以上为从主节点的角度,对本说明书提供的分布式的表锁应用方法进行说明,为了便于理解,以下将从分布式数据库系统的其中一个从节点的角度,对本说明书提供的分布式的表锁应用方法进行说明,如图2所示。
图2为本说明书中提供的一种数据处理的方法的流程示意图,包括以下步骤:
S200:从节点接收主节点同步的日志并保存,所述日志中包含有锁状态信息,所述锁状态信息是所述主节点通过生成的表锁对待处理数据所处的数据表进行锁操作后生成的,所述表锁是所述主节点接收数据处理请求后,针对所述待处理数据所处的数据表生成的,所述表锁包括表级锁以及分区级锁,所述表级锁用于在响应于DDL操作后,对所述数据表进行锁定,所述分区级锁用于在响应于DML操作后,对所述数据表的分区进行锁定。
主节点在接收到数据处理请求后,会确定该数据处理请求对应的待处理数据所在的数据表,进而生成针对该待处理数据所在数据表的表锁,而后主节点可以通过该表锁对待处理数据所处的数据表进行锁操作(如锁定以及解锁等),并生成该数据表对应的锁状态信息。
S202:在接收到所述主节点发送的日志获取请求时,将所述日志发送给所述主节点,以使所述主节点根据所述日志中记录的所述锁状态信息,恢复对所述数据表的锁操作,其中,所述日志获取请求是所述主节点完成重启后确定本地未存储所述日志时向所述从节点发送的。
当主节点发生重启后,若主节点中仍然存储有日志,主节点可以根据日志中记录的锁状态信息,恢复对待处理数据所在数据表的锁操作。而若主节点中未存储有日志,主节点可以向从节点发送日志获取请求,从节点在接收到该日志获取请求后,可以将本地存储的日志返回给主节点,从而使主节点根据该日志中记录的锁状态信息,恢复对数据表的锁操作。
从上述方法可以看出,从上述方法可以看出,本方案在进行数据处理的过程中,主节点会生成待处理数据所在数据表的表锁,并将数据处理过程中的锁状态信息同步到日志中,这样一来,即使主节点发生重启或者主节点中的表锁丢失,也可以根据存储的日志恢复之前的锁操作状态,避免了由于主节点重启以及主节点中的表锁丢失导致无法保证对数据的锁定操作,从而使后续数据处理过程中待处理数据不会被多个进程调用,保证了数据处理任务的顺利进行。
以上为本说明书的一个或多个实施分布式的表锁应用方法,基于同样的思路,本说明书还提供了相应的分布式的表锁应用装置,如图3或图4所示。
图3为本说明书提供的一种分布式的表锁应用装置的示意图,包括:
接收模块300,用于接收数据处理请求,并确定所述数据处理请求对应待处理数据所处的数据表;
生成模块302,生成针对所述数据表的表锁,所述表锁包括表级锁以及分区级锁,所述表级锁用于在响应于数据定义语言DDL操作后,对所述数据表进行锁定,所述分区级锁用于在响应于数据操作语言DML操作后,对所述数据表的分区进行锁定;
操作模块304,用于通过所述表锁,对所述数据表进行锁操作,并生成所述数据表对应的锁状态信息;
同步模块306,用于将所述锁状态信息写入到所述主节点本地的日志中,以及将所述日志同步给从节点,以使所述从节点将所述日志进行保存;
判断模块308,用于在所述主节点发生重启后,判断所述主节点是否存储有所述日志;
恢复模块310,用于若是,则根据所述日志中记录的所述锁状态信息,恢复对所述数据表的锁操作。
可选地,所述生成模块302具体用于,向所述从节点发送表锁生成指令,以使所述从节点根据所述表锁生成指令,在所述从节点本地生成针对所述数据表的副本的表锁,以及所述从节点在竞选成为主节点后,根据在所述从节点本地生成的表锁以及所述主节点同步给所述从节点的所述日志,对所述副本执行锁操作。
图4为本说明书提供的一种分布式的表锁应用装置的示意图,包括:
接收模块400,用于接收主节点同步的日志并保存,所述日志中包含有锁状态信息,所述锁状态信息是所述主节点通过生成的表锁对待处理数据所处的数据表进行锁操作后生成的,所述表锁是所述主节点接收数据处理请求后,针对所述待处理数据所处的数据表生成的,所述表锁包括表级锁以及分区级锁,所述表级锁用于在响应于DDL操作后,对所述数据表进行锁定,所述分区级锁用于在响应于DML操作后,对所述数据表的分区进行锁定;
发送模块402,用于在接收到所述主节点发送的日志获取请求时,将所述日志发送给所述主节点,以使所述主节点根据所述日志中记录的所述锁状态信息,恢复对所述数据表的锁操作,其中,所述日志获取请求是所述主节点完成重启后确定本地未存储所述日志时向所述从节点发送的。
可选地,所述接收模块400还用于,接收所述主节点发送的表锁生成指令;根据所述表锁生成指令,在所述从节点本地生成针对所述数据表的副本的表锁;在所述主节点发生故障后,向其余节点发送所述从节点自身竞选成为主节点的竞选请求;响应于所述从节点自身竞选为主节点,根据所述从节点生成的表锁以及所述主节点同步的日志中记录的锁状态信息,对所述数据表的副本执行锁操作。
本说明书还提供了一种计算机可读存储介质,该存储介质存储有计算机程序,计算机程序可用于执行上述图1或图2提供的一种分布式的表锁应用方法。
本说明书还提供了图5所示的一种对应于图1或图2的电子设备的示意结构图。如图5所述,在硬件层面,该电子设备包括处理器、内部总线、网络接口、内存以及非易失性存储器,当然还可能包括其他业务所需要的硬件。处理器从非易失性存储器中读取对应的计算机程序到内存中然后运行,以实现上述图1或图2所述的分布式的表锁应用方法。当然,除了软件实现方式之外,本说明书并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。
在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(Programmable Logic Device,PLD)(例如现场可编程门阵列(Field Programmable GateArray,FPGA))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字系统“集成”在一片PLD上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logic compiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(Hardware Description Language,HDL),而HDL也并非仅有一种,而是有许多种,如ABEL(Advanced Boolean Expression Language)、AHDL(Altera Hardware DescriptionLanguage)、Confluence、CUPL(Cornell University Programming Language)、HDCal、JHDL(Java Hardware Description Language)、Lava、Lola、MyHDL、PALASM、RHDL(RubyHardware Description Language)等,目前最普遍使用的是VHDL(Very-High-SpeedIntegrated Circuit Hardware Description Language)与Verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:ARC625D、Atmel AT91SAM、Microchip PIC18F26K20以及Silicone Labs C8051F320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本说明书时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本领域内的技术人员应明白,本说明书的实施例可提供为方法、系统、或计算机程序产品。因此,本说明书可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本说明书可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本说明书是参照根据本说明书实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本说明书的实施例可提供为方法、系统或计算机程序产品。因此,本说明书可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本说明书可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本说明书可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本说明书,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本说明书的实施例而已,并不用于限制本说明书。对于本领域技术人员来说,本说明书可以有各种更改和变化。凡在本说明书的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本说明书的权利要求范围之内。

Claims (10)

1.一种分布式的表锁应用方法,所述方法应用于分布式数据库中的主节点,包括:
主节点接收数据处理请求,并确定所述数据处理请求对应待处理数据所处的数据表;
生成针对所述数据表的表锁,所述表锁包括表级锁以及分区级锁,所述表级锁用于在响应于数据定义语言DDL操作后,对所述数据表进行锁定,所述分区级锁用于在响应于数据操作语言DML操作后,对所述数据表的分区进行锁定;
通过所述表锁,对所述数据表进行锁操作,并生成所述数据表对应的锁状态信息;
将所述锁状态信息写入到所述主节点本地的日志中,以及将所述日志同步给从节点,以使所述从节点将所述日志进行保存;
在所述主节点发生重启后,判断所述主节点是否存储有所述日志;
若是,则根据所述日志中记录的所述锁状态信息,恢复对所述数据表的锁操作。
2.如权利要求1所述的方法,所述方法还包括:
向所述从节点发送表锁生成指令,以使所述从节点根据所述表锁生成指令,在所述从节点本地生成针对所述数据表的副本的表锁,以及所述从节点在竞选成为主节点后,根据在所述从节点本地生成的表锁以及所述主节点同步给所述从节点的所述日志,对所述副本执行锁操作。
3.一种分布式的表锁应用方法,所述方法应用于分布式数据库中的从节点,包括:
从节点接收主节点同步的日志并保存,所述日志中包含有锁状态信息,所述锁状态信息是所述主节点通过生成的表锁对待处理数据所处的数据表进行锁操作后生成的,所述表锁是所述主节点接收数据处理请求后,针对所述待处理数据所处的数据表生成的,所述表锁包括表级锁以及分区级锁,所述表级锁用于在响应于DDL操作后,对所述数据表进行锁定,所述分区级锁用于在响应于DML操作后,对所述数据表的分区进行锁定;
在接收到所述主节点发送的日志获取请求时,将所述日志发送给所述主节点,以使所述主节点根据所述日志中记录的所述锁状态信息,恢复对所述数据表的锁操作,其中,所述日志获取请求是所述主节点完成重启后确定本地未存储所述日志时向所述从节点发送的。
4.如权利要求3所述的方法,所述方法还包括:
接收所述主节点发送的表锁生成指令;
根据所述表锁生成指令,在所述从节点本地生成针对所述数据表的副本的表锁;
在所述主节点发生故障后,向其余节点发送所述从节点自身竞选成为主节点的竞选请求;
响应于所述从节点自身竞选为主节点,根据所述从节点生成的表锁以及所述主节点同步的日志中记录的锁状态信息,对所述数据表的副本执行锁操作。
5.一种分布式的表锁应用装置,包括:
接收模块,接收数据处理请求,并确定所述数据处理请求对应待处理数据所处的数据表;
生成模块,生成针对所述数据表的表锁,所述表锁包括表级锁以及分区级锁,所述表级锁用于在响应于DDL操作后,对所述数据表进行锁定,所述分区级锁用于在响应于DML操作后,对所述数据表的分区进行锁定;
操作模块,通过所述表锁,对所述数据表进行锁操作,并生成所述数据表对应的锁状态信息;
同步模块,将所述锁状态信息写入到主节点本地的日志中,以及将所述日志同步给从节点,以使所述从节点将所述日志进行保存;
判断模块,在所述主节点发生重启后,判断所述主节点是否存储有所述日志;
恢复模块,若是,则根据所述日志中记录的所述锁状态信息,恢复对所述数据表的锁操作。
6.如权利要求5所述的装置,所述生成模块具体用于,向所述从节点发送表锁生成指令,以使所述从节点根据所述表锁生成指令,在所述从节点本地生成针对所述数据表的副本的表锁,以及所述从节点在竞选成为主节点后,根据在所述从节点本地生成的表锁以及所述主节点同步给所述从节点的所述日志,对所述副本执行锁操作。
7.一种分布式的表锁应用装置,包括:
接收模块,接收主节点同步的日志并保存,所述日志中包含有锁状态信息,所述锁状态信息是所述主节点通过生成的表锁对待处理数据所处的数据表进行锁操作后生成的,所述表锁是所述主节点接收数据处理请求后,针对所述待处理数据所处的数据表生成的,所述表锁包括表级锁以及分区级锁,所述表级锁用于在响应于DDL操作后,对所述数据表进行锁定,所述分区级锁用于在响应于DML操作后,对所述数据表的分区进行锁定;
发送模块,在接收到所述主节点发送的日志获取请求时,将所述日志发送给所述主节点,以使所述主节点根据所述日志中记录的所述锁状态信息,恢复对所述数据表的锁操作,其中,所述日志获取请求是所述主节点完成重启后确定本地未存储所述日志时向从节点发送的。
8.如权利要求7所述的装置,所述接收模块还用于,接收所述主节点发送的表锁生成指令;根据所述表锁生成指令,在所述从节点本地生成针对所述数据表的副本的表锁;在所述主节点发生故障后,向其余节点发送所述从节点自身竞选成为主节点的竞选请求;响应于所述从节点自身竞选为主节点,根据所述从节点生成的表锁以及所述主节点同步的日志中记录的锁状态信息,对所述数据表的副本执行锁操作。
9.一种计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述权利要求1~4任一项所述的方法。
10.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述权利要求1~4任一项所述的方法。
CN202211313874.3A 2022-10-25 2022-10-25 一种分布式的表锁应用方法、装置、存储介质及电子设备 Pending CN115587099A (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202211313874.3A CN115587099A (zh) 2022-10-25 2022-10-25 一种分布式的表锁应用方法、装置、存储介质及电子设备
US18/494,268 US20240232161A9 (en) 2022-10-25 2023-10-25 Distributed table lock application methods, apparatuses, storage media, and electronic devices

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211313874.3A CN115587099A (zh) 2022-10-25 2022-10-25 一种分布式的表锁应用方法、装置、存储介质及电子设备

Publications (1)

Publication Number Publication Date
CN115587099A true CN115587099A (zh) 2023-01-10

Family

ID=84781445

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211313874.3A Pending CN115587099A (zh) 2022-10-25 2022-10-25 一种分布式的表锁应用方法、装置、存储介质及电子设备

Country Status (2)

Country Link
US (1) US20240232161A9 (zh)
CN (1) CN115587099A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117194579A (zh) * 2023-11-06 2023-12-08 山东浪潮数据库技术有限公司 一种分布式数据库资源锁队列管理方法、系统及装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117194579A (zh) * 2023-11-06 2023-12-08 山东浪潮数据库技术有限公司 一种分布式数据库资源锁队列管理方法、系统及装置

Also Published As

Publication number Publication date
US20240134840A1 (en) 2024-04-25
US20240232161A9 (en) 2024-07-11

Similar Documents

Publication Publication Date Title
EP3694148B1 (en) Configuration modification method for storage cluster, storage cluster and computer system
US6823474B2 (en) Method and system for providing cluster replicated checkpoint services
US7779295B1 (en) Method and apparatus for creating and using persistent images of distributed shared memory segments and in-memory checkpoints
CN108509462B (zh) 一种同步活动事务表的方法及装置
WO2021018020A1 (zh) 数据处理方法、装置、电子设备及计算机存储介质
CN111753013B (zh) 分布式事务处理方法及装置
CN107451172B (zh) 用于版本管理系统的数据同步方法及设备
CN109033127B (zh) 一种同步数据校验方法、装置以及设备
CN111459724B (zh) 节点切换方法、装置、设备及计算机可读存储介质
CN106357703B (zh) 集群切换方法与设备
US20240232161A9 (en) Distributed table lock application methods, apparatuses, storage media, and electronic devices
CN111880956A (zh) 一种数据同步方法和装置
CN104750755A (zh) 一种数据库主备切换后的数据回补方法及系统
CN116048800A (zh) 一种数据处理的方法、装置、存储介质及电子设备
CN115658390A (zh) 容器容灾方法、系统、装置、设备及计算机可读存储介质
CN115391337A (zh) 数据库分区的方法、装置、存储介质及电子设备
CN113672255B (zh) 一种分布式存储软件升级方法及装置
CN113297173A (zh) 分布式数据库集群管理方法及装置、电子设备
CN115203226B (zh) 一种分布式表锁操作方法、装置以及设备
CN116048886A (zh) 一种进行区块链节点主备切换的方法和装置
CN109901914A (zh) 事务处理方法、装置及设备
CN112084171B (zh) 基于Cassandra数据库的操作日志写入方法、装置、设备及介质
US8751443B1 (en) Online mirror state transitions for good quality of service and high availability in databases
US20150286649A1 (en) Techniques to take clean database file snapshot in an online database
JP6044363B2 (ja) コンピュータ、nasアクセス方法およびnasアクセスプログラム

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination