面向集合的可见性状态检索方案的制作方法【
技术领域:
】[0001]本发明设及可见性状态检索(VSR),具体设及面向集合的可见性状态检索方案。【
背景技术:
】[0002]可见性状态检索(VSR)操作被用于决定一个或更多个指定行是否应当对于给定查询可见。在其事务处理是基于多版本并发控制(MVCC)或快照隔离的数据库系统中,指定行对于给定查询的可见性一般基于该行是最近何时被修改的W及该查询是何时开始的来决定。通常,对于查询需要检查的行的状态被单个逐一地进行遍历。然而,对于可能需要访问表格中的大量行或者表格中的全部行的分析查询,运种面向行的VSR操作带来很高的事务成本,因为运是对于每一行逐一进行的。【
发明内容】[0003]根据本发明的一个方面,提供一种用于确定行可见性状态的计算机实现的方法,包括:由至少一个处理器,基于与行对应的行状态位图的可见行状态值,初始化行的结果位图,其中,结果位图的值指示行是可见的还是不可见的;由至少一个处理器,确定一个或更多个行,所述一个或更多个行的相应的可见行状态值指示所述一个或更多个行是不可见的;W及由至少一个处理器,基于一个或更多个版本化的行状态值来确定是否更新结果位图W指示所述一个或更多个行是可见的,其中,一个或更多个版本化的行状态值指示相应的行是不可见的或者可能是可见的。[0004]根据本发明的一个方面,提供一种系统,包括:存储器;W及至少一个处理器,禪合到所述存储器并且被配置为:基于与行对应的行状态位图的可见行状态值,初始化行的结果位图,其中,结果位图的值指示行是可见的还是不可见的;确定一个或更多个行,所述一个或更多个行的相应可见行状态值指示所述一个或更多个行是不可见的;W及基于一个或更多个版本化的行状态值,来确定是否更新结果位图W指示所述一个或更多个行是可见的,其中一个或更多个版本化的行状态值指示相应行是不可见的或者可能是可见的。[000引根据本发明的一个方面,提供一种有形计算机可读设备,具有存储在其上的指令,所述指令当被至少一个计算设备运行时,使得所述至少一个计算设备执行W下操作,包括:基于与行对应的行状态位图的可见行状态值,初始化行的结果位图,其中,结果位图的值指示行是可见的还是不可见的;确定一个或更多个行,所述一个或更多个行的相应可见行状态值指示所述一个或更多个行是不可见的;W及基于一个或更多个版本化的行状态值,来确定是否更新结果位图W指示所述一个或更多个行是可见的,其中所述一个或更多个版本化的行状态值指示相应行是不可见的或者可能是可见的。【附图说明】[0006]附图被合并在此并且构成本说明书的一部分。[0007]图1是根据示例实施例的数据库系统的框图。[0008]图2是根据示例实施例的MVCC结构的框图。[0009]图3是示出根据示例实施例的用于确定行可见性状态的过程的流程图。[0010]图4是示出用于实现各种实施的示例计算机系统。[0011]在图中,相似的参考标号一般指示相同或相似的元素。此外,通常,参考标号的最左侧的数字表明该参考标号第一次出现的图。【具体实施方式】[0012]运里提供用于确定行可见性状态的系统、方法和/或计算机程序产品,和/或它们的组合和子组合。[0013]图1是根据示例实施例的用于确定行可见性状态的数据库系统100的框图。数据库系统100包括数据库管理系统140和与DBMS140通信的客户端IIOdDBMS140可W是在服务器上运行并且对于客户端110来说是通过网络,比如,网络120,可访问的系统,如下所述。虽然客户端110在图1中被表示为与DBMS140分离的物理机器,但是运是作为示例而不是为了限制来表示的。在另外的实施例中,客户端110与DBMS140占用同一个物理系统。在再一个实施例中,客户端110是需要访问DBMS140的软件应用。客户端110能够请求访问DBMS140。另外,客户端110和DBMS140都能够在计算机系统,比如,图4中讨论的示例计算机系统中运行。[0014]客户端110和DBMS140能够通过网络120通信。网络120可W是能够携带数据通信的任何网络或网络的组合。运样的网络120可W包括但不限于局域网、城域网和/或包括因特网的广域网。[001日]关系数据库是被组织为正式描述表格(formal1厂describedtable)的集合的数据项的汇集,从运些正式描述表格中,数据可W被访问或者可许多不同的方式重新集结,而无需重新组织运些数据库表格。关系数据库采用包含被拟合到预定义的类别中的数据的表格的集合。[0016]每个表格本身包括一个或更多个行或记录(元组)。数据库可W包含许多表格,表格中的每个存储信息。关系数据库中的表格可W包含例如几行到几百万行。行被划分为字段(field)或列;每个字段或列表示给定行的一个具体属性。例如,与雇员记录对应的行可W包括关于雇员的ID号码、姓氏和名字的首字母、职位、雇用日期、社会安全号码和薪水的信息。运些类别中的每一个反过来表示数据库字段或列。例如,在前述的雇员表格中,职位是一列,雇用日期是另一列,等等。利用运个格式,表格对于用户来说容易理解和使用。而且,表格的灵活性允许用户根据需要定义数据各种数据项之间的关系。因此,记录可W包括若个类别的信息,例如,关于个人、地点或事物的信息。表格中的每一行由记录标识符或行标识符("RID")唯一标识,所述记录标识符或行标识符("RID")可W被用作给定行的指针。[0017]在实施例中,行和/或列被存储在一个或多个表格180中。表格180的行和/或列的任何组合都可W被压缩地或非压缩地存储在表格180中。表格180的数据可W使用行压缩、页-字典压缩、页-索引压缩、列压缩或它们的任何组合来压缩。表格180的压缩的行和/或列每个都可W用不同的压缩类型来压缩。表格180的行和/或列可W被存储在存储器中。[0018]DBMS140从客户端110接收查询,比如,查询102。查询102被用于请求、修改、附加或W其它方式操纵或访问数据库存储器150中的数据。查询102由客户端110使用符合查询语言的语法发送给DBMS140。在非限制性实施例中,查询语言是结构化查询语言("SQL"),但是可W是另一种查询语言,举个几个例子,比如,S化脚本(一种用于描述数据库内部的应用特定计算的脚本语言)、多维表达式(MDX)、用于数据图表处理的WIPE(弱结构信息处理和探索)W及FOX(用于规划应用)dDBMS140能够按照查询语言解释查询102,基于该解释,生成对数据库存储器150的请求。[0019]查询102可W由用户使用客户端110或由在客户端110上运行的应用来生成。在接收到查询102时,DBMS140开始处理查询102。一旦被处理完,经处理的查询的结果就被发送到客户端110,作为查询结果104。[0020]在实施例中,查询102包括一个或更多个子查询。子查询是另一查询内包括的查询。任何子查询都可W包括一个或更多个子查询。[0021]为了处理查询102,DBMS140包括引擎160,其包括解析器162、正规化器164、编译器166和运行单元168。[0022]解析器162解析所接收的查询102。在实施例中,解析器162将查询102转换成二叉树数据结构,其表示查询102的格式。在其他实施例中,使用其它类型的数据结构。[0023]当解析完成时,解析器162将经解析的查询传递到正规化器164。正规化器164将经解析的查询正规化。例如,正规化器164从经解析的查询中消除冗余的SQL构造。正规化器164还对经解析的查询执行纠错,从而确认经解析的查询中的表格的名称符合表格180的名称。正规化器164还确认经解析的查询所描述的表格180之间的关系是有效的。[0024]一旦正规化完成,正规化器164就将经正规化的查询传递给编译器166。编译器166将经正规化的查询编译成机器可读的格式。编译过程确定查询当前第1页1 2 3 4