CN115203226B - 一种分布式表锁操作方法、装置以及设备 - Google Patents
一种分布式表锁操作方法、装置以及设备 Download PDFInfo
- Publication number
- CN115203226B CN115203226B CN202211092823.2A CN202211092823A CN115203226B CN 115203226 B CN115203226 B CN 115203226B CN 202211092823 A CN202211092823 A CN 202211092823A CN 115203226 B CN115203226 B CN 115203226B
- Authority
- CN
- China
- Prior art keywords
- partition
- level
- data table
- lock
- level lock
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2308—Concurrency control
- G06F16/2336—Pessimistic concurrency control approaches, e.g. locking or multiple versions without time stamps
- G06F16/2343—Locking methods, e.g. distributed locking or locking implementation details
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2471—Distributed queries
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Software Systems (AREA)
- Probability & Statistics with Applications (AREA)
- Fuzzy Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本说明书实施例公开了一种分布式表锁操作方法、装置以及设备。所述分布式表锁包括对应于数据表的表级锁,以及分别对应于所述数据表所分布的不同分区的多个分区级锁,方案包括:响应于针对所述数据表的当前操作,判断所述当前操作是DDL操作,还是DML操作;若所述当前操作是所述DDL操作,则对所述数据表上对应的表级锁;若所述当前操作是所述DML操作,则确定所述DML操作在所述数据表中所针对的分区,作为目标分区,为所述目标分区上对应的分区级锁。
Description
技术领域
本说明书涉及分布式技术领域,尤其涉及一种分布式表锁操作方法、装置以及设备。
背景技术
锁是计算机系统中的一种互斥手段,防止多个线程或者进程同时操作某个资源,比如,数据结构或者内存。在数据库中,通过对数据加锁解决事务的隔离性问题,让事务之间相互不影响,每个事务进行操作的时候会先对数据加锁,防止其他事务同时操作数据。
在单机数据库中,可以采用表锁来保护数据表,单机数据库中表锁实现较为简单,可以采用内存锁的方式。此外,因为是单机数据库,一般只有一个锁管理器,所有的表锁集中管理。
随着业务膨胀和分布式技术的发展,分布式数据库逐渐得到了广泛的应用,但是缺乏针对分布式数据库的表锁方案,使得针对分布式数据库中的分布式数据表的操作可能出现冲突导致异常。
发明内容
本说明书一个或多个实施例提供一种分布式表锁操作方法、装置、设备以及存储介质,用以解决如下技术问题:缺乏针对分布式数据库的表锁方案,使得针对分布式数据库中的分布式数据表的操作可能出现冲突导致异常。
为解决上述技术问题,本说明书一个或多个实施例是这样实现的:
本说明书一个或多个实施例提供的一种分布式表锁操作方法,所述分布式表锁包括对应于数据表的表级锁,以及分别对应于所述数据表所分布的不同分区的多个分区级锁,所述方法包括:
响应于针对所述数据表的当前操作,判断所述当前操作是数据定义语言(DataDefinition Language,DDL)操作,还是数据操纵语言(Data Manipulation Language,DML)操作;
若所述当前操作是所述DDL操作,则对所述数据表上对应的表级锁;
若所述当前操作是所述DML操作,则确定所述DML操作在所述数据表中所针对的分区,作为目标分区,为所述目标分区上对应的分区级锁。
本说明书一个或多个实施例提供的一种分布式表锁操作装置,所述分布式表锁包括对应于数据表的表级锁,以及分别对应于所述数据表所分布的不同分区的多个分区级锁,所述装置包括:
操作判断模块,响应于针对所述数据表的当前操作,判断所述当前操作是DDL操作,还是DML操作;
表级上锁模块,若所述当前操作是所述DDL操作,则对所述数据表上对应的表级锁;
分区级上锁模块,若所述当前操作是所述DML操作,则确定所述DML操作在所述数据表中所针对的分区,作为目标分区,为所述目标分区上对应的分区级锁。
本说明书一个或多个实施例提供的一种分布式表锁操作设备,所述分布式表锁包括对应于数据表的表级锁,以及分别对应于所述数据表所分布的不同分区的多个分区级锁,所述设备包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够:
响应于针对所述数据表的当前操作,判断所述当前操作是DDL操作,还是DML操作;
若所述当前操作是所述DDL操作,则对所述数据表上对应的表级锁;
若所述当前操作是所述DML操作,则确定所述DML操作在所述数据表中所针对的分区,作为目标分区,为所述目标分区上对应的分区级锁。
本说明书一个或多个实施例提供的一种非易失性计算机存储介质,分布式表锁包括对应于数据表的表级锁,以及分别对应于所述数据表所分布的不同分区的多个分区级锁,所述介质存储有计算机可执行指令,所述计算机可执行指令设置为:
响应于针对所述数据表的当前操作,判断所述当前操作是DDL操作,还是DML操作;
若所述当前操作是所述DDL操作,则对所述数据表上对应的表级锁;
若所述当前操作是所述DML操作,则确定所述DML操作在所述数据表中所针对的分区,作为目标分区,为所述目标分区上对应的分区级锁。
本说明书一个或多个实施例采用的上述至少一个技术方案能够达到以下有益效果:将表锁拆分成表级锁和分区级锁两级结构,通过增加相对低频的DDL操作的上锁开销,降低了相对高频的DML操作的上锁开销,实现了分布式系统中DDL操作与DML操作之间的互斥、多个DDL操作之间的互斥,若有需求,还能够可选地实现多个DML操作之间的互斥;不仅如此,还解决了表锁本身的可扩展性问题,使得DML的锁表操作可以在数据表中的局部内容所属分区所在的分布式节点上进行,而未必要针对整个数据表进行,扩展性好而且效率高,有助于提高并发处理能力。
附图说明
为了更清楚地说明本说明书实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本说明书一个或多个实施例提供的一种分布式表锁操作方法的流程示意图;
图2为本说明书一个或多个实施例提供的一种分布式表锁的分级示意图;
图3为本说明书一个或多个实施例提供的一种分布式锁管理器的分级示意图;
图4为本说明书一个或多个实施例提供的一种应用场景下,差异化的分级上锁方案的示意图;
图5为本说明书一个或多个实施例提供的一种子分区级的上锁控制方案的流程示意图;
图6为本说明书一个或多个实施例提供的一种分布式表锁操作装置的结构示意图;
图7为本说明书一个或多个实施例提供的一种分布式表锁操作设备的结构示意图。
具体实施方式
本说明书实施例提供一种分布式表锁操作方法、装置、设备以及存储介质。
为了使本技术领域的人员更好地理解本说明书中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本说明书实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
将一个大任务拆分成许多小的部分,将这些小的任务分配给多个计算机进行处理,以便得到处理结果。提供这种能力的系统称为分布式系统,分布式系统中包含多个节点,这些节点可以分布在不同地域(比如,不同机房、不同城市、不同地区甚至不同国家等),每个节点往往由一个或者多个机器构成,这些机器大多数是用于执行具体计算任务的工作机,也有少数负责协调管理工作机的管理机。本申请的方案针对的分布式系统主要包括涉及分布式数据表使用的系统,典型的比如分布式数据库。针对背景技术提出的问题,本申请采用分布式表锁和分布式锁管理器的方案,较好地解决了表锁的可扩展性,解决了在分布式系统中对表锁的需求,使得当分布式系统中同时存在DDL操作和DML操作时,不出现丢数据或者数据错误的情况,提高分布式系统的可靠性。下面继续详细说明。
图1为本说明书一个或多个实施例提供的一种分布式表锁操作方法的流程示意图。
本方案提出了分布式表锁,分布式表锁分为两级,包括:对应于数据表的表级锁,以及分别对应于该数据表(主要考虑分布式数据表的情况)所分布的各分区的多个分区级锁。
图1中的流程包括以下步骤:
S102:响应于针对所述数据表的当前操作,判断所述当前操作是DDL操作,还是DML操作。
在本说明书一个或多个实施例中,数据表为分布式数据表,整个数据表的内容划分为多个分区,每个分区只包含该数据表的一部分内容,不同的数据表分区包含的内容允许部分重叠。分布式系统有多个节点,则数据表的这多个分区分布在这多个节点上,典型的情况是,在不考虑容灾备份的情况下,数据表的各分区分别处于不同节点上,在考虑容灾备份的情况下,数据表的同一个分区有主副本和从副本,分别处于不同节点上,两者通过数据同步保持数据动态一致。
用户或者管理者可以对数据表进行操作,比如,发送SQL指令查询数据表中的数据,或者对数据表进行管理维护。对于查询操作,由于不涉及数据的修改,因此不容易产生冲突,可以并发执行针对同一内容的查询操作,而对于管理维护操作,往往会使得数据表的相关数据产生变化,若针对同一内容并发操作则容易产生冲突,这里说的管理维护操作包括DDL操作和DML操作。
DDL操作通常用于定义或改变数据表的结构、数据类型、表之间的链接和约束等初始化工作上,大多在建立数据表时使用,在数据表创建后,也可以通过DDL操作修改数据表的属性,或者为数据表创建索引等。DML操作用于对数据库里的数据进行操作,比如,往数据表中插入或者删除数据等,可以理解为主要用于对数据表中的数据进行修改。以SQL指令为例,CREATE、ALTER、DROP等指令属于DDL操作,SELECT、UPDATE、INSERT、DELETE等指令属于DML操作。
在实际应用中,DDL操作通常是低频操作,是针对整张数据表的,发生的次数相对少,而DML是高频操作,是针对数据表中的局部分区的,发生的次数相对多。针对这两类操作的特征,本申请将表锁也拆分为两级结构,即表级锁和分区级锁,基于不同的操作的触发,提供了差异化的上锁流程,以实现影响范围更为合理的操作互斥。基于此,若当前执行该流程的机器接收到针对分布式数据表的操作时,会判断该操作的类型,以决定接下来采用哪种上锁流程。
S104:若所述当前操作是所述DDL操作,则对所述数据表上对应的表级锁。
在本说明书一个或多个实施例中,表级锁是针对整个数据表的,DDL操作也是针对整个数据表的,因此,响应于DDL操作,至少对相应的数据表上表级锁。在上了该表级锁后直到将其解锁前,其他同样针对该数据表的DDL操作将无法执行,则通过表级锁至少实现了不同DDL操作之间的互斥。
进一步地,若有需要,还可以赋予表级锁更高的权限,使其也锁定DML操作所需操作的数据,如此,能够实现该DDL操作与DML操作以及其他DDL操作互斥。
在本说明书一个或多个实施例中,由于本方案中将表锁拆分成了两级,因此,也可以将锁定DML操作所需操作的数据这部分能力交给分区级锁,而且分区级锁相比于表级锁更有优势,其可以以更细的粒度(分区粒度),来更灵活地可选择地锁定数据表中的一部分或者全部数据。在这种情况下,若当前操作是DDL操作,除了上表级锁以外,可以进一步地还上分区级锁,以使得该DDL操作也与可能出现的DML操作互斥,进一步提高了可靠性。
S106:若所述当前操作是所述DML操作,则确定所述DML操作在所述数据表中所针对的分区,作为目标分区,为所述目标分区上对应的分区级锁。
在本说明书一个或多个实施例中,单次DML操作通常只涉及数据表中的小部分内容,因此,可以不做表级锁定,而是对所涉及的内容所在的分区进行锁定即可,如此在同一时刻不会影响别的分区。通过上对应的分区级锁,使得该DML操作与针对该数据表的DDL操作互斥。另外,若想要尽量减少同一个分区内操作冲突的可能性,也可以通过选择合适的锁实现方式,使得上对应的分区级锁后,该DML操作也与针对同一分区的其他DML操作互斥,而且在这种情况下,该DML操作当前不与针对别的分区的DML操作互斥,从而有助于提高DML操作的并发度,提高整个分布式数据库的效率。当然,在分区本身较大的情况下,也可以考虑通过作用范围更小的锁(比如,行锁等),来代替分区锁级实现不同DML操作的互斥,如此影响更小。
在本说明书一个或多个实施例中,在当前操作结束后,可以将之前相应上的表级锁或者分区级锁进行解锁,以方便后续操作。具体的解锁时间可以根据实际情况确定(比如,可能延后解锁等,总之能够满足实际的互斥需求即可),以避免在针对同一部分数据频繁进行管理维护操作时,导致频繁进行上锁和解锁,反而会影响效率。
通过图1的方法,将表锁拆分成表级锁和分区级锁两级结构,通过增加相对低频的DDL操作的上锁开销,降低了相对高频的DML操作的上锁开销,实现了分布式系统中DDL操作与DML操作之间的互斥、多个DDL操作之间的互斥,若有需求,还能够可选地实现多个DML操作之间的互斥;不仅如此,还解决了表锁本身的可扩展性问题,使得DML的锁表操作可以在数据表中的局部内容所属分区所在的分布式节点上进行,而未必要针对整个数据表进行,扩展性好而且效率高,有助于提高并发处理能力。
基于图1的方法,本说明书还提供了该方法的一些具体实施方案和扩展方案,下面继续进行说明。
在本说明书一个或多个实施例中,假定表级锁用于使其对应的DDL操作与针对同一个数据表的其他DDL操作互斥,则若当前操作是DDL操作,在对数据表上对应的表级锁之后,还可以对数据表的至少部分分区分别上对应的分区级锁,以使对应的DDL操作也与针对该至少部分分区的DML操作互斥。若有需求,也使该DML操作也与同样针对该至少部分分区的其他DML操作互斥。
在上分区级锁时,一种便利的方式是直接将该数据表的全部分区分别都上锁。不过这种方式虽然便利,也会影响效率问题。在实际应用中,在一定的时间段内,往往只有部分分区被请求进行DML操作,那么只对或者优先对这部分分区上分区级锁即可大概率满足可靠性防冲突需求,从而能够兼顾效率。
基于此,在接收到DDL操作后,可以按照预定策略或者预先训练的模型,预测从当前开始,在接下来一段较短时间内(比如,该DDL操作的持续时间)哪些分区有可能被请求进行DML操作,预测的依据比如包括:指定时间段与该时间段内频繁进行的业务(该业务涉及数据表中一部分分区)之间的对应关系、指定时间段是否为空闲时间段、各分区的数据差异情况(比如,有的分区是长期存储分区很少修改,有的分区是暂存分区可能频繁修改),等等。
在本说明书一个或多个实施例中,适应于拆分为两级的分布式表锁,采用同样分级的分布式锁管理器来管理分布式表锁,上锁和解锁,以及锁的维护管理则具体由对应的级别、对应分区的锁管理器来负责执行,参见图2~图4。在这里,锁管理器指用于管理表锁的数据结构。
图2为本说明书一个或多个实施例提供的一种分布式表锁的分级示意图。在图2中,假定某数据表具有3个分区,分别处于分布式系统的不同节点上,则对于该数据表而言,对应的分布式表锁可以包含1个表级锁,以及3个分区级锁,3个分区级锁与这3个分区一一对应。由于分布式系统的不同节点往往也对应于同一个数据表的不同分区,因此,在进行表锁分级时,可以基于节点划分分区级锁,在这种情况下,同一个分区级锁作用于对应的整个节点,或者该节点上的某个数据表的分区内容。
类似地,图3为本说明书一个或多个实施例提供的一种分布式锁管理器的分级示意图。图3与图2是相对应的,在图3中,分布式锁管理器也包含了1个表级锁管理器,以及3个分区级锁管理器。
表级锁管理器负责对表级锁的上锁解锁及其他管理维护,表级锁管理器可以部署在分布式系统中的指定机器上,指定机器比如是方便与其他节点通信的机器,比如,指定的某个管理机或者中心节点机器等。
分区级锁管理器,负责对对应的分区级锁的上锁解锁及其他管理维护。方便起见,分区锁的分布和分区保持一致,可以在分布式系统的不同节点上(比如,数据表的各分区分别所处的机器上,称为分区机器)分别部署至少一个分区级锁管理器。比如,分区1在机器A上,则分区1的分区级锁也会在由机器A上的分区级锁管理器进行管理。
基于对图2和图3的说明,图4为本说明书一个或多个实施例提供的一种应用场景下,差异化的分级上锁方案的示意图。
在图4中,响应于DDL操作上锁时,先去表级锁管理器上表级锁,然后去每个分区级锁管理器上分区级锁;而响应于DML操作上锁时,则直接去对应的分区级锁管理器上分区级锁。
具体地,本地机器接收到针对数据表的操作后;若该操作是DDL操作,则响应于该DDL操作,访问上述的指定机器,通过对该指定机器的访问,指示其上部署的表级锁管理器对数据表上对应的表级锁,不仅如此,还可以来遍历地分别访问该数据表涉及的各分区机器上的分区级锁管理器(这里也可以直接访问分区级锁管理器,不过相比于通过表级锁管理器来统一访问,效率和可靠性可能降低),通过对各分区机器的访问,指示各分区级锁管理器对数据表对应的分区上对应的分区级锁;类似地,若该操作是DML操作,则可以直接访问对应的那个分区,指示该分区上的分区级锁管理器上锁。
在本说明书一个或多个实施例中,对于当前的DDL操作而言,其他DDL操作相比于DML操作带来的冲突威胁往往更大,可以考虑严格控制上锁时序,来优先上表级锁。具体比如,若当前操作是DDL操作,则先通过表级锁管理器对数据表上对应的表级锁,并检测表级锁管理器是否已经对数据表上表级锁完毕,若否,继续等待上表级锁完毕,若是,则分别访问相关的各分区机器上的分区级锁管理器,以便上对应的分区级锁。
前面已经提到DDL操作是低频操作,其对性能不敏感,而DML是高频操作,其对性能敏感。基于此,上一段的这种差异化上锁的方案,通过增加低频DDL操作的上锁开销,降低了高频DML的上锁开销操作,全局来看是更合算的,兼顾了成本和可靠性,有效地满足了分布式系统中与DDL操作和DML操作相关的互斥需求。
上面方案还能够解决表锁可扩展性问题,以及锁管理器单点问题,具有良好的可扩展性,能够灵活地在分区(子分区)粒度上扩展分区级锁管理器,进而实现分区级锁的扩展,能够减轻已有的锁管理器的负担。
具体地,确定在分布式系统中是否增加了用于存储数据表的一个或者多个分区(这些分区可以是从已有分区中单独细分出来的子分区,也可以是复制已有分区得到的冗余的备份分区等)的扩展机器,使该扩展机器属于已有节点,或者作为分布式系统的一个新节点。若确定增加了扩展机器,则在扩展机器上也部署对应于这些分区的分区级锁管理器,从而实现了锁管理器的扩展,仅仅这样还不便于管理。部署后,在满足预定条件(即触发了上分区级锁过程)时,直接指示扩展机器上部署的分区级锁管理器,为扩展机器上的分区上对应的分区级锁;或者,还可以将扩展机器上部署的分区级锁管理器,与已有的表级锁管理器进行关联,以使能够通过表级锁管理器,指示分区级锁管理器为扩展机器上的分区上对应的分区级锁,如此也便于全局统一管理新增的锁管理器。
在本说明书一个或多个实施例中,考虑到容灾备份的情况,不同节点上可以存储有数据表的同一个分区,或者不同节点上存储的两个不同分区有一部分数据是重复的,为了越高的可靠性,会增加越多的作为备份的冗余数据。这些数据也都存储在分布式系统中,对于同样的一部分数据,同一时刻通常只有其中一份作为主副本,其处于主导地位,而其他份数据作为从副本,按照预定的同步策略,从主副本同步数据,以保持与主副本动态一致。
在有数据冗余的场景下,考虑主要针对处于主导地位的分区上分区级锁,而对于非主导地位的冗余分区,由于当前被操作的概率很小,因此可以不上锁,以提高分区上锁整体流程的执行效率。
进一步地,在需要对分区上锁的情况下,无论当前是否已经上锁,若此刻发生了分区切换,则主导地位也会切换,在这种情况下,需要对新掌握主导地位的分区也上分区级锁。这是比较简单的情况,本申请还考虑到了更复杂确实用的特殊情况,下面继续说明。
在该特殊情况下,分区划分得相对大,同一个节点同时热备份了多个不同分区的一部分数据,这部分数据是较为重要而关键的数据,在资源有限,需要兼顾效率和成本的情况下,优先热备份了这部分数据,而其他数据则冷备份或者不备份。则可以将同一个节点上备份的这些数据作为一个分区进行管理,那么在上分区级锁时,主动进行相比于普通分区粒度,兼容更细粒度的上锁动作,以最小限度地针对更小范围的数据进行互斥控制。
基于这样的思路,本说明书一个或多个实施例还提供了一种子分区级的上锁控制方案的流程示意图,如图5所示。
若当前操作是DDL操作,则对数据表上对应的表级锁,再对数据表的至少部分分区分别上对应的分区级锁,以使对应的DDL操作也与针对至少部分分区的DML操作互斥。在对数据表的至少部分分区分别上对应的分区级锁,比如按照图5中的流程执行。
图5中的流程包括以下步骤:
S502:确定所述数据表的两个分区之间是否存在数据重复部分。
若存在数据重复部分,则表示其中一个分区可能是通过该数据重复部分,为另一个分区进行部分或者全部备份,该流程尤其关注部分备份的情况。
S504:若是,则判断所述两个分区之间是否存在联动关联关系。
联动关联关系指示了哪个分区处于主导地位,两个分区将以处于主导地位的分区为准,同步两者之间相互备份的那部分数据,针对这部分数据的实时操作通常是优先针对处于主导地位的分区执行的。
S506:若存在所述联动关联关系,则对所述两个分区中在所述联动关联关系中处于主导地位的分区上对应的分区级锁,而不对另一个分区上锁。
由于无论是DDL操作还是DML操作,当前有较大概率不会直接针对该另一个分区执行,因此,可以不对另一个分区上锁。
S508:确定所述主导地位是否要切换至所述另一个分区。
当原来处于主导地位的分区暂时无法服务时,主导地位会切换至另一个分区。
S510:若是,则将至少部分所述数据重复部分确定为一个子分区,对所述子分区上对应的子分区级锁,而不对所述另一个分区中所述子分区以外的部分上锁。
在本说明书一个或多个实施例中,这两个分区的数据未必是全部一致的,该另一个分区有可能是多个不同分区分别的部分数据的备份集合。那么虽然当前可能亟需针对原本处于主导地位的分区上锁,但是在发生主导地位切换后,只要对该数据重复部分上锁,即可能达到对原本期望的互斥效果,而对于另一个分区中子分区以外的部分,当前可能并没有被DDL操作或者DML操作针对,那么,考虑先不对这部分上锁,以防止影响对这部分的正常操作。
另外,这样做还有个好处,由于上锁范围变小则开销也相对小,若片刻后主导地位又切换回去,则进一步带来的开销(比如,解锁、重新上锁等开销)也是相对小的,且这类的连锁反应越长缩减开销的效果越明显。
在本说明书一个或多个实施例中,实际应用中,主副本往往是相对固定的,从副本虽然有时会获取主动地位,但一般只是暂时的,等原主副本恢复又会切换回去,长期来看还是主要在使用主副本。基于此,考虑基于本申请提出的分布式上锁方案,主动降低主副本的负担,该方案具体包括:在上述的步骤S508(确定主导地位是否要切换至另一个分区)之前,还执行:检测针对数据重复部分的DML操作或者DDL操作的频度是否超过设定阈值,若是,则主动将主导地位切换至另一个分区,在这种情况下,原来的分区并没有发生异常,是主动切换的,以便集中地在从副本进行频次较高但可能短暂的操作,从而在降低主副本的负担的同时,也增加了从副本的使用机会,提高了其实际存在价值。这种方案,在上述的备份集合的情况下,尤其能够提高分布式系统的整体效率,有助于均衡分布式系统中各节点和设备的生命周期。若高频度操作的持续时间较长,也可以视情况地切换回原来的主副本。
基于同样的思路,本说明书一个或多个实施例还提供了上述方法对应的装置和设备,如图6、图7所示,虚线方框为可选的模块。
图6为本说明书一个或多个实施例提供的一种分布式表锁操作装置的结构示意图,所述分布式表锁包括对应于数据表的表级锁,以及分别对应于所述数据表所分布的不同分区的多个分区级锁,所述装置包括:
操作判断模块602,响应于针对所述数据表的当前操作,判断所述当前操作是DDL操作,还是DML操作;
表级上锁模块604,若所述当前操作是所述DDL操作,则对所述数据表上对应的表级锁;
分区级上锁模块606,若所述当前操作是所述DML操作,则确定所述DML操作在所述数据表中所针对的分区,作为目标分区,为所述目标分区上对应的分区级锁。
可选地,所述表级锁用于使其对应的DDL操作与针对同一个数据表的其他DDL操作互斥;
若所述当前操作是所述DDL操作,则对所述数据表上对应的表级锁之后,所述分区级上锁模块606,对所述数据表的分区分别上对应的分区级锁,以使所述对应的DDL操作也与针对所述至少部分分区的DML操作互斥。
可选地,分布式系统中的指定机器上部署有表级锁管理器;
所述表级上锁模块604,响应于所述当前操作,访问所述指定机器;
通过对所述指定机器的访问,指示所述表级锁管理器对所述数据表上对应的表级锁。
可选地,所述数据表的各分区在分布式系统中分别所处的分区机器上部署有对应的分区级锁管理器;
所述表级上锁模块604,响应于所述当前操作,分别访问各所述分区机器;
通过对各所述分区机器的访问,指示各所述分区级锁管理器对所述数据表上对应的分区级锁。
可选地,所述分布式系统中的指定机器上部署有表级锁管理器;
所述表级上锁模块604,检测所述表级锁管理器是否已经对所述数据表上表级锁完毕;
若是,则分别访问各所述分区机器上的所述分区级锁管理器,以便上对应的分区级锁。
可选地,还包括:
锁管理器扩展模块608,确定在所述分布式系统中增加了用于存储所述数据表的一个或者多个分区的扩展机器;
在所述扩展机器上部署对应于所述分区的分区级锁管理器;
在满足预定条件时,直接指示所述扩展机器上部署的所述分区级锁管理器,为所述扩展机器上的所述分区上对应的分区级锁;或者,将所述扩展机器上部署的所述分区级锁管理器,与所述表级锁管理器进行关联,以使能够通过所述表级锁管理器,指示所述分区级锁管理器为所述扩展机器上的所述分区上对应的分区级锁。
可选地,所述分区级上锁模块606,确定所述数据表的两个分区之间是否存在数据重复部分;
若是,则判断所述两个分区之间是否存在联动关联关系;
若存在所述联动关联关系,则对所述两个分区中在所述联动关联关系中处于主导地位的分区上对应的分区级锁,而不对另一个分区上锁。
可选地,所述分区级上锁模块606,在所述对所述两个分区中在所述联动关联关系中处于主导地位的分区上对应的分区级锁,而对另一个分区不上对应的分区级锁之后,确定所述主导地位是否要切换至所述另一个分区;
若是,则将至少部分所述数据重复部分确定为一个子分区,对所述子分区上对应的子分区级锁,而不对所述另一个分区中所述子分区以外的部分上锁。
可选地,还包括分区切换模块610,在所述确定所述主导地位是否要切换至所述另一个分区之前,检测针对所述数据重复部分的所述DML操作的频度是否超过设定阈值;
若是,则主动将所述主导地位切换至所述另一个分区。
可选地,所述DDL操作用于修改所述数据表的属性,或者为所述数据表创建索引;
所述DML操作用于对所述数据表中的数据进行修改。
图7为本说明书一个或多个实施例提供的一种分布式表锁操作设备的结构示意图,所述分布式表锁包括对应于数据表的表级锁,以及分别对应于所述数据表所分布的不同分区的多个分区级锁,所述设备包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够:
响应于针对所述数据表的当前操作,判断所述当前操作是DDL操作,还是DML操作;
若所述当前操作是所述DDL操作,则对所述数据表上对应的表级锁;
若所述当前操作是所述DML操作,则确定所述DML操作在所述数据表中所针对的分区,作为目标分区,为所述目标分区上对应的分区级锁。
处理器与存储器之间可以通过总线通信,设备还可以包括与其他设备通信的输入/输出接口。
基于同样的思路,本说明书一个或多个实施例还提供了对应于图1中方法的一种非易失性计算机存储介质,分布式表锁包括对应于数据表的表级锁,以及分别对应于所述数据表所分布的不同分区的多个分区级锁,所述介质存储有计算机可执行指令,所述计算机可执行指令设置为:
响应于针对所述数据表的当前操作,判断所述当前操作是DDL操作,还是DML操作;
若所述当前操作是所述DDL操作,则对所述数据表上对应的表级锁;
若所述当前操作是所述DML操作,则确定所述DML操作在所述数据表中所针对的分区,作为目标分区,为所述目标分区上对应的分区级锁。
在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(Programmable Logic Device, PLD)(例如现场可编程门阵列(Field Programmable GateArray,FPGA))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字系统“集成”在一片PLD上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑分布式表锁操作器(logic compiler)”软件来实现,它与程序开发撰写时所用的软件分布式表锁操作器相类似,而要分布式表锁操作之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(Hardware Description Language,HDL),而HDL也并非仅有一种,而是有许多种,如ABEL(Advanced Boolean Expression Language)、AHDL(AlteraHardware Description Language)、Confluence、CUPL(Cornell University ProgrammingLanguage)、HDCal、JHDL(Java Hardware Description Language)、Lava、Lola、MyHDL、PALASM、RHDL(Ruby Hardware Description Language)等,目前最普遍使用的是VHDL(Very-High-Speed Integrated Circuit Hardware Description Language)与Verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:ARC 625D、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),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本说明书可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本说明书,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置、设备、非易失性计算机存储介质实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
以上所述仅为本说明书的一个或多个实施例而已,并不用于限制本说明书。对于本领域技术人员来说,本说明书的一个或多个实施例可以有各种更改和变化。凡在本说明书的一个或多个实施例的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本说明书的权利要求范围之内。
Claims (17)
1.一种分布式表锁操作方法,所述分布式表锁包括对应于数据表的表级锁,以及分别对应于所述数据表所分布的不同分区的多个分区级锁,所述方法包括:
响应于针对所述数据表的当前操作,判断所述当前操作是数据定义语言DDL操作,还是数据操纵语言DML操作;
若所述当前操作是所述DDL操作,则对所述数据表上对应的表级锁;
若所述当前操作是所述DML操作,则确定所述DML操作在所述数据表中所针对的分区,作为目标分区,为所述目标分区上对应的分区级锁;
所述表级锁用于使其对应的DDL操作与针对同一个数据表的其他DDL操作互斥;
所述若所述当前操作是所述DDL操作,则对所述数据表上对应的表级锁之后,所述方法还包括:
对所述数据表的分区分别上对应的分区级锁,以使所述对应的DDL操作也与针对所述分区的DML操作互斥;
分布式系统中的指定机器上部署有表级锁管理器,所述指定机器是指定的某个管理机或者中心节点机器;
所述对所述数据表上对应的表级锁,具体包括:
响应于所述当前操作,访问所述指定机器;
通过对所述指定机器的访问,指示所述表级锁管理器对所述数据表上对应的表级锁。
2.如权利要求1所述的方法,所述数据表的各分区在分布式系统中分别所处的分区机器上部署有对应的分区级锁管理器;
所述对所述数据表的各分区分别上对应的分区级锁,具体包括:
响应于所述当前操作,分别访问各所述分区机器;
通过对各所述分区机器的访问,指示各所述分区级锁管理器对所述数据表上对应的分区级锁。
3.如权利要求2所述的方法,所述分布式系统中的指定机器上部署有表级锁管理器;
所述响应于所述当前操作,分别访问各所述分区机器,具体包括:
响应于所述当前操作,检测所述表级锁管理器是否已经对所述数据表上表级锁完毕;
若是,则分别访问各所述分区机器上的所述分区级锁管理器,以便上对应的分区级锁。
4.如权利要求3所述的方法,还包括:
确定在所述分布式系统中增加了用于存储所述数据表的一个或者多个分区的扩展机器;
在所述扩展机器上部署对应于所述分区的分区级锁管理器;
在满足预定条件时,直接指示所述扩展机器上部署的所述分区级锁管理器,为所述扩展机器上的所述分区上对应的分区级锁;或者,将所述扩展机器上部署的所述分区级锁管理器,与所述表级锁管理器进行关联,以使能够通过所述表级锁管理器,指示所述分区级锁管理器为所述扩展机器上的所述分区上对应的分区级锁。
5.如权利要求1所述的方法,所述对所述数据表的分区分别上对应的分区级锁,具体包括:
确定所述数据表的两个分区之间是否存在数据重复部分;
若是,则判断所述两个分区之间是否存在联动关联关系;
若存在所述联动关联关系,则对所述两个分区中在所述联动关联关系中处于主导地位的分区上对应的分区级锁,而不对另一个分区上锁。
6.如权利要求5所述的方法,所述对所述两个分区中在所述联动关联关系中处于主导地位的分区上对应的分区级锁,而对另一个分区不上对应的分区级锁之后,所述方法还包括:
确定所述主导地位是否要切换至所述另一个分区;
若是,则将至少部分所述数据重复部分确定为一个子分区,对所述子分区上对应的子分区级锁,而不对所述另一个分区中所述子分区以外的部分上锁。
7.如权利要求6所述的方法,所述确定所述主导地位是否要切换至所述另一个分区之前,所述方法还包括:
检测针对所述数据重复部分的所述DML操作的频度是否超过设定阈值;
若是,则主动将所述主导地位切换至所述另一个分区。
8.如权利要求1所述的方法,所述DDL操作用于修改所述数据表的属性,或者为所述数据表创建索引;
所述DML操作用于对所述数据表中的数据进行修改。
9.一种分布式表锁操作装置,所述分布式表锁包括对应于数据表的表级锁,以及分别对应于所述数据表所分布的不同分区的多个分区级锁,所述装置包括:
操作判断模块,响应于针对所述数据表的当前操作,判断所述当前操作是DDL操作,还是DML操作;
表级上锁模块,若所述当前操作是所述DDL操作,则对所述数据表上对应的表级锁;
分区级上锁模块,若所述当前操作是所述DML操作,则确定所述DML操作在所述数据表中所针对的分区,作为目标分区,为所述目标分区上对应的分区级锁;
所述表级锁用于使其对应的DDL操作与针对同一个数据表的其他DDL操作互斥;
若所述当前操作是所述DDL操作,则对所述数据表上对应的表级锁之后,所述分区级上锁模块,对所述数据表的分区分别上对应的分区级锁,以使所述对应的DDL操作也与针对所述分区的DML操作互斥;
分布式系统中的指定机器上部署有表级锁管理器,所述指定机器是指定的某个管理机或者中心节点机器;
所述表级上锁模块,响应于所述当前操作,访问所述指定机器;
通过对所述指定机器的访问,指示所述表级锁管理器对所述数据表上对应的表级锁。
10.如权利要求9所述的装置,所述数据表的各分区在分布式系统中分别所处的分区机器上部署有对应的分区级锁管理器;
所述表级上锁模块,响应于所述当前操作,分别访问各所述分区机器;
通过对各所述分区机器的访问,指示各所述分区级锁管理器对所述数据表上对应的分区级锁。
11.如权利要求10所述的装置,所述分布式系统中的指定机器上部署有表级锁管理器;
所述表级上锁模块,响应于所述当前操作,检测所述表级锁管理器是否已经对所述数据表上表级锁完毕;
若是,则分别访问各所述分区机器上的所述分区级锁管理器,以便上对应的分区级锁。
12.如权利要求11所述的装置,还包括:
锁管理器扩展模块,确定在所述分布式系统中增加了用于存储所述数据表的一个或者多个分区的扩展机器;
在所述扩展机器上部署对应于所述分区的分区级锁管理器;
在满足预定条件时,直接指示所述扩展机器上部署的所述分区级锁管理器,为所述扩展机器上的所述分区上对应的分区级锁;或者,将所述扩展机器上部署的所述分区级锁管理器,与所述表级锁管理器进行关联,以使能够通过所述表级锁管理器,指示所述分区级锁管理器为所述扩展机器上的所述分区上对应的分区级锁。
13.如权利要求9所述的装置,所述分区级上锁模块,确定所述数据表的两个分区之间是否存在数据重复部分;
若是,则判断所述两个分区之间是否存在联动关联关系;
若存在所述联动关联关系,则对所述两个分区中在所述联动关联关系中处于主导地位的分区上对应的分区级锁,而不对另一个分区上锁。
14.如权利要求13所述的装置,所述分区级上锁模块,在所述对所述两个分区中在所述联动关联关系中处于主导地位的分区上对应的分区级锁,而对另一个分区不上对应的分区级锁之后,确定所述主导地位是否要切换至所述另一个分区;
若是,则将至少部分所述数据重复部分确定为一个子分区,对所述子分区上对应的子分区级锁,而不对所述另一个分区中所述子分区以外的部分上锁。
15.如权利要求14所述的装置,还包括分区切换模块,在所述确定所述主导地位是否要切换至所述另一个分区之前,检测针对所述数据重复部分的所述DML操作的频度是否超过设定阈值;
若是,则主动将所述主导地位切换至所述另一个分区。
16.如权利要求9所述的装置,所述DDL操作用于修改所述数据表的属性,或者为所述数据表创建索引;
所述DML操作用于对所述数据表中的数据进行修改。
17.一种分布式表锁操作设备,所述分布式表锁包括对应于数据表的表级锁,以及分别对应于所述数据表所分布的不同分区的多个分区级锁,所述设备包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够:
响应于针对所述数据表的当前操作,判断所述当前操作是DDL操作,还是DML操作;
若所述当前操作是所述DDL操作,则对所述数据表上对应的表级锁;
若所述当前操作是所述DML操作,则确定所述DML操作在所述数据表中所针对的分区,作为目标分区,为所述目标分区上对应的分区级锁;
所述表级锁用于使其对应的DDL操作与针对同一个数据表的其他DDL操作互斥;
所述若所述当前操作是所述DDL操作,则对所述数据表上对应的表级锁之后,所述方法还包括:
对所述数据表的分区分别上对应的分区级锁,以使所述对应的DDL操作也与针对所述分区的DML操作互斥;
分布式系统中的指定机器上部署有表级锁管理器,所述指定机器是指定的某个管理机或者中心节点机器;
所述对所述数据表上对应的表级锁,具体包括:
响应于所述当前操作,访问所述指定机器;
通过对所述指定机器的访问,指示所述表级锁管理器对所述数据表上对应的表级锁。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211092823.2A CN115203226B (zh) | 2022-09-08 | 2022-09-08 | 一种分布式表锁操作方法、装置以及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211092823.2A CN115203226B (zh) | 2022-09-08 | 2022-09-08 | 一种分布式表锁操作方法、装置以及设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115203226A CN115203226A (zh) | 2022-10-18 |
CN115203226B true CN115203226B (zh) | 2023-02-24 |
Family
ID=83572307
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211092823.2A Active CN115203226B (zh) | 2022-09-08 | 2022-09-08 | 一种分布式表锁操作方法、装置以及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115203226B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116303489B (zh) * | 2023-01-16 | 2023-09-01 | 北京优炫软件股份有限公司 | 一种分层局部式表锁的实现方法以及实现系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107239485A (zh) * | 2017-04-18 | 2017-10-10 | 北京小度信息科技有限公司 | 数据库操作方法、装置及系统 |
CN113010533A (zh) * | 2021-03-01 | 2021-06-22 | 上海钧正网络科技有限公司 | 基于加锁限制的数据库访问方法、系统、终端及存储介质 |
CN114661718A (zh) * | 2022-03-28 | 2022-06-24 | 北京海量数据技术股份有限公司 | Opengauss平台下在线创建本地分区索引的方法及系统 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9501502B2 (en) * | 2012-11-30 | 2016-11-22 | Sap Ag | Locking protocol for partitioned and distributed tables |
CN104573948A (zh) * | 2014-12-30 | 2015-04-29 | 国家电网公司 | 基于分布式计算的配网拓扑分析方法 |
-
2022
- 2022-09-08 CN CN202211092823.2A patent/CN115203226B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107239485A (zh) * | 2017-04-18 | 2017-10-10 | 北京小度信息科技有限公司 | 数据库操作方法、装置及系统 |
CN113010533A (zh) * | 2021-03-01 | 2021-06-22 | 上海钧正网络科技有限公司 | 基于加锁限制的数据库访问方法、系统、终端及存储介质 |
CN114661718A (zh) * | 2022-03-28 | 2022-06-24 | 北京海量数据技术股份有限公司 | Opengauss平台下在线创建本地分区索引的方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN115203226A (zh) | 2022-10-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10552372B2 (en) | Systems, methods, and computer-readable media for a fast snapshot of application data in storage | |
CN108459898B (zh) | 一种资源回收方法及装置 | |
US4459658A (en) | Technique for enabling operation of a computer system with a consistent state of a linked list data structure after a main memory failure | |
CN101576830B (zh) | 数据库事务锁机制的死锁检测方法及装置 | |
US8381150B2 (en) | Method for performing a parallel static timing analysis using thread-specific sub-graphs | |
US8220001B2 (en) | Adaptive cluster timer manager | |
CN110059090B (zh) | 一种位图索引的写入/转储/合并/查询方法和装置 | |
CN110275876B (zh) | 用于数据库横向扩展的方法及装置 | |
WO2023082537A1 (zh) | 一种基于拟态数据库的网络操作系统设计方法 | |
CN109033127B (zh) | 一种同步数据校验方法、装置以及设备 | |
JP2007072975A (ja) | ディスクへのトランザクション・データ書き込みの方式を動的に切り替える装置、切り替える方法、及び切り替えるプログラム | |
CN115203226B (zh) | 一种分布式表锁操作方法、装置以及设备 | |
Moniz et al. | Blotter: Low latency transactions for geo-replicated storage | |
CN110597614A (zh) | 一种资源调整方法及装置 | |
CN107977446A (zh) | 一种基于数据分区的内存网格数据加载方法 | |
CN110059023B (zh) | 一种刷新级联缓存的方法、系统及设备 | |
CN111386521B (zh) | 在数据库集群中重分布表数据 | |
US10909101B2 (en) | Updating and querying a bitmap index | |
CN116048800A (zh) | 一种数据处理的方法、装置、存储介质及电子设备 | |
US7117496B1 (en) | Event-based synchronization | |
CN103226592A (zh) | 一种基于数据库的文件系统及文件存储方法 | |
CN113297173A (zh) | 分布式数据库集群管理方法及装置、电子设备 | |
US20220197761A1 (en) | Cloud architecture for replicated data services | |
CN115587099A (zh) | 一种分布式的表锁应用方法、装置、存储介质及电子设备 | |
CN110825734B (zh) | 平衡树的并发更新方法及读写系统 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |