当前位置: 首页 > 专利查询>微软公司专利>正文

用增量分页器来管理状态制造技术

技术编号:2820636 阅读:234 留言:0更新日期:2012-04-11 18:40
一种增量分页器用原子的、隔离的事务来维护数据库。当一事务试图对该数据库作出改变时,该增量分页器将改变储存在写缓冲区中,并在介入事务没有字面上或实质上改变该事务所依赖的数据库状态时应用该改变。该增量分页器通过将写缓冲区与数据库的当前状态接合来形成表示数据库状态的新数据结构来应用改变以提交事务。该增量分页器根据该增量分页器遵守的快照来接合写缓冲区以维持效率,以便保留数据库的所选状态。该增量分页器通过将所选数据移至持久存储来使得数据库的所选部分变得持久。该增量分页器还提供在持久存储和当前事务之间的高速缓存对象以提高对数据的访问效率。

【技术实现步骤摘要】
【国外来华专利技术】用增量分页器来管理状态扭旦 冃尿执行数据库事务时的一个关键问题是数据库完整性。为保持数据库完整, 重要的是确保事务遵守诸如原子性和隔离等要求。原子性要求命令要么执行一 事务的全部任务,要么不执行任何任务,因而不完整的事务不会被应用于数据 库。隔离要求规定事务与其它事务分开处理,因而没有事务访问或干涉另一事 务的中间状态。遵守原子性和隔离要求防止事务彼此破坏并破坏作为整体的数 据库。在联网系统中,许多用户和许多应用程序可能并发地试图对同一数据执行 事务。即使在单机系统中,多个应用程序也可能用彼此竞争的每一应用程序的 多个处理线程来并发地试图对同一数据执行事务。由于难以预见,更不用说避 免在事务中可能向数据库应用冲突或不一致的改变的所有情形,因此维持数据 库完整性是一项重大的挑战。保持数据库完整性的一种方式是对当前事务使用的数据库的一部分加上 锁。对数据库的一部分加上锁防止其它事务在当前事务完成之前读取或盖写该 数据。防止其它事务从数据库的该部分读取确保其它事务将不会基于当前事务 可能改变的值而得出结果。因此,防止其它事务盖写数据库的该部分确保其它 事务不会影响当前事务。然而,尽管对数据库的一部分加上锁有可能有助于保持数据完整性,但是 它也会导致补偿成本。对多个事务试图访问的数据库的一部分加上锁可造成事 务的大量积累。部分或全部等待的事务可能不会对数据库的当前状态作出任何 改变,或可能不会对当前事务所使用的特定值进行读取、写入或改变。然而, 对数据库的该部分加上锁将保持数据库的完整性,即使它使得对数据库的访问 变慢。一种形式的锁是租用。正如在公寓、建筑物、汽车和设备租用的情况中一 样,租用是一段有限时间内的独占授权。由此,当一事务被授予对所选数据的 租用时,向该事务提供在一段有限时间内对所选数据的独占访问。通过将对该 数据的独占访问限于一段时间,如果该事务在事务完成时无法释放数据,或者 万一该事务在其上运行的系统崩溃,则数据将被解锁,使得其它事务不必无限 制地等待来访问该数据。常规上,等待所选数据的每一事务将必须等待直到先 前对该数据排队的所有事务完成其对该数据的使用,或直到分配给每一事务的 租用期满。随着等待访问租用数据的事务数量的增加,可能会有显著的延迟。另外, 控制数据租用的系统在尝试访问数据时可造成瓶颈。作为对数据访问的单个控 制点控制租用的系统在试图响应租用请求时可导致事务延迟。此外,由于系统 可能正在接收对同一所选数据的多个请求,因此处理这多个且可能重复的请求 将浪费计算周期,从而导致对寻求同一数据或任何其它数据的事务的进一步延 迟。概述一种增量分页器用原子的、隔离的事务来维护数据库。当一事务试图对该 数据库作出改变时,该增量分页器将改变储存在写缓冲区中,并在介入的事务 没有在字面上或实质上改变该事务所依赖的数据库的状态时应用改变。该增量 分页器通过将写缓冲区与数据库的当前状态联合以形成表示该数据库的状态 的新数据结构来应用改变以提交事务。该增量分页器根据该增量分页器所遵守 的快照来接合写缓冲区以维持效率,以便保留数据库的所选状态。该增量分页 器通过将所选数据移至持久存储来使得数据库的所选部分持久。该增量分页器 还提供持久存储和当前事务之间的高速缓存对象以促进对数据的高效访问。提供本概述以便用简化的形式介绍将在以下详细描述中进一步描述的一 些概念。本概述并不旨在确定所要求保护的主题的关键特征或必要特征,也不 旨在用于帮助确定所要求保护的主题的范围。附图简述该详细描述将参考附图来描述。在附图中,三位数参考标号的最左边一位 或四位数参考标号的最左边两位标识了该参考标号首次出现的附图。在不同附图中使用相同的参考标号来指示相似或相同的项目。 图l示出了数据库的初始、当前状态。 图2示出了针对数据库的第一事务。图3-6示出了使用缓冲区来执行并提交给数据库的事务。图7-11示出了使用累积写缓冲区来执行的事务。 附图说明图12示出了使用写缓冲区执行事务的一种模式。 图13示出了使用单写缓冲区执行的事务。 图14示出了使用单写缓冲区来执行事务的一种模式。 图15示出了在将第一事务作为介入事务执行的同时针对数据库执行的第 二事务。图16-20示出了在唤醒介入事务时对当前事务的提交和中止。图21示出了在唤醒介入事务时确定何时提交或中止一事务的一种模式。图22-27示出了使用读和写缓冲区执行并提交给数据库的潜在竞争的事务。图28示出了使用读和写缓冲区执行事务的一种模式。 图29示出了使用读和写缓冲区在唤醒介入事务时确定何时提交或中止一 事务的一种模式。图30-31示出了缓冲区的接合。图32-34示出了使用快照对象来保留数据库的所选状态不被接合到后续状 态中。图35示出了在保留一个或多个所选状态的同时接合缓冲区的一种模式。图36-27示出了变为持久的缓冲区。图38示出了使对象变得持久的一种模式。图39示出了高速缓存对象的使用。图40示出了创建并维护高速缓存对象的一种模式。图41示出了先前描述的对象集合。图42示出了适用于执行先前所描述的数据库事务和操作的示例性操作环 详细描述凝f术语"增量分页器"描述了用于在维持数据库的完整性并保留数据库的所 选状态的同时处理对数据库的改变的方法和系统的各实施例。通过遵守识别的 对象之间的指针的不变性,该增量分页器保留了数据库状态的完整性,同时还 维持了效率。在一种模式中,该增量分页器通过使用当前状态指针来跟踪数据库的当前 状态来管理事务,其中该当前状态包括储存在该数据库中的所有数据的完整映 射。在该完整映射中,对于为该数据库定义的每一地址或地址表示,将有一个 数据值或空值。部分映射可包括该增量分页器用于储存一事务试图应用于在启 动该事务时存在的数据库的当前状态的改变的一个或多个对象。如果该事务被 提交给数据库,则该部分映射被追加到该数据库的原始当前状态以形成新的当 前状态。当通过新应用的部分映射来访问该新的当前状态时,该部分映射中对 地址的值分配取代了原始状态中的分配,且因此有效地盖写或改变了数据库的 原始状态中的数据值。为阐明并区分本描述中使用的术语,数据库的映射指的是对数据值的地址 值分配。数据库的完整映射指的是数据库中的所有地址值对储存在这些地址处 的数据值(或空值)的一组完整的分配。部分映射指的是一事务对数据库作出 或试图作出的一组改变或盖写,包括该事务试图写入数据的地址、以及该事务 试图写入到该地址的数据值。当一事务被提交给数据库时, 一部分映射可被添 加到先前的完整映射,得到该数据库的经更新的当前映射。由此,数据库的当 前完整映射可包括一系列部分映射,其中后来添加的部分映射可盖写或改变包 括在先前的部分映射中的地址分配。数据库的状态指的是储存在存储器、盘或大容量存储中的对象集合,在该 对象集合中储存了数据库的映射。状态中的对象包括增量分页器为事务创建的 用于储存该事务试图写入数据库的改变的缓冲区,以及其中可收集缓冲区的其 它对象。缓冲区、其它对象以及这些对象如何连接、接合和以其它方式操纵将 在以下详细描述。数据库的当前状态包括呈现出数据库的当前的、完整的映射 的那些对象。如以下解释的,增量分页器还可维护其它状态,诸如当启动一事务时该数据库的状态。增量分本文档来自技高网...

【技术保护点】
一种用于管理数据库的计算机实现的方法,包括: 将所述数据库作为一系列部分映射(100、310)来维护,其中所述部分映射中的每一个包括地址到值的至少一个分配; 识别一所选部分映射的状态为对追加到先前添加到所述系列的前导部分映射(110)的部分映射(310)的编译; 建立指向所选部分映射(310)的指针(120);以及 限制对所选部分映射(110、310)的改变,使得对为其建立了所述指针(120)的所选部分映射的状态没有改变。

【技术特征摘要】
【国外来华专利技术】...

【专利技术属性】
技术研发人员:JR豪威尔JR道瑟
申请(专利权)人:微软公司
类型:发明
国别省市:US[美国]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1