提供数据项的可用版本的制作方法

文档序号:6408495阅读:128来源:国知局
专利名称:提供数据项的可用版本的制作方法
技术领域
本发明涉及数据库系统,更具体而言,涉及确定数据库系统中的事务是否可使用数据项的某个版本的方法。
背景技术
在典型的数据库系统中,用户通过提交命令给数据库服务器来存储、更新、和检索信息。为了让数据库服务器能正确处理,该命令必须与该数据库服务器支持的数据库语言一致。一个应用广泛的数据库语言是结构化查询语言SQL。
此处使用的术语“数据项”是指与任何逻辑数据类型或数据结构相关的任何值或值的集合。在关系数据库系统中,典型的数据项包括表、行、行中的字段、索引、索引项、磁盘块等。
在多版本的数据库系统中,可存在同一数据项的多个版本。通常,数据项的一个版本是“当前”(即反映了对该数据项的所有修改),而其它版本则为非当前的。非当前版本通常反映了在以前的时间点上当前版本的状态。
存在各种类型的多版本数据库系统。某些多版本数据库系统持久地存储数据项的多个版本。其它多版本数据库系统持久地存储数据项的一个版本,并在需要时通过应用撤消和重做记录来消除或增加修改从而重新创建其它版本。此处描述的技术不限于任何特定类型的多版本系统。
多版本数据库系统通常在特定的粒度级执行版本化。因此,多版本系统不是保持(或生成)整个表的单独拷贝,而是通常保持(或生成)表的相对小的块的单独拷贝。为了进行说明,表示系统管理版本的粒度级的该块在此处被称为“数据块”在现代数据库系统中,包含在数据库中的数据块的拷贝通常存储在易失性存储器中,它所需的访问时间比非易失性存储器短,以改善事务处理性能。在多版本数据库系统中,同一数据块的多个拷贝可以被保持在易失性存储器中,以便并发执行的事务能同时访问包含在其中的数据项的不同版本。
在数据库系统的上下文中,事务是由一个或多个数据库语言语句组成的逻辑工作单元。当数据库系统执行事务时,响应以前事务的执行,事务可能读取或更新被写入或更新的数据项。因此,响应执行任何给定的事务,数据库系统所返回的结果通常由一组以前执行的事务做出的改变所指示。
由于每个事务必须以一致的状态看到数据库,因此并不是所有版本的数据项都必然被事务使用。比如,对能看到数据项的一致视图的事务,该事务可能需要看到对该数据项所作出的特定更新。但是,包含该数据项的数据块的某些版本可能不包含必须由事务看到的更新。另一方面,包含该数据项的数据块的其它版本包含的更新却可能不能被事务看到。因此,在有数据块的多种版本对事务可用的情形下,必须管理事务对数据项版本的访问,从而维护数据库的一致性。
出于解释的目的,此处使用的术语“事务”更一般地指任何实体,无论什么原因,被允许使用数据项的一些版本,但非全部可能版本。
当系统包含多个节点(每个节点都有自己的缓存)时,使用有效的技术来提供数据项的“可用版本”给事务就显得更重要。比如,假设在某个特定节点上运行的事务需要数据项的特定版本。如果所需数据项版本位于特定节点的缓存内的数据块中,那么就能够以最小的开销将所需的数据项版本从该数据块供应到该事务。然而,如果包含所需数据项版本的数据块驻留在(1)只在磁盘中;(2)在不同节点的缓存中;或者(3)必须根据在磁盘上或不同节点的缓存中的信息重建,则提供所需版本的动作可变得极端无效。
根据前面的说明,理想的是提供用于提供可用数据项版本给事务有效的技术。

发明内容
本发明提供了用于在多版本系统中提供数据项给事务的技术,其中在该多版本系统中,数据项可存在于多种数据块版本上。根据本发明的一个方面,该技术涉及在易失性存储器中定位(locate)包含该数据项的第一版本的数据块的第一版本。接着确定该数据项的第一个版本是否对该事务是可用的,而不考虑该数据块的第一版本是否可被该事务使用。如果数据项的第一版本可被该事务使用,那么就将该数据项建立为能提供给该事务的候选项。因此,即使当该数据项所驻留的数据块版本不能被该事务使用时,也可将数据块中的数据项考虑为提供给事务的候选项。如果数据项的第一版本不可被该事务使用,那么可被该事务使用的该数据项的版本可以从不同于第一个版本的数据块的第二个版本获得。
本发明描述了这样的实施例,其中,用来确定行版本是否可用的信息包含与事务相关的快照时间。还描述了另一个实施例,其中,用来确定行版本是否可用的信息包含必可看时间和不可看时间。也描述了用于在多个可用的候选项中进行选择的各种方法。
具体实施例方式
在下面的描述中,出于解释的目的,阐述了具体细节,以提供对本发明的透彻理解。然而,显然的是,没有这些具体细节也可实施本发明。在其它情况下,公知的结构和设备用方框图形式加以描述,以便避免对本发明造成不必要的模糊。
功能概述本发明提供了一种用于确定事务是否能使用数据项的特定版本的方法。与现有方法相比,即使包含数据项的特定版本的数据块版本不能一般性地被事务使用,仍可以确定数据项的特定版本是否可用。具体而言,即使数据块的特定版本可包含太新以至于不能被事务看到的改变,但是事务感兴趣的特定数据项可能不包含这些改变,因此可能仍可被该事务使用。
根据一个实施例,确定特定版本的数据项是否可用涉及确定在数据块中的该数据项是否被锁定。如果数据块没有被锁定,那么更新该数据项版本的最后事务已经提交,并因此被赋予提交时间。出于解释的原因,更新数据块中的数据项的特定版本的最新事务的提交时间此处被称为该数据项版本的“刷新时间”。
应该注意,更新数据块中的数据项的特定版本的最新事务可能不是更新数据块本身的最新事务。事实上,对同一数据块而言有可能还有其它数据项被活动的事务锁定,对特定的数据项而言仍有足够长的刷新时间供感兴趣的事务使用。
如果数据项没有被锁定,那么就将数据项的刷新时间和与事务相关的快照信息相比较。正如后面将更详细地描述的,与事务相关的快照信息指示事务能看到和不能看到数据的哪个版本。快照信息和刷新时间之间的比较指示数据项的特定版本是否能被事务使用。如果数据项的该版本对事务是可用的,那么数据项的特定版本接着可被提供给事务,或者增加到候选版本池中,以便可从中选择实际提供给事务的版本。
在许多系统中,已被提交的事务更新的数据块不会立即更新以显示已提交的事务。因此,即使数据块中的信息指示该数据项被锁定,该锁(lock)可能实际上被提交的事务持有。因此,如果根据数据块中的信息,数据项被锁定,那么就可以确定该锁是否实际上被活动的事务持有。
如果持有锁的事务实际上被提交,那么持有锁的事务的提交时间就被用做刷新时间,且执行上面描述的比较以确定该数据项是否可用。
如果持有锁的事务是活动的,那么就确定持有锁的事务是否是与试图使用数据项的事务相同的事务。如果持有锁的事务不是试图使用数据项的事务,那么该数据块中的数据项版本就不可用。另一方面,如果持有锁的活动事务是试图使用数据项的事务,那么就确定该数据项是否有任何太新以至于事务看不到的改变。如果数据项没有任何太新以至于事务看不到的改变,那么数据项就对该事务是可用的。
在有数据项的许多版本对事务可用的情形下,实际提供给事务的版本将影响效率。此处描述的各种技术来确定在可用的候选项池中数据项的哪个版本应该被提供给特定的事务。
块级版本信息对于提供正确的信息版本给事务的多版本系统,该系统必须维护指示信息版本的信息。典型地,数据库系统以数据块粒度级维护该版本信息,由于这是版本执行时的粒度级。比如,某些数据库系统为数据块的每种版本维护包含时间(INCLUDE TIME)和排除时间(EXCLUDE TIME)。包含时间指定最新提交的事务的提交时间,其改变包含在数据块版本中。排除时间指定数据块的内容处于“当前”状态的时间。
比如,通过回滚改变创建的数据块的排除时间通常是其改变已从数据块版本中去除的最旧事务的提交时间。如果数据块的特定版本是数据块的最新版本,那么该版本的排除时间是无限大,因为没有去除任何改变。
比如,假设第一事务使得数据块的拷贝被装载到易失性存储器,更新数据块的拷贝来创建数据块的新版本(“第一版本”),然后在时间T10提交。所述第一版本的包含时间被设置为T10,而排除时间被设置为无限大。接着第二事务更新数据块的同一拷贝来创建数据块的第二版本,并在时间T30提交。数据块的第二版本的包含时间改变到时间T30,并反映数据块的第二版本包含由在时间T30提交的事务作出的改变,而其排除时间仍是无限大,由于数据块的第二版本没有去除任何改变。
现在假设第三事务要求在时间T20访问数据库。由于数据库的第二版本包含由在时间T30提交的第二事务作出的更新,所以其不能以其当前状态被使用。因此,数据块的第一版本通过去除由第二事务作出的改变而重新创建。一旦重新创建操作完成,则新拷贝的包含时间改变到时间T10,且排除时间改变到时间T30,以反映数据库的这个版本包含由在时间T10提交的第一事务作出的改变,且由在时间T30提交的第二事务作出的改变已经被去除。因此,当要求访问数据库的任何事务从时间T10退出一直到不等于包含时间T30的时间时,其可使用数据库的所述重新创建的第一版本。
行级版本信息在典型的系统中,以数据库粒度级维护版本信息,因为其处于系统管理版本的数据块粒度。然而,根据本发明的一方面,以单个数据块可包含多个数据项的数据项粒度维护版本信息。除了和/或代替数据块版本信息,也可维护数据项版本信息。
此处描述了在事务过程中在数据库系统中试图访问表的特定行的本发明的实施例。用于表中的行的数据将典型地驻留在包括用于几个其它行的数据块上。因此,将给出其中数据项是行的实例。因此,以行级粒度维护版本信息。然而,行仅是可驻留在多版本系统内的数据块上的数据项的一个实例。本方法不限于任何特定的数据项,也不限于任何特定类型的多版本系统。


图1是根据本发明的一个实施例的数据库系统100的框图,其中该数据库系统100维持用于确定事务是否可使用数据项的特定版本的行级版本信息。
参看图1,数据库系统100包括易失性存储器102和非易失性存储器104。非易失性存储器104通常表示一个或多个存储装置,例如上面储存数据库的磁盘或光盘驱动器等。数据块106储存在非易失性存储器104上,且包含一个或多个数据项107。在所示出的实施例中,数据项107分别表示为D1、D2、D3、和D4。
数据块106也包含关于最近已在数据项107上执行的事务的信息。具体而言,列在条目(entry)110中的事务包括用来更新数据块106中的每个数据项的最近的事务。这样的事务或者是活动的(在这种情况下,数据块将通常表示它们正在持有数据项上的锁),或者被提交。例如,条目110表示事务TX1和TX2分别在时间10和5提交,而事务TX3没有被提交。
当最后更新数据项的事务被提交时,可将事务的提交时间认为是行的版本号。这样,如果TX1是用于更新数据块106中的数据项1的最近的事务,则数据块106内的数据项1的版本可认为是“10”(TX1的提交时间)。这样,条目110以数据项粒度级传送用于数据块106内的数据项的版本信息。如下文中将更详细地描述的,即使在包含数据块的数据块可能通常不能被事务使用时,具有数据项级版本信息允许数据项被提供给事务。
在某些系统中,数据块内的信息可能表示事务已经实际提交时事务是活动的。这种现象是由于在事务提交的时间和更新被事务修改的数据块以表示事务已提交的时间之间可出现延迟。如下文中更详细地描述的,通过根据数据块中的信息确定活动的事务是否已实际提交,可解释这种现象。
系统100中所示的结构仅是多版本系统可如何以数据项粒度级维护版本信息的一个实例。具体版本信息和用于维护该喜讯你的技术可根据执行(implementation)而改变。本发明不限于任何以数据项粒度级维护版本信息的特定结构或技术。
快照信息用于管理事务的执行以维护数据库一致性的一种方法包括确定事务仅看到(1)由一组特定的已提交的事务提交给数据块的改变和(2)通过事务的现有语句(statement)本身作出的改变。语句看得见的改变称为语句的“快照集”。因此,事务必须看到数据库的“快照”。事务快照包括在其快照集中事务作出的所有改变,且不包括不在其快照集中的任何事务作出的改变(“排除的事务”)。
根据一种技术,通过分配相应于事务开始执行时的数据库状态的快照时间给每个事务,多版本系统可确保事务看到数据库的一致的快照。为了一致的读取,事务必须看到由在事务的快照时间或之前提交的事务对数据库作出的改变,而不能看到由在分配的快照时间之后提交的事务作出的任何改变。
一致读取的思想在于1997年4月23日提交的名称为“共享一致读取的快照(SHARING SNAPSHOTS FOR CONSISTENTREADS)”的美国专利申请第08/842,169号、于1997年4月23日提交的名称为“用于减少数据库的快照数目的技术(TECHNIQUESFOR REDUCING THE NUMBER OF SNAPSHOTS OF ADATABASE)”的美国专利申请第08/838,967号、和于1997年4月23日提交的名称为“动态快照集调整(DYNAMIC SNAPSHOT SETADJUSTMENT)”的美国专利申请第08/841,541号中得到详细的描述,这些申请的内容全部结合于此作为参考。
作为简单实例,假设当事务在时间T15存在时(即事务的快照时间为T15)要求存取数据块的版本。必须将包含由在时间T15或之前提交的事务作出的所有改变且不包含由在时间T15后提交的事务作出的改变的数据项版本供给该事务。不能使用包含由仍未提交(除了请求事务本身外)或在时间T15后提交的事务作出的更新的数据项版本。
确定数据项版本是否可用现在将参看图2的流程图描述根据本发明的实施例用于确定事务是否可使用数据项版本的方法。图2中所示的步骤是指其中事务请求的数据库是定位在数据库系统内的数据块中的行的实施例。
一般而言,通过将与行相关的版本信息和与请求该行的事务相关的快照信息进行比较,确定行版本是否可被事务使用。然而,行的版本信息必须在其与事务的快照信息进行比较之前确定。因此,图2中所示的几个步骤相应于确定行版本的刷新时间的动作。
参看图2,在步骤200中,确定与数据块相关的排除时间是否小于与该事务相关的快照时间。如果与该数据块相关的排除时间小于与该事务相关的快照时间,则包含在数据块中的行版本可以是必须被该事务看到的丢失的改变。因此,控制进行到步骤202,在这里,系统从数据块的另一版本获得正确的行版本。
如果与该数据块相关的排除时间不小于与该事务相关的快照时间,则控制转到步骤204。在步骤204,确定数据块中的信息是否表示行被锁定。如果行被锁定,则控制继续到步骤205。否则,控制转到步骤210。
在步骤210,确定修改数据块内的行版本的最新事务的提交时间。该提交时间举例来说可通过在条目110(图1)内检查包含用来更新行的最新事务的信息的条目。这样确定的提交时间构成该行版本的刷新时间。
在步骤212,确定刷新时间是否小于或等于快照时间。如果不是,则由于行版本包括太新以至于该事务看不到的修改,事务不能使用数据块106的该版本。在这些条件下,控制继续到步骤202,且使用数据块的另一版本。在某些系统中,通过将撤销记录应用到数据块以去除太新以至于事务看不到的改变,可产生数据块的其它版本。
如果刷新时间小于或等于快照时间,则控制从步骤212转到步骤214。在步骤214,将行版本提供给该事务以便该事务使用。在可选实施例中,仅因为确定该版本可被该事务使用,而可以不必将该行版本立即提供给该事务。相反,该系统可继续识别可被该事务使用的行的几个或所有版本。一旦确定了可用候选项池,则该系统可使用各种标准来选择行的哪个版本被实际提供给该事务。如下文中将更详细地描述的,可使用各种选择标准。
在步骤218,更新与该事务相关的快照信息,以反映供给该事务的行的特定版本。此步骤举例来说在快照信息识别快照范围的实施例中执行。在下文中将更详细地描述这样的实施例和如何更新快照信息的细节。
如果在步骤204,包含在数据块中的信息表示行被锁定,则在步骤205确定持有该锁的事务是否是真实活动的。由于即使数据块中的信息表示行被锁定,可实际上提交持有该锁的事务,而该数据块仍未用事务的提交信息更新,所以执行此步骤。
如果持有该锁的事务不是活动的,则控制转到步骤210,以确定持有该锁的事务(这是用来修改该数据块的该版本中的行版本的最新事务)的提交时间。
如果持有该锁的事务是活动的,则在步骤206确定持有该锁的事务是否是与试图读取该行的事务相同的事务。如果持有该锁的事务不是与试图读取该行的事务相同的事务,则该数据块中的行版本潜在地包含该事务看不到的信息,且控制转到步骤202。
如果持有该锁的事务是与试图读取该行的事务相同的事务,则在步骤208确定该行版本是否包含太新以至于该事务看不到的信息。由于在某些系统中,允许事务看到其本身作出的知道特定时间点的改变,而看不到在该特定时间点后作出的改变,所以执行这项检测。
如果行版本包含太新以至于该事务看不到的信息,则控制转到步骤202。否则,控制转到步骤214。
快照范围代替用于事务的单个快照时间,某些数据库系统使用用于确定每个事务的依赖范围的必可看时间(MUST-SEE time)和不可看时间(CANNOT-SEE time),这可在选择方便版本来读取中提供更多的灵活性。根据这种方法,事务必须看到由任何提交时间在必可看时间或之前的事务作出的改变。此外,事务看不到由任何提交时间在不可看时间或之后的事务作出的改变。在上述整合在本文中作为参考的申请中对必可看时间和不可看时间的概念进行了更详细的描述。
在结合数据项版本的更新时间(FRESHNESS time)和数据块版本的排除时间(EXCLUDE time)使用时,对于能使用数据块版本的给定事务,必须满足两个条件。首先,给定事务的不可看时间必须大于该数据项版本的刷新时间。换句话说,改变反映在该数据项版本中的最新事务必须在给定事务的不可看时间之前提交。其次,给定事务的必可看时间必须小于该数据块版本的排除时间。换句话说,必须被给定事务看到的改变不能已从该数据块版本去除。
例如,假定行的特定版本具有刷新时间T33,其中该行版本驻留的数据块具有排除时间T39。具有必可看时间T30和不可看时间T40的事务请求访问该数据块。由于刷新时间小于不可看时间,排除时间大于必可看时间,所以可将该数据块的特定版本供给该事务。
在读取后更新快照范围在使用快照范围的实施例中,在将数据项版本供给该事务后可不得不调整该范围。例如,如果提供具有刷新时间T13的数据项版本给该事务,则该事务必须此后看到在时间T13提交的所有数据。因此,如果在读取该数据项版本之前该事务的必可看时间为T12,则在读取该数据项之后该事务的必可看时间必须调整到时间T13。从而,该事务的必可看时间改变为大于刷新时间中的当前的必可看时间。
此外,如果事务读取由已经提交的特定事务从其去除改变的数据,则读取事务此后不能看到由在该特定事务或之后提交的事务对任何数据作出的任何改变。从而,读取事务的不可看时间改变为小于事务的不可看时间和包含被读取的数据项的数据块的排除时间。
在可用候选项中进行选择如上所述,当将数据项版本提供给事务时,调整不可看时间和必可看时间。这种调整的作用是缩小事务在未来读取中可能看到的快照范围。数据项的不同可用版本可以不同方式影响该范围。从而,在数据项的几个可用版本存在的地方,可基于将哪个可用版本选择为待提供给该事务的版本而影响该系统的效率。
根据一个实施例,从候选项池中选择候选项基于使用该候选项将对读取事务的快照范围的影响。为了进行说明,假设候选版本池包括下列各项版本刷新 排除时间V1 T10 T30V2 T15 T33V3 T9T20假定请求该数据项的事务具有必可看时间T11和不可看时间T32。在这种情况下,由于,对于全部的三个版本V1、V2、和V3,刷新时间小于不可看时间,必可看时间小于排除时间,所以版本V1、V2、和V3是所有可用的候选版本。
由提供V1产生的[必可看,不可看]范围是[T11,T30]。由提供V2产生的[必可看,不可看]范围是[T15,T32]。由提供V3产生的[必可看,不可看]范围是[T11,T20]。
根据一个实施例,待提供给该事务的版本基于在该版本提供给该事务后所保留的[必可看,不可看]范围的大小从可用候选版本中选择。在这样的一个实施例中,由于范围[T11,T30]大于其它范围,所以将V1提供给该事务。
根据一个可选实施例,待提供给该事务的版本基于将产生最新不可看时间的候选项从可用候选项中进行选择。在这样的一个实施例中,由于T32比使用任何其它候选项产生的不可看时间要晚。所以将V2提供给该事务。举例来说由于此实施例试图允许该事务看到更新的数据版本,所以此实施例是有用的。
上述实施例仅示出可用于从候选项池中选择哪个候选项将实际提供给该事务的两个标准实例。在可选实施例中,代替在这些实例中指定的标准或除在这些实例中指定的标准之外,可考虑不同标准。此外,某些实施例可仅提供识别的第一可用候选项,而不是识别可用候选项池。
硬件概述图3的方框图说明了一个实现本发明实施例的计算机系统300。计算机系统300包括总线302或用于信息通信的其它通信装置,以及处理器304与总线302相连用于信息处理。计算系统300还包括主存储器306,例如随机存取存储器(RAM)或其它动态存储装置,与总线302相连用于储存将被处理器304执行的信息和指令。在处理器304进行指令执行过程中,主存储器306还可以被用于存储临时变量或其它中间信息。计算机系统300还包括与总线302相连的只读存储器(ROM)308或其它静态存储装置,用于存储处理器304的静态信息和指令。存储装置310,例如磁盘或光盘,与总线302相连,用于存储信息和指令。
计算机系统300还可通过总线302与显示器312相连,例如阴极射线管(CRT),用来显示信息给计算机用户。输入装置314,包括文字数字以及其它按键,与总线302相连用来传达信息和命令给处理器304。另一种类型用户输入装置是光标控制器316,例如鼠标、轨迹球或光标方向键,用来传达方向信息和命令选择给处理器304以及用来控制显示器312上的光标移动。这个输入装置典型地具有两个自由度在两个轴上,第一个轴(例如x)和第二个轴(例如y),使得该装置在一个平面上确定位置。
本发明涉及计算机系统300的使用以实现这里描述的技术。根据本发明的一个实施例,这些技术通过计算机系统300响应处理器304执行主存储器306中的一组或更多组的单一或多个指令来完成。这样的指令可从另一个计算机可读介质中,例如存储装置310,读取到主存储器306中。在主存储器306内指令的执行导致处理器304完成这里所描述的处理步骤。多处理装置可被用来替代处理器304,执行上述处理步骤。
在一个可供选择的实施例中,硬线电路可被用来代替软件指令或与软件指令相结合来实现本发明。因此,本发明的实施例并不局限于任何特殊的硬件电路和软件组合。另外,多处理器系统可被用来替代处理器304。
这里使用的术语“计算机可读介质”指任何参与提供指令给处理器304执行的介质。这样一个介质可以有许多种形式,包括但不局限于非易失性介质、易失性介质和传输介质。非易失性介质包括,例如光盘和磁盘,如存储装置310。易失性介质包括动态存储器,如主存储器306。传输介质包括同轴电缆、铜线和光纤,包括组成总线302的导线。传输介质还可以是声波和光波,例如那些在无线电波和红外数据通信时产生的波。
普通形式的计算机可读介质包括,例如软盘、软碟、硬盘、磁带或任何其它磁性介质,CD-ROM、任何其它光学介质,打孔卡片、打孔纸带、任何其它具有孔状图案的物理介质,RAM、PROM以及EPROM、FLASH-EPROM,任何其它存储芯片内存盒,载波如下文所描述的,或其它任何计算机可读的介质。
不同形式的计算机可读介质可用来传送一组或更多组的单一或多个指令到处理器304执行。例如,指令可能初始在一台远程计算机的磁盘上。该远程计算机可把指令装入到动态内存中然后利用调制解调器将指令送入电话线。计算机系统300的本地调制解调器可以接收到电话线上的数据,然后使用红外发射机将数据变成红外信号。连接至总线302的红外探测器可接收红外信号上携带的数据,并且适当的电路可将数据放到总线302上。总线302传送数据给主存储器306,处理器304从那儿获取并执行指令。这些从主存储器306收到的指令在被处理器304执行前或执行后选择性地被存储在存储装置310上。
计算机系统300还包括通信接口318,其连接在总线302上。通信接口318提供双向数据通信,与连接在本地网络322上的网络链路320相连。例如,通信接口318可以是综合数据业务网(ISDN)网卡,或调制解调器用来提供数据通信连接到相应类型的电话线上。如另一个例子,通信接口318可以是局域网(LAN)网卡以提供数据通信连接到兼容的局域网上。无线连接也可以实现。在任一这样的实现方式中,通信接口318传送和接收电信号、电磁信号或光信号,它们都携带代表不同类型信息的数字数据流。
网络链路320通常通过一个或更多网络提供数据通信到其它数据服务器。例如,网络链路320可提供连接经由本地网络322到一个主机324上或到互联网服务供应商(ISP)326操作的数据设备上。接着ISP 326通过广域数据包通信网络,现在通常被称作为“互联网”328,提供数据通信服务。本地网络322和互联网328都使用电信号、电磁信号或光信号传送数字数据流。经过不同网络传送的信号、网络链路320上的信号和经过通信接口318的信号携带着数字数据到达通信系统300或离开通信系统300,这些信号只是传送信息的示范性载波。
通信系统300可通过网络、网络链路320和通信接口318发出和接收数据,包括程序代码。例如在互联网中,服务器330可从应用程序经过互联网328、网络服务供应商326、本地网络322和通信接口318传送请求代码。
收到的代码可由处理器304执行,和/或存储在存储装置310上,或其它非易失性存储器用来以后执行。按这种方式,计算机系统300可获得载波形式的应用程序代码。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的权利要求范围之内。
权利要求
1.一种用于提供数据项给事务的方法,所述方法包括以下步骤在易失性存储器中定位包括所述数据项的第一版本的数据块的第一版本;确定所述数据项的第一版本是否可被所述事务使用,而不考虑所述数据块的第一版本是否可被所述事务使用;如果所述数据项的第一版本可被所述事务使用,则将所述数据项建立为可提供给所述事务的候选项;以及如果所述数据项的第一版本不可被所述事务使用,则从所述数据块的不同于所述第一版本的第二版本获得可被所述事务使用的所述数据项的版本。
2.根据权利要求1所述的方法,还包括通过修改所述数据块的第一版本产生所述数据块的第二版本的步骤。
3.根据权利要求1所述的方法,其中通过从保持与所述数据块的第一版本分开的所述数据块的版本获得所述数据项的可用版本,执行从所述数据块的第二版本获得可被所述事务使用的所述数据项版本的步骤。
4.根据权利要求1所述的方法,其中确定所述数据项的第一版本是否可被所述事务使用的步骤包括将与所述数据项相关的版本信息和与所述事务相关的快照信息进行比较的步骤。
5.根据权利要求4所述的方法,其中将与所述数据项相关的版本信息和与所述事务相关的快照信息进行比较的步骤包括将与所述数据项相关的版本信息和与所述事务相关的快照时间进行比较。
6.根据权利要求4所述的方法,其中将与所述数据项相关的版本信息和与所述事务相关的快照信息进行比较的步骤包括将与所述数据项相关的版本信息和与所述事务相关的必可看时间及不可看时间进行比较。
7.根据权利要求4所述的方法,其中将与所述数据项相关的版本信息和与所述事务相关的快照信息进行比较的步骤包括将与所述数据项相关的刷新时间和与所述事务相关的快照信息进行比较;以及所述刷新时间表示被提交的事务的提交时间,所述事务最近更新所述数据块的第一版本内的所述数据项的第一版本。
8.根据权利要求7所述的方法,还包括通过执行以下步骤识别所述刷新时间的步骤确定所述数据项的第一版本是否被锁定;如果所述数据项的第一版本被锁定,则确定持有所述数据项的第一版本上的锁的所述事务是否已实际上被提交;以及如果持有所述第一数据项上的所述锁的所述事务已实际上被提交,则将持有所述锁的所述事务的提交时间用作所述数据项的刷新时间。
9.根据权利要求7所述的方法,还包括通过执行以下步骤识别所述刷新时间的步骤确定所述数据项的第一版本是否被锁定;如果所述数据项的第一版本被锁定,则确定持有所述数据项的第一版本上的锁的所述事务是否已实际上被提交;以及如果持有所述第一数据项上的所述锁的所述事务实际上没有被提交,则确定持有所述第一数据项上的所述锁的所述事务是否是请求所述数据项的事务;以及如果持有所述第一数据项上的所述锁的所述事务不是请求所述数据项的事务,则确定所述数据项的第一版本不可被所述事务使用。
10.根据权利要求1所述的方法,其中将所述数据项的第一版本建立为多个候选项中的一个候选项,其中所述多个候选项是可被所述事务使用的所述数据项的版本;以及所述方法包括从所述多个候选项选择哪个候选项来提供给所述事务的步骤。
11.根据权利要求1所述的方法,其中所述事务是在多版本数据库系统中执行的事务;以及所述数据项是所述数据库系统内的表中的行。
12.根据权利要求10所述的方法,其中从所述多个候选项选择哪个候选项来提供给所述事务的步骤是基于所述候选项如何影响与所述事务相关的范围执行的,其中所述范围以必可见时间和不可见时间为界。
13.根据权利要求12所述的方法,其中从所述多个候选项选择哪个候选项来提供的步骤是基于哪个候选项将造成用于所述事务的最宽范围。
14.根据权利要求12所述的方法,其中从所述多个候选项选择哪个候选项来提供的步骤是基于哪个候选项将造成最长的不可见时间。
15.一种计算机可读介质,用于承载用于提供数据项给事务的指令,所述指令包括用于执行以下步骤的指令在易失性存储器中定位包括所述数据项的第一版本的数据块的第一版本;确定所述数据项的第一版本是否可被所述事务使用,而不考虑所述数据块的第一版本是否可被所述事务使用;如果所述数据项的第一版本可被所述事务使用,则将所述数据项建立为可提供给所述事务的候选项;以及如果所述数据项的第一版本不可被所述事务使用,则从所述数据块的不同于所述第一版本的第二版本获得可被所述事务使用的所述数据项的版本。
16.根据权利要求15所述的计算机可读介质,还包括用于执行以下步骤的指令通过修改所述数据块的第一版本产生所述数据块的第二版本。
17.根据权利要求15所述的计算机可读介质,其中通过从保持与所述数据块的第一版本分开的所述数据块的版本获得所述数据项的可用版本,执行从所述数据块的第二版本获得可被所述事务使用的所述数据项版本的步骤。
18.根据权利要求15所述的计算机可读介质,其中确定所述数据项的第一版本是否可被所述事务使用的步骤包括将与所述数据项相关的版本信息和与所述事务相关的快照信息进行比较的步骤。
19.根据权利要求18所述的计算机可读介质,其中将与所述数据项相关的版本信息和与所述事务相关的快照信息进行比较的步骤包括将与所述数据项相关的版本信息和与所述事务相关的快照时间进行比较。
20.根据权利要求18所述的计算机可读介质,其中将与所述数据项相关的版本信息和与所述事务相关的快照信息进行比较的步骤包括将与所述数据项相关的版本信息和与所述事务相关的必可看和不可看时间进行比较。
21.根据权利要求18所述的计算机可读介质,其中将与所述数据项相关的版本信息和与所述事务相关的快照信息进行比较的步骤包括将与所述数据项相关的刷新时间和与所述事务相关的快照信息进行比较;以及所述刷新时间表示被提交的事务的提交时间,所述事务最近更新所述数据块的第一版本内的所述数据项的第一版本。
22.根据权利要求21所述的计算机可读介质,还包括通过执行以下步骤来识别所述刷新时间的步骤的指令确定所述数据项的第一版本是否被锁定;如果所述数据项的第一版本被锁定,则确定持有所述数据项的第一版本上的锁的所述事务是否已实际上被提交;以及如果持有所述第一数据项上的所述锁的所述事务已实际上被提交,则将持有所述锁的所述事务的提交时间用作所述数据项的刷新时间。
23.根据权利要求21所述的计算机可读介质,还包括通过执行以下步骤来识别所述刷新时间的步骤的指令确定所述数据项的第一版本是否被锁定;如果所述数据项的第一版本被锁定,则确定持有所述数据项的第一版本上的锁的所述事务是否已实际上被提交;以及如果持有所述第一数据项上的所述锁的所述事务实际上没有被提交,则确定持有所述第一数据项上的所述锁的所述事务是否是请求所述数据项的事务;以及如果持有所述第一数据项上的所述锁的所述事务不是请求所述数据项的事务,则确定所述数据项的第一版本不可被所述事务使用。
24.根据权利要求15所述的计算机可读介质,其中将所述数据项的第一版本建立为多个候选项中的一个候选项,其中所述多个候选项是可被所述事务使用的所述数据项的版本;以及所述计算机可读介质包括用于执行从所述多个候选项选择哪个候选项来提供给所述事务的步骤的指令。
25.根据权利要求15所述的计算机可读介质,其中所述事务是在多版本数据库系统中执行的事务;以及所述数据项是所述数据库系统内的表中的行。
26.根据权利要求24所述的计算机可读介质,其中从所述多个候选项选择哪个候选项来提供给所述事务的步骤是基于所述候选项如何影响与所述事务相关的范围执行的,其中所述范围以必可见时间和不可见时间为界。
27.根据权利要求26所述的方法,其中从所述多个候选项选择哪个候选项来提供的步骤是基于哪个候选项将造成用于所述事务的最宽范围。
28.根据权利要求26所述的方法,其中从所述多个候选项选择哪个候选项来提供的步骤是基于哪个候选项将造成最长的不可见时间。
全文摘要
本发明提供了在多版本系统中提供数据项给事务的技术,其中数据项存在于多版本的数据块上,其版本在该数据块的粒度上执行。根据本发明的一个方面,该技术涉及在易失性存储器中定位数据块的第一版本,该数据块包含该数据项的第一版本。接着确定该数据项的第一版本是否对该事务是可用的,而不论该数据块的第一版本是否对该事务是可用的。如果数据项的第一版本对事务是可用的,那么该数据项就被建立为能提供给事务的候选项。因此,在数据块中的数据项可以被考虑为能提供给事务的候选项,即使当该数据项所驻留的数据块的版本在其它方面使得该数据块不能被该事务看见。如果数据项的第一版本对该事务不可用,那么对该事务可用的该数据项的版本可以从不同于第一版本的数据块的第二个版本中获得。
文档编号G06F12/00GK1653451SQ03810569
公开日2005年8月10日 申请日期2003年4月29日 优先权日2002年5月10日
发明者阿米特·加内什, 斯里尼瓦斯·S·韦穆里, 罗杰·J·班福德 申请人:甲骨文国际公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1