CN112867999A - 基于版本的表锁定 - Google Patents
基于版本的表锁定 Download PDFInfo
- Publication number
- CN112867999A CN112867999A CN202080004335.4A CN202080004335A CN112867999A CN 112867999 A CN112867999 A CN 112867999A CN 202080004335 A CN202080004335 A CN 202080004335A CN 112867999 A CN112867999 A CN 112867999A
- Authority
- CN
- China
- Prior art keywords
- transaction
- database
- lock
- version
- database 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.)
- Granted
Links
- 238000000034 method Methods 0.000 claims abstract description 84
- 238000012545 processing Methods 0.000 claims abstract description 42
- 230000004044 response Effects 0.000 claims abstract description 31
- 230000008569 process Effects 0.000 claims abstract description 30
- 230000026676 system process Effects 0.000 claims description 12
- 238000010586 diagram Methods 0.000 description 16
- 230000006870 function Effects 0.000 description 5
- 238000013459 approach Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000000717 retained effect Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000007405 data analysis Methods 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 229920000638 styrene acrylonitrile Polymers 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
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/21—Design, administration or maintenance of databases
-
- 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/21—Design, administration or maintenance of databases
- G06F16/219—Managing data history or versioning
-
- 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/2379—Updates performed during online database operations; commit processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
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)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
公开了并行处理事务相关的技术。计算机***可以保存具有若干版本的数据库表。每一个版本都可以识别数据库表的对应部分,允许与所述版本相关联的事务访问该对应部分。该计算机***可以接收第一请求以执行第一事务来修改数据库表的定义。该计算机***可以接收第二请求以执行第二事务来修改数据库表的定义。响应于确定第一事务和第二事务与若干版本中的不同版本相关联,该计算机***可以并行处理第一事务和第二事务。
Description
背景技术
本公开通常涉及基于版本的表锁定。
相关技术说明
现代数据库***通常执行管理***,该管理***允许用户以能够高效访问和操作的组织方式存储信息集合。此类数据库***经常存储由行和列组成的数据库表中的信息,其中每一列都限定一组信息。例如,一家公司可能希望存储关于他们客户的信息,诸如,客户的姓名、电子邮件地址和电话号码。因此,能够创建包含对应每条信息的列(即,对应姓名的列、对应电子邮件地址列以及对应电话号码的列)的数据库表。当将信息***到数据库表中时,在数据库表中增加新记录(对应于数据库表的行),其中所述记录可以对应所述数据库表的每个属性/列提供信息。
附图说明
图1为根据一些实施例的示出能够进行基于版本的表锁定的***的示例性要素的框图。
图2为根据一些实施例的示出包含代理表的数据库的示例性要素的框图。
图3为根据一些实施例的示出数据库***的示例性要素的框图。
图4为根据一些实施例的示出锁定管理器的示例性要素的框图。
图5为根据一些实施例的示出锁定冲突表的示例性要素的框图。
图6-8为根据一些实施例的示出与处理事务相关的示例性方法的流程图。
图9为根据一些实施例的示出示例性计算机***的框图。
本公开包括对“一个实施例”或“一实施例”的引用。出现的短语“在一个实施例”或“在一实施例”不一定指的是同一个实施例。依照本公开,具体特征、结构或特性可以任意合适方式组合。
在本公开中,不同的实体(被不同地称作“单元”、“电路”、其他组件等)可以被描述或主张为“配置”为执行一个或多个任务或操作。此处所使用的这种表达方式——[实体]配置为[执行一个或多个任务]——指的是结构(即,一些物理结构,诸如电子电路)。更具体地,所使用的这种表达方式指的是该结构布置为在操作过程中执行一个或多个任务。一结构能够被称为“配置为”尽管当前没有操作该结构,但是执行某一任务。“网络接口配置为通过网络进行连通”意在覆盖,例如,集成电路,该集成电路具有在操作过程中执行该功能的电路,尽管当前没有使用讨论中的集成电路(例如,电源没有连接至集成电路)。因此,描述或叙述为“配置为”执行某一任务的实体指的是一些物理实体,诸如装置、电路、可执行用于执行任务的记忆存储程序指令等。此处不使用该短语以意指一些无形实体。因此,此处不使用“配置为”概念用以意指软件实体,诸如应用编程接口(API)。
术语“配置为”不意味着“可配置为”。未编程FPGA,例如,不会被视作“配置为”执行某一具体功能,尽管也可以是“可配置为”执行所述功能以及也可以是“可配置为”执行编程后的功能。
如在此所使用的,术语“第一”、“第二”等用作名词的标号,它们优于但并不暗示任何类型的次序(例如,空间的、时间的、逻辑的等),除非特别声明。例如,在具有八个处理核的处理器中,术语“第一”处理核和“第二”处理核能够用于指示八个处理核中的任意两个。换而言之,第一处理核和第二处理核不限于,例如,处理核0和1。
如在此所使用的,术语“基于”用于描述影响确定的一个或多个因素。该术语不排除附加因素可能影响确定的可能。即,确定可以仅基于指定因素或基于指定因素以及其他未指定因素。考虑到短语“基于B确定A”。该短语详细说明了B是用于确定A或影响A确定的一个因素。该短语不排除A的确定也可以基于某一其他因素,诸如,C。该短语也意在覆盖一实施例,其中,仅基于B确定A。如在此所使用的,短语“基于”由此与短语“至少部分基于”同义。
具体实施方式
在一些案例中,数据库***可以处理数据库表上多个事务,所述多个事务由不同应用程序初始化。当处理一具体事务时,数据库***经常获得数据库表上的锁,该锁允许数据库***操作与数据库表相关联的数据。然而,当初始事务保留锁时,此类锁能够防止数据库***处理另一事务。由此,可以保留应用程序等待待处理的事务,该应用程序被在数据库表上保留锁的另一事务挂起。
在一些案例中,数据库表可以与多个版本相关联,其中,每个版本展示出所述数据库表的具体视图。当正在处理事务时,数据库***可以仅从数据库表的列中查看数据,所述列对应于与所述事务相关联的版本。然而,数据库***可以获得整个数据库表上的锁,当保留锁时,所述锁防止处理与数据库表相关联的其他事务。本发明人已意识到这种情形可能是不合乎需要的,因为其他事务可能与不同版本相关联,由此处理这些事务可能不会与保留锁的事务冲突。例如,考虑到为用户不可用的数据库表未来版本增加数据库触发器的第一事务,此类事务可能不会影响正在数据库表早期版本上操作的用户。在现有方法中,第一事务可能在数据库表上持有全局锁,所述全局锁防止用户在早期版本上进行操作。因此,本发明人已意识到允许在相同数据库表上并行处理与不同版本相关联的特定事务是理想的。
本公开描述了用于以并行方式处理与相同数据库表的不同版本相关联的事务的各种技术。如此处所使用的,当用于处理事务(或其他工作项)的上下文中时,短语“以并行方式”(或“并行地”)指的是以重叠方式处理两个或更多事务,这意味着存在其间同时处理两个或更多事务的时间点或时间段。例如,如果数据库***开始处理第一事务,并且在仍然处理第一事务的同时稍后开始处理第二事务,则第一事务和第二事务被称作并行处理。但是,如果在处理第二事务之前,数据库***等待至第一事务处理完成,则在本公开的上下文中,第一事务和第二事务没有被并行处理。相反,串行处理此类事务。
在以下描述的各种实施例中,数据库***保存具有多个版本的数据库表,其中,每个版本都可以识别数据库表的对应部分(例如,字段集合),如果可以,允许与所述版本相关联的事务访问和修改所述数据库表的对应部分。在各种实施例中,数据库***还可以保存对应数据库表每个版本的代理表。对于给定事务,数据库***可以获得特定代理表上的锁以便代理表被锁定的同时防止处理具有相同版本的其他事务。
例如,数据库***可以接收执行用于修改数据库表定义的第一事务的请求。在各种案例中,数据库***可以获得对应第一事务的两个锁。数据库***可以获得数据库表上的第一锁——该锁可以允许其他事务与数据库表交互,但是可以使得基础数据库表免于删除。数据库***也可以获得具有第一事务版本的代理表上的第二锁——在保留第二锁的同时,该第二锁可以防止在数据库表上处理具有相同版本的其他事务。此后,数据库***可以接收执行用于修改存储在数据库表中的数据的第二事务的请求。类似地,数据库***可尝试获得两个锁:一个在数据库表上,并且一个在匹配第二事务版本的代理表上。
因此,基于与相同数据库表的不同版本相关联的事务,数据库***可并行处理第一事务和第二事务。但是,在一些案例中,当试图获得对应第二事务的第二锁时,由于对应的代理表被第一事务锁定,所以如果第二事务与同第一事务相同的版本相关联,则数据库***可能无法获得第二锁。因此,由于第一事务和第二事务与相同版本相关联,所以数据库***可能不会并行处理第一事务和第二事务。在各种实施例中,因为第一事务和第二事务牵涉相同“类型”的数据库操作,所以数据库***还可考虑第一事务和第二事务是否可能存在冲突(例如,操作相同数据)。即,在一些案例中,尽管当数据库操作与不同版本相关联时,数据库操作也可能产生冲突——由此产生数据毁损。例如,如果在相同数据行上操作两个不同版本数据库操作,则所述数据行的不同版本数据库操作可能会毁损数据行中的数据。因此,数据库***可以查找数据库操作的类型——所述类型包括数据操作语言(DML)操作、数据定义语言(DDL)操作、数据控制语言(DCL)操作和事务控制语言(TCL)操作。在本公开的上下文中,如果两个操作都正确操作,则如果保证执行两个操作将不会毁损数据库中的数据,那么两个数据库操作为正交类型——由于操作的性质。例如,对于DML操作,DDL操作为正交类型。如果两个数据库操作与相同类型的数据库操作相关联,则数据库***可以选择不并行处理它们。
因为这些技术考虑到根据所述数据库表,与待并行处理的数据库表的不同版本相关联的多个事务,所以这些技术的优点可能优于现有方法。例如,在现有方法中,即使在那些事务与不同版本相关联的情况下,如果第一事务修改了数据库表的具体版本的定义(例如,通过增加数据库触发器),则将会隔离修改数据库表的不同部分的其他事务(例如,修改了数据行)直至第一事务完成。然而,本发明的技术考虑到待并行处理的第一事务和其他事务。现在,下面将讨论用于实施这些技术的***,从图1开始。
现在转到图1,示出了***100的框图。***100是通过硬件或硬件程序与软件程序的组合来执行的一组元件。在所示出的实施例中,***100包括数据库***110(包括事务120)和数据库130。正如进一步说明的,事务120A包括数据操作语言(DML)操作122和版本125A。事务120B包括数据定义语言(DDL)操作124和版本125B。还示出,数据库130包括具有表定义142和行数据144的数据库表140。在一些实施例中,可以与示出的不同的方式执行***100。例如,数据库***110可以包括数据库130,***100可以包括多个数据库130和/或数据库***110等。
在各种实施例中,***100执行允许平台服务的用户开发、运行与管理应用程序的所述平台服务。例如,***100可以是通过多租户***托管的若干用户/租户提供各种功能的多租户***。因此,***100可以执行来自各种不同用户(例如,***100的提供商和租户)的软件程序以及向***100的用户、***100的数据库(例如,数据库130)和与***100相关联的其他外部实体提供代码、表单、网页和其他数据。为了处理软件应用程序和数据库130之间的交互,***100包括数据库***110。
在各种实施例中,数据库***110执行各种操作以管理数据库130,包括数据存储、数据检索和数据操作。同样地,数据库***110可以向希望与数据库130交互的其他***提供数据库服务。此类数据库服务可包括访问和存储针对数据库130的数据库表140保存的数据。例如,应用程序服务器可向包括事务120的数据库***110发布事务请求115,事务120指定对应具体数据库表140的待写入到数据库130中的具体数据库记录。
在各种实施例中,事务120为工作单元,所述工作单元指定执行一个或多个操作/任务以访问以及有可能修改存储在数据库130中的内容。事务120可以指定不同类型的数据库操作,不同类型的数据库操作包括数据操作语言(DML)操作122、数据定义语言(DDL)操作124、数据控制语言操作和事务控制语言操作。如示例性描述的,事务120A指定DML操作122。在各种实施例中,DML操作122为可以访问、***、修改和/或删除存储在数据库表140中的行数据144的操作。DML操作122可以包括SQL命令,诸如,选择、***、更新、删除、合并等。在各种实施例中,DDL操作124为可以修改数据库表140的表定义142的操作。DDL操作124可以包括SQL命令,诸如,创建、更改、删除等。在各种实施例中,事务120指定数据库表140的版本125,基于数据库表140的版本125执行数据库操作(例如,DML操作122)。如下面进一步所解释的,版本125可以识别数据库表140的对应部分,从而允许与所述版本相关联的事务120访问对应部分。
在各种实施例中,数据库130为以允许访问、存储和操作信息的方式组织的信息集合。因此,数据库130可以包括允许数据库***110根据数据库130中的信息执行操作(例如,访问、存储等等)的支撑软件。数据库130可以由单个存储装置或一起连接到网络(例如,存储连接网络)且配置为冗余地存储信息以防止数据丢失的多个存储装置执行。在一些实施例中,使用具有多个级别的日志结构的合并树(LSM树)执行数据库130。级别中的一个或多个可以包括数据库记录,所述数据库记录在写入到磁盘上存储介质上保存的级别中之前,缓存到内存缓冲区中。这些数据库记录可对应于数据库表140中的行并且可被包括在行数据144中。
在各种实施例中,数据库表140为信息集合,包括组织为具有行和列的结构化格式的数据元。在各种实施例中,列可以定义数据库表140中的数据子集或数据字段,行为数据库表140提供值。在一些案例中,数据库表140可以为多个用户/租户存储数据。因此,所述数据库表140可以包括将租户定义为数据子集的列,在数据子集下,数据库表140的每个行都指定对应于该行数据的租户。在各种实施例中,在表定义142中指定包括在数据库表140中的列。
在各种实施例中,表定义142为信息集合,该信息集合定义与数据库表140相关联的元数据,诸如,数据库表的结构(例如,列)和数据库触发器。当针对对应的数据库表140指定列时,表定义142可以指定与所述列相关联的一个版本125的范围。同样地,具有在该范围内的版本125的事务120可以访问该列及其数据。然而,具有该范围之外的版本125的事务120可能不知道该列的存在。因此,列在数据库表140的一个或多个版本125中是可用的,但是在某一后续版本125中停用。
在各种实施例中,数据库触发器为软件程序集合,可执行该软件程序集合以响应于具体数据库表140上发生的特定事件来执行具体动作。例如,可能响应于DML操作122(例如,***)的性能执行数据库触发器。该数据库触发器可能基于DML操作122修改属于另一数据库表140的数据。在一些案例中,数据库触发器可以与在表定义142中指定的版本125相关联。因此,可以基于对应事务120操作的数据库表140的具体版本125来执行数据库触发器。具有第一版本125的事务120不会触发具有相同数据库表140的第二版本125的数据库触发器。在一些案例中,因为数据库表140的形状可能根据版本125(例如,由于列是否可见)而不同,所以数据库表的每个版本125都可以具有在合适的表定义142中指定的其本身对应的数据库触发器集合。
在各种案例中,当为数据库表140增加版本125时,对应新版本125定义一个或多个数据库触发器可能是理想的。因此,如果其他事务120影响相同数据库表140的不同版本,则数据库***110可以允许增加数据库触发器的事务120与那些其他事务120并行执行。在各种实施例中,如果两个事务120牵涉不同类型的数据库操作(例如,DML与DDL)和不同版本125,则数据库***110可以并行处理那些事务;否则,这两个事务120可以串联方式处理。如下面进一步所解释的,在各种案例中,数据库***110可以使用加锁机制来确定是否能够并行处理事务120集合。
现在转到图2,示出了数据库***110和数据库130的框图。所示出的实施例包括应用程序服务器200、数据库***110和数据库130。进一步如图所示,数据库***110包括事务120,事务120具有版本125并且与基锁220和代理所230相关联。又如所述的,数据库130包括基数据库表140和代理表210。在一些实施例中,可以与所示出的不同的方式执行所示出的实施例。例如,与应用程序服务器200相比,不同类型的服务器可以与数据库***110,诸如,网络服务器,进行交互。
在各种实施例中,应用程序服务器200为软件程序集合,可执行软件程序集合以提供应用程序在其中运行的服务器环境。如所示出的,应用程序服务器200可以通过向数据库***110发送事务请求115来与数据库***110进行交互。例如,通过用户装置与应用程序服务器200接口的用户可以请求数据库130中的数据。因此,所述应用程序服务器200可以发布事务请求115,该事务请求115指定事务120以检索数据库130中所请求的数据。为了处理事务120,数据库***110可以与基数据库表140和代理表210进行交互。
在各种实施例中,代理表210为对应于基数据库表140的一个或多个版本125的可锁定数据库对象。在一些案例中,代理表210可以是不具有行数据144且具有不指定列和/或数据库触发器的表定义142的数据库表140——即,代理表210可以是作为数据库***110使用的加锁机制的参考点存在的数据库表140。如下面进一步所解释的,当数据库***110处理事务120以操作数据库表140时,数据库***110可以获得代理表210上的代理锁230,代理表210 1)具有与事务120相同的版本125并且2)与具体数据库表140对应。当数据库***110试图处理具有相同版本125的其他事务120时,在所述第一事务120保留锁的同时,数据库***110将不能获得代理表210上的代理锁230。因此,其他事务120可能不会在所述数据库表140上进行操作,直至第一事务120对其代理锁230进行解锁。
因为对对应的数据库表140(和/或数据库130的架构)进行了改变,所以数据库***110可以创建或删除代理表210。在各种实施例中,当初始创建数据库表140时,数据库***110针对数据库表140创建代理表210。因为数据库表140变为与附加版本125相关联,所以数据库***110可以创建附加代理表210——例如,数据库***110可以针对所述数据库表的每个新版本都创建一新代理表210。当删除数据库表140时,数据库***110可以删除对应于所述数据库表的全部代理表210。
如同先前所解释的,在各种实施例中,当数据库***110处理事务120时,数据库***110可以获得至少两个锁:基锁220和代理锁230。这两个锁可以允许在防止并行处理与相同版本125相关联的事务120的同时,并行处理与不同版本125相关联的事务。
在各种实施例中,基锁220为对应事务120能够在数据库表140上获得的锁。在各种案例中,基锁220为相对于代理锁230的“弱”锁,代理锁230可以被认为是“稍强”锁。可以有各种程度的锁强度,其中,稍弱锁允许更多并行活动,并且稍强锁允许较少并行活动。由此,在一些案例中,在最强锁可以获得独占访问(即,在具体对象上保留最强锁的同时,只有锁的持有人能够访问/修改所述对象,例如,表)的同时,最弱锁可以允许完全并行访问。基锁220可以是稍弱锁(相对于代理锁230),在基数据库表140上操作对应的事务120的同时,稍弱锁用于避免所述数据库表140被删除;这样的稍弱锁可以意味着事务120也意图在基数据库表140上进行操作。当在数据库表140上获得基锁220作为稍弱锁时,其他事务120也可以在相同数据库表140上获得基锁220。在一些案例中,基锁220可以是防止在数据库表140上操作其他事务的稍强锁。例如,可以在无版本的事务120的情况下获得强基锁220。在各种实施例中,在事务120已经完成或已经被数据库***110回退之后,可以为所述事务120解锁基锁220。当讨论基锁220为锁定在表级时,本文所讨论的技术可以扩展至其他级别(例如,数据库级别、文件级别、页面级别、行级别等等)。
在各种实施例中,代理锁230为针对事务120能够在代理表210上获得的锁。在各种案例中,可以作为强锁获得代理锁230,强锁防止其他事务120在相同代理表210上获得它们自身的代理锁230。在为特定事务120保留代理锁230的同时,数据库***110可以在对应的数据库表140的部分上执行数据库操作,这些部分与相同版本125相关联。可以延后期望在数据库表140的相同版本125上操作的其他事务120,直至另一事务120保留的代理锁230被解锁。在各种实施例中,在事务120已经完成或已经被数据库***110回退之后,可以为所述事务120解锁代理锁230。
现在转到图3,示出了数据库***110的框图。在所示出的实施例中,数据库***110包括数据库服务器300和锁定管理器310。又如所示出的,数据库服务器300包括事务120,并且锁定管理器310包括具有基锁220和代理锁230的锁315。在一些实施例中,可以与示出的不同的方式执行数据库***110。例如,数据库***110可能不包括锁定管理器310;相反,锁定管理器310可以是外部元件。
在各种实施例中,数据库服务器300为软件程序集合,可执行软件程序集合以执行各种操作从而管理数据库130,包括数据分析、数据存储、数据检索和数据操作。数据库服务器300可以接收来自应用程序服务器200和***100的其他实体(例如,其他服务器)的事务请求115。为了处理在那些事务请求中识别的事务120,数据库服务器300可以与锁定管理器310连通以获得一个或多个锁315。例如,数据库服务器300可以获得对应指定版本125的事务120的基锁220和代理锁230。
在各种实施例中,锁定管理器310为软件程序结合,可执行软件程序以代表一个或多个数据库服务器300管理锁315。当数据库服务器300希望执行在事务120中指定的一个或多个数据库操作时,数据库服务器可以与锁定管理器310连通以获得锁315(例如,基锁220和代理锁230)。锁定管理器310可以确定锁315是否能够分配给具体事务120。例如,锁定管理器310可以确定代理锁230是否已经分配给另一事务120。如果已经分配完代理锁230,则可能不会为具体事务120分配一个代理锁230;然而,如果还未分配完代理锁230,则分配一个代理锁230给具体事务120。
现在转到图4,示出了锁定管理器310的框图。在所示出的实施例中,锁定管理器310包括锁315、目录表410和冲突引擎420。进一步如所示出的,目录表410包括代理表信息412和基表信息414。在一些实施例中,可以与示出的不同的方式执行锁定管理器310。例如,锁定管理器310可以包括多个目录表410。
在各种实施例中,目录表410为识别基数据库表140、代理表210和那些表之间的关系的信息集合。在各种实施例中,代理表信息412指定代理表210。对应于那些代理表中的每一个,已经分配完代理表210,并且代理表210连同对应的版本125一起识别对应的数据库表140。在各种实施例中,基表信息414指定已被分配的数据库表140。保存在目录表410中的信息被传递给冲突引擎420以协助冲突引擎420确定是否存在锁冲突。
在各种实施例中,冲突引擎420为软件程序集合,可执行软件程序集合以分配锁315并且确定当试图分配锁315时是否存在锁冲突。响应于接收针对事务120的具体基数据库表140上的基锁220的分配请求,冲突引擎420可以确定基锁220是否已经被分配给具体基数据库表140。在各种案例中,冲突引擎420可以通过锁315进行搜索以确定是否已经分配完基锁220。如果没有一个基锁220被分配,或者如果只有弱基锁220被分配给具体基数据库表140,则冲突引擎420可以将基锁220分配给事务120;否则冲突引擎420可以指示不能分配基锁220直至解锁当前具体基锁220。
响应于接收针对事务120的具体基数据库表210上的代理锁230的分配请求,冲突引擎420可以确定代理锁230是否已经被分配给所述具体基数据库表210。在各种案例中,冲突引擎420可以通过锁315进行搜索以确定是否已经分配代理锁220。如果没有一个代理锁220被分配给具体代理表210,则冲突引擎420可以将代理锁230分配给事务120;否则冲突引擎420可以指示不能分配代理锁230直至解锁当前具体代理锁230。
现在转到图5,描述了锁定冲突表500的框图。在所示出的实施例中,锁定冲突表500包括四个框:对应于两个DML操作122的框501、对应于DML操作122和DDL操作124的框502、对应于DML操作122和DDL操作124的框503以及对应于两个DDL操作124的框504。用条纹示出框501和504以指示独立于版本125发生的锁冲突。
正如所示,两个DML操作122彼此冲突,并且两个DDL操作124也彼此冲突。在各种案例中,这些冲突可以独立于与那些操作相关联的版本125而发生。因此,在一些案例中,如果数据库***110接收两个事务120(其每一个都指定相同类型的数据库操作,例如,DML操作122或DDL操作124),则数据库***110可能不会并行处理那些事务,尽管在事务与不同版本125相关联的情况下。如框502和503所示,DML操作122和DDL操作124不会发生冲突——它们可能在考虑版本125的情况下发生冲突。如果数据库***110接收两个事务120(其每一个都指定不同类型的数据库操作并且与不同版本125相关联),则数据库***110可以并行处理那些事务。
现在转到图6,示出了方法600的流程图。为了处理事务(例如,事务120),方法600为计算机***(例如,数据库***110)执行的方法的一个实施例。在一些实施例中,方法600可以包括比所示出的多或少的步骤。例如,计算机***可以修改数据库表(例如,数据库表140)的定义(例如,表定义142),以增加根据满足的具体条件(例如,响应于***到数据库表中的数据)执行的数据库触发器。
方法600从步骤610开始,其中计算机***保存具有若干版本(例如,版本125)的数据库表。在各种实施例中,版本中的每一个都识别数据库表的对应部分(例如,字段),允许与所述版本相关联的事务访问对应部分。计算机***可以针对数据库表的若干版本中的每一个保存代理表(例如,代理表210)。代理表可以允许针对给定事务(例如,事务120)从代理表获得代理锁(例如,代理锁230)。当针对给定事务保留代理锁时,可以防止计算机***处理与对应于代理表的版本相关联的数据库表的另一事务。
响应于确定数据库表与新版本相关联,计算机***可以对应数据库表的新版本创建新代理表。响应于删除数据库表,计算机***可以删除针对数据库表的若干版本保存的每个代理表。
在步骤620中,计算机***接收第一请求(例如,事务请求115)以执行第一事务(例如,事务120)来修改数据库表的定义。在一些实例中,第一事务可以指定用于修改数据库表定义的数据定义语言(DDL)操作(例如,DDL操作124)。
在步骤630中,计算机***接收第二请求(例如,事务请求115)以执行第二事务(例如,事务120)来修改存储在数据库表中的数据。在一些实例中,第二事务可以指定用于修改存储在数据库表中的数据的数据操作语言(DML)操作(例如,DML操作122)。
在步骤640中,响应于确定第一事务和第二事务与若干版本中的不同版本相关联,计算机***并行处理第一事务和第二事务。在一些案例中,计算机***可以接收第三请求以执行指定用于修改数据库表定义的第二DDL操作的第三事务。计算机***可以基于每一个都指定DDL操作的第一事务和第三事务按顺序处理第一事务和第三事务。第一事务和第三事务可以与若干版本中的不同版本相关联。在一些案例中,计算机***可以接收第三请求以执行指定用于修改存储在数据库表中的数据的第二DDL操作的第三事务。计算机***可以基于每一个都指定DML操作的第一事务和第三事务按顺序处理第一事务和第三事务。第一事务和第三事务可以与若干版本中的不同版本相关联。
在一些实施例中,计算机***获得对针对第一事务数据库表的第一锁(例如,基锁220)和对应于与第一事务相关联的版本的具体代理表上的第二锁(例如,代理锁230)。当为第一事务保留第一锁时,第一锁可以允许计算机***处理第二事务来修改存储在数据库表中的数据。当为第一事务保留第二锁时,第二锁可以防止计算机***处理与第一事务的版本相关联的数据库表上的另一事务。在一些案例中,在第二锁之前获得第一锁;在其他案例中,在第一锁之前获得第二锁。
现在转到图7,示出了方法700的流程图。为了处理事务(例如,事务120),方法700为计算机***(例如,数据库***110)执行的方法的一个实施例。可以通过执行存储在非易失性计算机可读介质上的程序指令集合来实施方法700。在一些实施例中,方法700可以包括比所示出的多或少的步骤。例如,计算机***可以修改数据库表(例如,数据库表140)的定义(例如,表定义142),以增加根据满足的具体条件(例如,响应于***到数据库表中的数据)执行的数据库触发器。
方法700从步骤710开始,其中计算机***保存具有若干版本(例如,版本125)的数据库表(例如,数据库表140)。在各种案例中,版本中的每一个都可以识别数据库表的,允许与所述版本相关联的事务访问对应部分。例如,与具体版本相关联的数据库表的字段集合可访问具有相同具体版本的事务。
在步骤720中,计算机***接收第一请求(例如,事务请求115)以执行第一事务,第一事务识别用于修改数据库表的定义(例如,表定义142)的数据定义语言(DDL)操作(例如,DDL操作124)。第一事务可以与若干版本中的第一版本相关联。
在步骤730中,计算机***接收第二请求(例如,事务请求115)以执行第二事务,第二事务识别用于修改存储在数据库表中的数据(例如,行数据144)的数据操作语言(DML)操作(例如,DML操作122)。第二事务可以与若干版本中的不同的第二版本相关联(与第一版本相比)。
在各种实施例中,计算机***保存分别对应于若干版本的若干可锁定对象(例如,代理表210)。给定可锁定对象允许针对给定事务在给定可锁定对象上获得锁(例如,代理锁230)。在各种案例中,当针对给定事务保留锁时,可以防止计算机***处理另一事务,另一事务牵涉与对应于给定可锁定对象的版本相关联的数据库表。在处理第一事务过程中,计算机***可以针对第一事务在对应于第一版本的若干可锁定对象中的第一具体一个上获得第一锁(例如,代理锁230)。在处理第二事务过程中,计算机***可以针对第二事务在对应于第二版本的若干可锁定对象中的第二具体一个上获得第二锁(例如,代理锁230)。
在步骤740中,响应于确定第一事务和第二事务与若干版本中的不同版本相关联,计算机***并行处理第一事务和第二事务。可以响应于确定第一事务和第二事务与不同类型的数据库操作相关联(例如,一个与DML操作122相关联,而另一个与DDL操作124相关联),可以执行第一事务和第二事务的并行处理。
在第一事务和第二事务处理完成之前,计算机***可以接收第三请求以执行与第一版本相关联的第三事务。计算机***可以在解锁第一锁之后处理第三事务。
现在转到图8,示出了方法800的流程图。为了处理事务(例如,事务120),方法800为计算机***(例如,数据库***110)执行的方法的一个实施例。在一些实施例中,方法800可以包括比所示出的多或少的步骤。例如,计算机***可以修改数据库表(例如,数据库表140)的定义(例如,表定义142),以增加根据满足的具体条件(例如,响应于***到数据库表中的数据)执行的数据库触发器。
方法800从步骤810开始,其中计算机***保存具有若干版本(例如,版本125)的基表(例如,数据库表140)。版本中的每一个都可以识别允许与所述版本相关联的事务访问的基表的对应部分(例如,字段)。
在步骤820中,计算机***保存对应若干版本中的每一个的代理表(例如,代理表210)。
在步骤830中,计算机***接收请求(例如,事务请求115)以执行第一事务(例如,事务120)来牵涉基表的第一版本。第一版本可以识别基表的一个或多个字段,一个或多个字段不会被若干版本中的第二版本识别。
在步骤840中,计算机***处理第一事务。在步骤842中,作为处理的一部分,计算机***针对第一事务获得基表上的第一锁(例如,基锁220)。当为第一事务保留第一锁时,第一锁可以允许计算机***处理另一事务,来操作与第一版本不同的版本相关联的基表上的一部分。在步骤844中,作为处理的一部分,计算机***针对第一事务获得对应于第一版本的具体代理表上的第二锁(例如,代理锁230)。当为第一事务保留第二锁时,第二锁可以防止计算机***处理另一事务,以操作与第一版本相关联的基表上的一部分。
在一些案例中,计算机***接收第二请求(例如,事务请求115)以执行牵涉基表的第二版本的第二事务。第一版本和第二版本可以是不同版本。响应于确定第一事务和第二事务的每一个都对应不同类型的数据库操作(例如,一个可以对应DML操作122,并且另一个可以对应DDL操作124),计算机***可以并行处理第一事务和第二事务。作为并行处理的一部分,计算机***可以针对第二事务获得基表上的第三锁(例如,基锁220)和对应于第二版本的另一具体代理表上的第四锁(例如,代理锁230)。当为第二事务保留第四锁时,第四锁可以防止计算机***处理另一事务,以操作与第二版本相关联的基表上的一部分。
在一些案例中,计算机***接收第二请求以执行牵涉基表的第二版本的第二事务。第一版本和第二版本可以是不同版本。响应于确定第一事务和第二事务牵涉相同类型的数据库操作,计算机***可以在第一事务处理完成后处理第二事务。
在一些案例中,计算机***接收第二请求以执行牵涉基表的第二版本的第二事务。第一版本和第二版本可以是相同版本。响应于确定第一版本与第二版本相同,计算机***可以在第一事务处理完成后处理第二事务。
示例性计算机***
现在转到图9,描述了可以执行数据库***110和/或数据库130的示例性计算机***900的框图。计算机***900包括处理器***980,处理器子***980通过互连960(例如,***总线)耦合至***内存920和一个或多个I/O接口940。一个或多个I/O接口940耦合至一个或多个I/O设备950。计算机***900可以是各种类型的装置中的任何一个,包括,但不限于,服务器***、个人计算机***、台式计算机、便携式计算机、笔记本电脑、主计算机***、平板计算机、手持式计算机、工作站、网络计算机、消费型设备,诸如,手机、音乐播放器或个人数据助理(PDA)。尽管出于便利目的在图9中示出了单个计算机***900,但是也可以作为两个或更多计算机***一起操作来实现***900。
处理器子***980可以包括一个或多个处理器或处理单元。在计算机***900的各种实施例中,处理器子***980的多个实例可以耦合至互连960。在各种实施例中,处理器子***980(或980中的每个处理器)可以包含缓存或其他形式的在板存储器。
***内存920可用于存储程序指令,可通过处理器子***980执行程序指令从而使得***900执行本文所述的各种操作。可以使用不同物理内存介质,诸如硬盘存储器、软盘存储器、可换磁盘存储器、闪速存储器、随机存取存储器(RAM—SRAM、EDO RAM、SDRAM、DDRSDRAM、RAMBUS RAM等)、只读存储器(PROM、EEPROM等)等,来实现***内存920。计算机***900中的存储器不限于主存储器,诸如,存储器920。更确切地,计算机***900也可以包括其他形式的存储器,诸如,处理器子***980中的高速缓冲存储器,和I/O设备950上的第二存储器(例如,硬盘驱动器、存储阵列等等)。在一些实施例中,这些其他形式的存储器也可以存储可被处理器子***980执行的程序指令。在一些实施例中,在被执行时实施数据库服务器200、数据库服务器300和锁定管理器的程序指令可以被包括/存储在***内存920中。
根据各种实施例,I/O设备940可以是各种类型的接口中的任何一个,配置为与其他装置耦合以及连通。在一个实施例中,I/O设备940为从前端总线至一个或多个后端总线的桥接芯片(例如,南桥)。I/O设备940可以通过一个或多个对应的总线或其他接口耦合至一个或多个I/O设备950。I/O设备950的示例包括存储装置(硬盘驱动器、光驱、可移动闪存驱动器、存储阵列、SAN或它们的相关联的控制器)、网络接口装置(例如,连接至局域网和广域网)或其他装置(例如,图像、用户接口装置等等)。在一个实施例中,计算机***900通过网络接口装置950耦合至网络(例如,配置为通过WiFi、蓝牙、以太网等连通)。
本申请的主题的实现包括,但不限于,以下示例1至20。
1.一种方法,包括:
数据库***保存具有若干版本的数据库表,其中,版本中的每一个都识别数据库表的对应部分,允许与所述版本相关联的事务访问对应部分;
数据库***接收第一请求以执行第一事务来修改数据库表的定义;
数据库***接收第二请求以执行第二事务来修改存储在数据库表中的数据;以及
响应于确定第一事务和第二事务与若干版本中的不同版本相关联,数据库***并行处理第一事务和第二事务。
2.根据示例1所述的方法,还包括:
数据库***对应数据库表的若干版本中的每一个保存代理表,其中,代理表允许对应给定事务在代理表上获得代理锁,并且其中,当为给定事务保留代理锁时,防止数据库***处理与对应于代理表的版本相关联的数据库表上的另一事务。
3.根据示例2所述的方法,还包括:
响应于确定数据库表与新版本相关联,数据库***可以对应数据库表的新版本创建新代理表。
4.根据示例2所述的方法,还包括:
响应于删除数据库表,数据库***删除对应数据库表的若干版本保存的每个代理表。
5.根据示例2所述的方法,还包括:
对应第一事务,数据库***获得:
数据库表上的第一锁,其中,为第一事务保留的第一锁允许数据库***处理第二事务以修改存储在数据库表中的数据;以及
对应于与第一事务相关联的版本的具体代理表上的第二锁,其中,为第一事务保留的第二锁防止数据库***处理与第一事务的版本相关联的数据库表上的另一事务。
6.根据示例5所述的方法,其中,在第二锁之前获得第一锁。
7.根据示例5所述的方法,其中,在第一锁之前获得第二锁。
8.根据示例1所述的方法,其中,第一事务指定用于修改数据库表的定义的数据定义语言(DDL)操作,其中,方法还包括:
数据库***接收第三请求以执行指定用于修改数据库表定义的第二DDL操作的第三事务;以及
基于每一个都指定各自DDL操作的第一事务和第三事务,数据库***按顺序处理第一事务和第三事务,其中,第一事务和第三事务与若干版本中的不同版本相关联。
9.根据示例1所述的方法,其中,第二事务指定用于修改存储在数据库表中的数据的数据操作语言(DML)操作,其中,方法还包括:
数据库***接收第三请求以执行指定用于修改存储在数据库表中的数据的第二DML操作的第三事务;以及
基于每一个都指定各自DML操作的第一事务和第三事务,数据库***按顺序处理第一事务和第三事务,其中,第一事务和第三事务与若干版本中的不同版本相关联。
10.根据示例1所述的方法,其中,修改数据库表的定义包括增加根据满足的具体条件来执行的数据库触发器。
11.一种非易失性计算机可读介质,其上存储有能够使得计算机***执行操作的程序指令的,包括:
保存具有若干版本的数据库表,其中,版本中的每一个都识别数据库表的对应部分,允许与版本相关联的事务访问对应部分;
接收第一请求以执行识别用于修改数据库定义的数据定义语言(DDL)操作的第一事务;
接收第二请求以执行识别用于修改存储在数据库表中的数据的数据操作语言(DML)操作的第二事务;以及
响应于确定第一事务和第二事务与若干版本中的不同版本相关联,并行处理第一事务和第二事务。
12.根据示例11所述的介质,其中,所述操作还包括:
保存分别对应于若干版本中的若干可锁定对象,其中,给定可锁定对象允许对应给定事务在给定可锁定对象上获得锁,并且其中,当为给定事务保留锁时,防止计算机***处理另一事务,另一事务牵涉与对应于给定可锁定对象的版本相关联的数据库表。
13.根据示例12所述的介质,其中,第一事务与若干版本中的第一版本相关联,并且第二事务与若干版本中的不同的第二版本相关联,并且其中,操作还包括:
对应第一事务获得对应于第一版本的若干可锁定对象中的第一具体的一个上的第一锁;以及
对应第二事务获得对应于第二版本的若干可锁定对象中的第二具体的一个上的第二锁。
14.根据示例13所述的介质,其中,操作还包括:
在第一事务和第二事务处理完成之前,接收第三请求以执行与第一版本相关联的第三事务;以及
在解锁第一锁后,处理第三事务,其中,第一锁与第一版本对应。
15.根据示例11所述的介质,其中,响应于确定第一事务和第二事务与不同类型的数据库操作相关联来执行第一事务和第二事务的并行处理。
16.一种方法,包括:
数据库***保存具有若干版本的基表,其中,版本中的每一个都识别基表的对应部分,允许与所述版本相关联的事务访问对应部分;
数据库***对应若干版本中的每一个保存代理表;
数据库***接收请求以执行牵涉基表的第一版本的第一事务;以及
数据库***处理第一事务,其中,所述处理包括对应第一事务获得:
基表上的第一锁,其中,当为第一事务保留第一锁时,第一锁允许数据库***处理另一事务,来操作与第一版本不同的版本相关联的基表上的一部分;以及
对应于第一版本的具体代理表上的第二锁,其中,当为第一事务保留第二锁时,第二锁防止数据库机***处理另一事务,以操作与第一版本相关联的基表上的一部分。
17.根据示例16所述的方法,还包括:
数据库***接收第二请求以执行牵涉基表的第二版本的第二事务,其中,第一版本和第二版本为不同版本;以及
响应于确定第一事务和第二事务的每一个都与两个类型的数据库操作的不同类型对应,数据库***并行处理第一事务和第二事务,其中,两个类型的数据库操作包括数据操作语言(DML)操作类型和数据定义语言(DDL)操作类型,并且其中,所述并行处理包括针对第二事务获得:
基表上的第三锁;以及
对应于第二版本的具体代理表上的第四锁,其中,当为第二事务保留第四锁时,第四锁防止数据库机***处理另一事务,以操作与第二版本相关联的基表上的一部分。
18.根据示例16所述的方法,还包括:
数据库***接收第二请求以执行牵涉基表的第二版本的第二事务,其中,第一版本和第二版本为不同版本;以及
响应于确定第一事务和第二事务牵涉相同类型的数据库操作,数据库***在第一事务处理完成后处理第二事务。
19.根据示例16所述的方法,还包括:
数据库***接收第二请求以执行牵涉基表的第二版本的第二事务,其中,第一版本和第二版本为相同版本;以及
响应于确定第一版本与第二版本相同,数据库***在第一事务处理完成后处理第二事务。
20.根据示例16所述的方法,其中,第一版本识别基表的一个或多个字段,一个或多个字段不会被若干版本中的第二版本识别。
尽管上面已经详细描述了特定实施例,但是即使关于特定部件描述了单个实施例,这些实施例也并不意图限制本公开的范围。本公开中提供的部件的示例意欲是说明性而非限制性的,除非另有说明。上述说明意在覆盖此类替换、修改、和等价物,就像受益于本领域技术人员将会显而易见的那样。
本公开的范围包括本文所述的任何部件或部件的组合(或显式或隐式),或其任意概括,无论其是否缓解了本文解决的任意或全部问题。因此,在本申请的诉讼(或要求其优先权)期间,新的权利要求可以被阐述为部件的任意此类组合。具体地,参考所附权利要求,来自从属权利要求的部件可以与独立权利要求的部件相结合,并且来自各个独立权利要求的部件可以以任意适当的方式(并不仅是在权利要求中列举的特定组合)进行结合。
Claims (15)
1.一种方法,包括:
数据库***保存具有若干版本的数据库表,其中,所述版本中的每一个都识别所述数据库表的对应部分,允许与所述版本相关联的事务访问所述对应部分;
所述数据库***接收第一请求以执行第一事务来修改所述数据库表的定义;
所述数据库***接收第二请求以执行第二事务来修改存储在所述数据库表中的数据;以及
响应于确定所述第一事务和所述第二事务与所述若干版本中的不同版本相关联,所述数据库***并行处理所述第一事务和所述第二事务。
2.根据权利要求1所述的方法,还包括:
所述数据库***对应所述数据库表的所述若干版本中的每一个保存代理表,其中,所述代理表允许对应给定事务在所述代理表上获得代理锁,并且其中,当为所述给定事务保留所述代理锁时,防止所述数据库***处理与对应于所述代理表的版本相关联的所述数据库表上的另一事务。
3.根据权利要求2所述的方法,还包括:
响应于确定所述数据库表与新版本相关联,所述数据库***针对所述数据库表的新版本创建新代理表。
4.根据权利要求2或3所述的方法,还包括:
响应于删除所述数据库表,所述数据库***删除对应所述数据库表的所述若干版本保存的每个代理表。
5.根据权利要求2至4任一项所述的方法,还包括:
对所述第一事务,所述数据库***获得:
所述数据库表上的第一锁,其中,为所述第一事务保留的所述第一锁允许所述数据库***处理所述第二事务以修改存储在所述数据库表中的数据;以及
对应于与所述第一事务相关联的版本的具体代理表上的第二锁,其中,为所述第一事务保留的所述第二锁防止所述数据库***处理与所述第一事务的所述版本相关联的所述数据库表上的另一事务。
6.根据权利要求5所述的方法,其中,在所述第二锁之前获得所述第一锁。
7.根据权利要求5所述的方法,其中,在所述第一锁之前获得所述第二锁。
8.根据权利要求1至7任一项所述的方法,其中,第一事务指定用于修改所述数据库表的所述定义的数据定义语言(DDL)操作,其中,所述方法还包括:
所述数据库***接收第三请求以执行指定用于修改所述数据库表定义的第二DDL操作的第三事务;以及
基于每一个都指定各自DDL操作的所述第一事务和所述第三事务,所述数据库***按顺序处理所述第一事务和所述第三事务,其中,所述第一事务和所述第三事务与所述若干版本的不同版本相关联。
9.根据权利要求1至7任一项所述的方法,其中,所述第二事务指定用于修改存储在所述数据库表中的数据的数据操作语言(DML)操作,其中,所述方法还包括:
所述数据库***接收第三请求以执行指定用于修改存储在所述数据库表中的数据的第二DML操作的第三事务;以及
基于每一个都指定各自DML操作的所述第一事务和所述第三事务,所述数据库***按顺序处理所述第一事务和所述第三事务,其中,所述第一事务和所述第三事务与所述若干版本的不同版本相关联。
10.根据权利要求1至9任一项所述的方法,其中,修改所述数据库表的所述定义包括增加根据满足的具体条件来执行的数据库触发器。
11.一种非易失性计算机可读介质,其上存储有能够使得计算机***执行操作的程序指令,包括:
保存具有若干版本的数据库表,其中,所述版本中的每一个都识别所述数据库表的对应部分,允许与所述版本相关联的事务访问所述对应部分;
接收第一请求以执行识别用于修改所述数据库定义的数据定义语言(DDL)操作的第一事务;
接收第二请求以执行识别用于修改存储在所述数据库表中的数据的数据操作语言(DML)操作的第二事务;以及
响应于确定所述第一事务和所述第二事务与所述若干版本中的不同版本相关联,并行处理所述第一事务和所述第二事务。
12.根据权利要求11所述的介质,其中,所述操作还包括:
保存分别对应于所述若干版本中的若干可锁定对象,其中,给定可锁定对象允许对应给定事务在所述给定可锁定对象上获得锁,并且其中,当为所述给定事务保留所述锁时,防止所述计算机***处理另一事务,所述另一事务牵涉与对应于所述给定可锁定对象的版本相关联的所述数据库表。
13.根据权利要求12所述的介质,其中,所述第一事务与所述若干版本中的第一版本相关联,并且所述第二事务与所述若干版本中的不同的第二版本相关联,并且其中,所述操作还包括:
对应所述第一事务获得对应于所述第一版本的所述若干可锁定对象中的第一具体一个上的第一锁;以及
对应所述第二事务获得对应于所述第二版本的所述若干可锁定对象中的第二具体一个上的第二锁。
14.根据权利要求13所述的介质,其中,所述操作还包括:
在所述第一事务和所述第二事务处理完成之前,接收第三请求以执行与所述第一版本相关联的第三事务;以及
在解锁所述第一锁后,处理所述第三事务,其中,所述第一锁与所述第一版本对应。
15.一种***,包括:
至少一个处理器;以及
其上存储程序指令的存储器,可由所述至少一个处理器执行所述程序指令来实施根据权利要求1至10中任一项所述的方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/585,191 | 2019-09-27 | ||
US16/585,191 US11347713B2 (en) | 2019-09-27 | 2019-09-27 | Version-based table locking |
PCT/US2020/050796 WO2021061438A1 (en) | 2019-09-27 | 2020-09-15 | Version-based table locking |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112867999A true CN112867999A (zh) | 2021-05-28 |
CN112867999B CN112867999B (zh) | 2024-04-30 |
Family
ID=72659371
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202080004335.4A Active CN112867999B (zh) | 2019-09-27 | 2020-09-15 | 基于版本的表锁定 |
Country Status (5)
Country | Link |
---|---|
US (1) | US11347713B2 (zh) |
EP (1) | EP3824397B1 (zh) |
JP (1) | JP7039765B2 (zh) |
CN (1) | CN112867999B (zh) |
WO (1) | WO2021061438A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113626399A (zh) * | 2021-08-17 | 2021-11-09 | 平安普惠企业管理有限公司 | 数据同步方法、装置、服务器及存储介质 |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20230153282A1 (en) * | 2021-11-15 | 2023-05-18 | International Business Machines Corporation | Chaining version data bi-directionally in data page to avoid additional version data accesses |
CN116303489B (zh) * | 2023-01-16 | 2023-09-01 | 北京优炫软件股份有限公司 | 一种分层局部式表锁的实现方法以及实现*** |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5280612A (en) * | 1991-11-26 | 1994-01-18 | International Business Machines Corporation | Multiple version database concurrency control system |
US20040034669A1 (en) * | 2002-08-01 | 2004-02-19 | Oracle International Corporation | Instantiation of objects for information-sharing relationships |
CN1653451A (zh) * | 2002-05-10 | 2005-08-10 | 甲骨文国际公司 | 提供数据项的可用版本 |
CN1716248A (zh) * | 2004-06-29 | 2006-01-04 | 微软公司 | 并发事务和页面同步 |
US20090037366A1 (en) * | 2007-07-30 | 2009-02-05 | Oracle International Corporation | Online index builds and rebuilds without blocking locks |
US20090037416A1 (en) * | 2007-07-30 | 2009-02-05 | Oracle International Corporation | Method for acquiring locks in wait mode in a deadlock free manner |
US20090037417A1 (en) * | 2007-07-30 | 2009-02-05 | Oracle International Corporation | Avoiding lock contention by using a wait for completion mechanism |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO1995004960A2 (en) | 1993-08-02 | 1995-02-16 | Persistence Software, Inc. | Method and apparatus for managing relational data in an object cache |
US6606626B1 (en) | 1998-10-20 | 2003-08-12 | Sybase, Inc. | Database system with lock manager enhancement for improving concurrency |
US6584476B1 (en) * | 2000-04-22 | 2003-06-24 | Oracle Corp. | System and method for enforcing referential constraints between versioned database tables |
US7133875B1 (en) * | 2002-04-12 | 2006-11-07 | Oracle International Corporation | Method and apparatus for redefining a group of related objects in a relational database system |
US7548918B2 (en) * | 2004-12-16 | 2009-06-16 | Oracle International Corporation | Techniques for maintaining consistency for different requestors of files in a database management system |
US7359913B1 (en) * | 2005-05-13 | 2008-04-15 | Ncr Corp. | K-means clustering using structured query language (SQL) statements and sufficient statistics |
US20070186056A1 (en) * | 2006-02-07 | 2007-08-09 | Bratin Saha | Hardware acceleration for a software transactional memory system |
US8209696B2 (en) | 2006-02-13 | 2012-06-26 | Teradata Us, Inc. | Method and system for load balancing a distributed database |
US7933881B2 (en) * | 2006-03-17 | 2011-04-26 | Microsoft Corporation | Concurrency control within an enterprise resource planning system |
US7904434B2 (en) * | 2007-09-14 | 2011-03-08 | Oracle International Corporation | Framework for handling business transactions |
US8392388B2 (en) | 2010-09-08 | 2013-03-05 | Sybase, Inc. | Adaptive locking of retained resources in a distributed database processing environment |
US9659050B2 (en) * | 2013-08-06 | 2017-05-23 | Sybase, Inc. | Delta store giving row-level versioning semantics to a non-row-level versioning underlying store |
US9336258B2 (en) * | 2013-10-25 | 2016-05-10 | International Business Machines Corporation | Reducing database locking contention using multi-version data record concurrency control |
US10204130B2 (en) * | 2016-03-23 | 2019-02-12 | International Business Machines Corporation | Transactional table truncation for concurrent transactions |
US10585876B2 (en) * | 2016-04-07 | 2020-03-10 | International Business Machines Corporation | Providing snapshot isolation to a database management system |
US10545929B2 (en) * | 2016-08-31 | 2020-01-28 | Sap Se | Metadata versioning in a distributed database |
US10585873B2 (en) * | 2017-05-08 | 2020-03-10 | Sap Se | Atomic processing of compound database transactions that modify a metadata entity |
-
2019
- 2019-09-27 US US16/585,191 patent/US11347713B2/en active Active
-
2020
- 2020-09-15 CN CN202080004335.4A patent/CN112867999B/zh active Active
- 2020-09-15 WO PCT/US2020/050796 patent/WO2021061438A1/en unknown
- 2020-09-15 JP JP2021505239A patent/JP7039765B2/ja active Active
- 2020-09-15 EP EP20780869.2A patent/EP3824397B1/en active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5280612A (en) * | 1991-11-26 | 1994-01-18 | International Business Machines Corporation | Multiple version database concurrency control system |
CN1653451A (zh) * | 2002-05-10 | 2005-08-10 | 甲骨文国际公司 | 提供数据项的可用版本 |
US20040034669A1 (en) * | 2002-08-01 | 2004-02-19 | Oracle International Corporation | Instantiation of objects for information-sharing relationships |
CN1716248A (zh) * | 2004-06-29 | 2006-01-04 | 微软公司 | 并发事务和页面同步 |
US20090037366A1 (en) * | 2007-07-30 | 2009-02-05 | Oracle International Corporation | Online index builds and rebuilds without blocking locks |
US20090037416A1 (en) * | 2007-07-30 | 2009-02-05 | Oracle International Corporation | Method for acquiring locks in wait mode in a deadlock free manner |
US20090037417A1 (en) * | 2007-07-30 | 2009-02-05 | Oracle International Corporation | Avoiding lock contention by using a wait for completion mechanism |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113626399A (zh) * | 2021-08-17 | 2021-11-09 | 平安普惠企业管理有限公司 | 数据同步方法、装置、服务器及存储介质 |
CN113626399B (zh) * | 2021-08-17 | 2023-10-20 | 深圳市恒源昊信息科技有限公司 | 数据同步方法、装置、服务器及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
JP7039765B2 (ja) | 2022-03-22 |
CN112867999B (zh) | 2024-04-30 |
US11347713B2 (en) | 2022-05-31 |
EP3824397B1 (en) | 2023-12-27 |
EP3824397A1 (en) | 2021-05-26 |
JP2022503497A (ja) | 2022-01-12 |
US20210097051A1 (en) | 2021-04-01 |
WO2021061438A1 (en) | 2021-04-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11386065B2 (en) | Database concurrency control through hash-bucket latching | |
US7930274B2 (en) | Dual access to concurrent data in a database management system | |
CN112867999B (zh) | 基于版本的表锁定 | |
US8868577B2 (en) | Generic database manipulator | |
US9208258B2 (en) | Locking and traversal methods for ordered tree data structures | |
US9690818B2 (en) | On demand locking of retained resources in a distributed shared disk cluster environment | |
US11698893B2 (en) | System and method for use of lock-less techniques with a multidimensional database | |
US20100169289A1 (en) | Two Phase Commit With Grid Elements | |
US9514170B1 (en) | Priority queue using two differently-indexed single-index tables | |
US11151081B1 (en) | Data tiering service with cold tier indexing | |
WO2016119597A1 (zh) | Oltp集群数据库中页面查询方法及数据处理节点 | |
CN114282074B (zh) | 数据库操作方法、装置、设备及存储介质 | |
US20180011897A1 (en) | Data processing method having structure of cache index specified to transaction in mobile environment dbms | |
US20230090835A1 (en) | Reducing requests using probabilistic data structures | |
US6556994B1 (en) | Method and system for improving concurrency through early release of unnecessary locks | |
KR20030047996A (ko) | 내포 데이터베이스를 구현하는 방법, 시스템 및 데이터 구조 | |
CN116431590A (zh) | 一种数据处理的方法及相关设备 | |
KR100507782B1 (ko) | 데이터베이스 관리시스템 및 그 시스템에서 시스템테이블에 대한 동시성 제어 방법 | |
US20240086387A1 (en) | Delta transition table for database triggers | |
CN117076147B (zh) | 死锁检测方法、装置、设备和存储介质 | |
US20240193186A1 (en) | Database layered filtering | |
US20230306012A1 (en) | Column based database locks | |
US20110219037A1 (en) | High-Performance Persistence Framework |
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 | ||
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Address after: California, USA Applicant after: Shuo Power Co. Address before: California, USA Applicant before: SALESFORCE.COM, Inc. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |