CN112867999A - 基于版本的表锁定 - Google Patents

基于版本的表锁定 Download PDF

Info

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
Application number
CN202080004335.4A
Other languages
English (en)
Other versions
CN112867999B (zh
Inventor
J·I·科恩
P·B·沙哈
S·P·瑞劳
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.)
Salesforce Inc
Original Assignee
Salesforce com Inc
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 Salesforce com Inc filed Critical Salesforce com Inc
Publication of CN112867999A publication Critical patent/CN112867999A/zh
Application granted granted Critical
Publication of CN112867999B publication Critical patent/CN112867999B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/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
    • 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/21Design, administration or maintenance of databases
    • 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/21Design, administration or maintenance of databases
    • G06F16/219Managing data history or versioning
    • 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/2379Updates performed during online database operations; commit processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling 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中任一项所述的方法。
CN202080004335.4A 2019-09-27 2020-09-15 基于版本的表锁定 Active CN112867999B (zh)

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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113626399A (zh) * 2021-08-17 2021-11-09 平安普惠企业管理有限公司 数据同步方法、装置、服务器及存储介质

Families Citing this family (2)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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 微软公司 并发事务和页面同步
US20090037417A1 (en) * 2007-07-30 2009-02-05 Oracle International Corporation Avoiding lock contention by using a wait for completion mechanism
US20090037416A1 (en) * 2007-07-30 2009-02-05 Oracle International Corporation Method for acquiring locks in wait mode in a deadlock free manner
US20090037366A1 (en) * 2007-07-30 2009-02-05 Oracle International Corporation Online index builds and rebuilds without blocking locks

Family Cites Families (17)

* Cited by examiner, † Cited by third party
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
CA2578666C (en) 2006-02-13 2016-01-26 Xkoto 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

Patent Citations (7)

* Cited by examiner, † Cited by third party
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 微软公司 并发事务和页面同步
US20090037417A1 (en) * 2007-07-30 2009-02-05 Oracle International Corporation Avoiding lock contention by using a wait for completion mechanism
US20090037416A1 (en) * 2007-07-30 2009-02-05 Oracle International Corporation Method for acquiring locks in wait mode in a deadlock free manner
US20090037366A1 (en) * 2007-07-30 2009-02-05 Oracle International Corporation Online index builds and rebuilds without blocking locks

Cited By (2)

* Cited by examiner, † Cited by third party
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
WO2021061438A1 (en) 2021-04-01
US20210097051A1 (en) 2021-04-01
EP3824397A1 (en) 2021-05-26
JP7039765B2 (ja) 2022-03-22
EP3824397B1 (en) 2023-12-27
US11347713B2 (en) 2022-05-31
JP2022503497A (ja) 2022-01-12
CN112867999B (zh) 2024-04-30

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
WO2023165374A1 (zh) 数据库操作方法、装置、设备及存储介质
WO2016119597A1 (zh) Oltp集群数据库中页面查询方法及数据处理节点
US20190384754A1 (en) In-place updates with concurrent reads in a decomposed state
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) 死锁检测方法、装置、设备和存储介质
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