CN101127045B - 数据库可重复读实现方法、装置及数据库管理系统 - Google Patents

数据库可重复读实现方法、装置及数据库管理系统 Download PDF

Info

Publication number
CN101127045B
CN101127045B CN2007101224160A CN200710122416A CN101127045B CN 101127045 B CN101127045 B CN 101127045B CN 2007101224160 A CN2007101224160 A CN 2007101224160A CN 200710122416 A CN200710122416 A CN 200710122416A CN 101127045 B CN101127045 B CN 101127045B
Authority
CN
China
Prior art keywords
record
affairs
current
page
roll
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.)
Expired - Fee Related
Application number
CN2007101224160A
Other languages
English (en)
Other versions
CN101127045A (zh
Inventor
印和平
常二鹏
李世亮
卢勤元
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.)
ZTE Corp
Original Assignee
ZTE Corp
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 ZTE Corp filed Critical ZTE Corp
Priority to CN2007101224160A priority Critical patent/CN101127045B/zh
Publication of CN101127045A publication Critical patent/CN101127045A/zh
Application granted granted Critical
Publication of CN101127045B publication Critical patent/CN101127045B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种数据库可重复读实现方法,用于一种多用户、多事务并发的数据库管理系统,所述系统维护一事务列表、一回滚段及一索引树,该方法包括:步骤一,在遍历所述系统维护的事务列表时利用索引快速定位到满足条件的页,其中,所述事务列表,用于保存当前正在并发执行且未提交的事务;步骤二,遍历页记录时检查当前事务是否看得见当前记录,如果看得见,则将当前记录加入到结果集中,如果看不见则利用所述系统维护的回滚段中的撤销日志,构造出该记录的原始版本并添加到结果集中,其中所述回滚段用于记录事务所做的修改。本发明还公开了一种应用上述方法的实现装置,及一种应用所述方法和装置的数据库管理系统。

Description

数据库可重复读实现方法、装置及数据库管理系统
技术领域
本发明涉及数据库管理系统(DBMS),尤其涉及事务隔离级别,特别是多事务并发执行时数据可重复读的实现方法、装置及应用其的数据库管理系统。
背景技术
数据库管理系统中事务必须确保四种属性:原子性,即事务中所有动作或者全部执行或者全不执行;一致性,即每个事务必须保持数据库的一致性;隔离性,即每个事务的执行不受正在执行的其它事务的影响;持久性,即事务一旦提交成功,所有对数据库的改变应能持久保存在存储介质上。
设有事务T1、T2,并发执行时可能存在三种冲突:WR冲突,即T2可能会读T1刚修改过且未提交的数据,这样T2读入的数据是脏数据,称作“脏读”;RW冲突,即T2可能会修改刚被T1读入的数据且T1尚未结束,这样如果T1再次读入同一对象,会有不同的值,也称“不可重复读”;WW冲突,即T2可能会覆写刚被T1修改过的值且T1尚未结束,这样会导致数据的不一致性。串行调度可以保证数据的一致性,但不利于系统性能,因此SQL(Structured Query Language,结构化查询语言)标准中定义了四种隔离级别:可串行化读,这种隔离级别保证事务T只读其它已提交事务的修改,在T提交之前,其它事务不得修改已被T读或修改的对象,并且,如果T基于某些搜索条件读一组对象,在T完成之前,其它事务不得修改该组对象;可重复读,这种隔离级别保证事务T只读其它已提交事务的修改,在T提交之前,其它事务不得修改已被T读或修改的对象;提交读,这种隔离级别保证事务T只读其它已提交事务的修改,在T提交之前,其它事务不得修改已被T修改的对象;未提交读,这种隔离级别保证事务T只读其它已提交事务的修改。
中国专利申请号为200310124201的对比文件公开了一种在数据库里快速定位数据页中记录的方法,包括:在数据页的末端设置一个目录结构,该目录结构由一组记录偏移构成,记录偏移是某条记录在页里的位置偏移;该目录结构中的每个目录称之为dir_slot,每个dir_slot存放一个记录位置的偏移;采用快速二分法定位算法在dir_slot中查找相关记录,在定位到某个dir_slot后,根据该dir_slot中存放的记录偏移,顺序查找这相关的这一组记录,准确地定位到要找的那条记录。该方法采用查询过程和本专利中查询过程类似,都需要从索引根节点开始,采用二分查找定位到记录组,再遍历记录组,找到满足条件的记录,取得子节点,如此重复重复直至到达叶子节点。但是,该专利中实现的隔离级别是可串行化读,如果事务读到某条记录时,其它事务正在修改,则需要等待其它事务提交完成。
国际公开号为WO2004/025519A2的对比文件也公开了一种相关方法,如果当前记录的事务ID大于读视图中最大事务ID,说明记录是后来插入的,所以该记录不可见,如果当前记录的事务ID小于读视图中最小事务ID或介于事务列表中任意相邻两个事务ID之间,说明修改该记录的事务已提交,所以该记录可见,这与本发明是一致的;但是遇到未提交事务修改的记录,该发明仅将其标记为不可见而丢弃,本发明则是从记录中取出回滚指针,解码回滚指针获得撤销日志的地址,从而由撤销日志构造出一条读视图看得见的记录。
总之,目前的数据库管理系统都允许多用户、多事务并发执行,因此不可避免会遇到上述三种冲突。解决冲突最简单的方法是采用锁机制,读或写之前先对表加意向共享锁或意向排它锁、对记录加共享锁或排它锁,但这样损害了事务的并发性,牺牲了系统性能。
发明内容
本发明所要解决的技术问题在于,提供一种高效率的数据库可重复读的实现方法、装置及应用其的数据库管理系统,可以增大事务并发性,提高系统性能。
为了实现上述目的,本发明提供了一种数据库可重复读实现方法,用于一种多用户、多事务并发的数据库管理系统,所述系统维护一事务列表、一回滚段及一索引树,该方法包括:
步骤一,在遍历所述系统维护的事务列表时利用索引快速定位到满足条件的页,其中,所述事务列表,用于保存当前正在并发执行且未提交的事务;
步骤二,遍历页记录时检查当前事务是否看得见当前记录,如果看得见,则将当前记录加入到结果集中,如果看不见则利用所述系统维护的回滚段中的撤销日志,构造出该记录的原始版本并添加到结果集中,其中所述回滚段用于记录事务所做的修改。
上述数据库可重复读实现方法,所述系统维护一个回滚段的步骤,进一步包括:
步骤11,所述系统在磁盘上生成回滚段日志文件,同时在高速缓存中保存相应页,并使每次插入一撤销日志仅针对所述高速缓存中的页;
步骤12,定期清理所述高速缓存中旧的撤销日志;
步骤13,定期将所述高速缓存中的页存在到磁盘文件中。
上述数据库可重复读实现方法,所述回滚段的内存结构信息包括:回滚段ID、表空间ID、页号。
上述数据库可重复读实现方法,所述系统每次启动一个事务,将该事务信息插入到所述事务列表中;每次事务提交或回滚,将该事务从所述事务列表中删除,以实现所述事务列表中只保存未提交事务。
上述数据库可重复读实现方法,所述事务信息包括:事务ID、事务类型、指向事务列表中前后节点的指针、撤销号、分配给事务的回滚段、插入撤销指针、更新撤销指针、读视图指针。
上述数据库可重复读实现方法,所述检查当前事务是否看得见当前记录时,需要在查询节点中保存读视图结构,该读视图结构保存当前事务执行时系统中并发执行的其它事务ID、最大事务ID和最小事务ID,同时保存所述撤销日志清理相关信息,如果修改记录的事务ID小于所述事务列表看中的最小事务ID,则当前事务看得见当前记录;如果修改记录的事务ID大于事务列表中的最大事务ID,则当前事务看不见当前记录;如果修改记录的事务ID等于事务列表中任一事务ID,则当前事务看不见当前记录。
上述数据库可重复读实现方法,所述系统维护一索引树的步骤,进一步包括:
步骤21,接收到查询请求后,从索引树的根节点开始沿着索引树定位到页节点;
步骤22,定位到页节点后开始构造结果集;
步骤23,遍历页中所有记录,检查当前事务中的事务ID,遍历所述读视图中的事务列表,查看所述读视图是否看得见当前记录,如看得见,则将当前记录加入到结果集中,如看不见,则从记录中取出回滚指针,从所述回滚指针中解码出所述撤销日志在所述回滚段中的位置,然后从该回滚段中取出相关数据构造出前一次版本,并添加到结果集中;
步骤24,获取到所述前一个版本,检查所述读视图是否看的见该版本记录,如果看不见,再构造更前一次的版本,如此重复,直至所述读视图看得见某版本记录为止,将该版本记录加入到所述结果集中;
步骤25,检查是否有下一条记录,如果有,重复执行步骤23~24,直至遍历完数据页链表,如果没有,本次查询结束。
上述数据库可重复读实现方法,所述步骤21进一步包括:
步骤211,检查所述根节点是否在高速缓存中,如在,执行步骤212;如不在,将所述根节点换入所述高速缓存中,执行步骤212;
步骤212,检查当前节点是否是叶子节点,如不是,采用二分查找定位到满足查询条件的索引项;
步骤213,沿着所述索引项中指针定位到子节点,循环执行步骤212直至定位到所述页节点。
上述数据库可重复读实现方法,所述记录中包含回滚指针,该回滚指针中编码了回滚ID、回滚段表空间ID、页号、页内偏移、回滚类型。
上述数据库可重复读实现方法,在所述步骤11中,所述日志文件分为若干大小相等的页,所述页中存储所述撤销日志,所述撤销日志中包含:撤销类型、撤销号、表ID、各字段值,任何插入、修改、删除操作均生成一条撤销日志。
进一步的,本发明还提供了一种应用上述数据库可重复读实现方法的实现装置,用于一种多用户、多事务并发的数据库管理系统,所述装置包括:
一事务列表维护模块,用于维护一个事务列表,其中所述事务列表用于保存当前正在并发执行且未提交的事务;
一回滚段维护模块,用于维护一个回滚段,其中所述回滚段用于记录事务所做的修改;
一索引树维护模块,用于在执行查询操作时,遍历所述事务列表利用索引快速定位到满足条件的页,遍历页记录时检查当前事务是否看得见当前记录,如果看得见,则将当前记录加入到结果集中,如果看不见则利用所述回滚段中的撤销日志,构造出该记录的原始版本并添加到结果集中。
更进一步的,本发明还提供了一种应用上述方法和装置的数据库管理系统,包括一数据库可重复读实现装置,该装置包括:
一事务列表维护模块,用于维护一个事务列表,其中所述事务列表用于保存当前正在并发执行且未提交的事务;
一回滚段维护模块,用于维护一个回滚段,其中所述回滚段用于记录事务所做的修改;
一索引树维护模块,用于在执行查询操作时,遍历所述事务列表利用索引快速定位到满足条件的页,遍历页记录时检查当前事务是否看得见当前记录,如果看得见,则将当前记录加入到结果集中,如果看不见则利用所述回滚段中的撤销日志,构造出该记录的原始版本并添加到结果集中。
与现有技术相比,本发明提供的数据库可重复读实现方法,数据库管理系统对数据做修改会在回滚段中记录撤销日志,以便系统“回滚”。为了实现可重复读,本发明也利用撤销日志保存了原始数据,如果当前读视图“看不见”当前记录时,则从撤销日志中构建原始版本添加到结果集中,保证了一个事务查看相同的信息不会看到两个不同的版本,即如果一个事务在某个时刻读了一条记录,接下来自己如果没有修改,再读该记录应该得到同样的值,不管有没有其它事务修改过该记录。
因此,本发明的应用增大了事务并发性,有效的提高了系统性能。
附图说明
图1为本发明数据库可重复读的实现方法流程图;
图2为本发明的一实施例可重复读查询过程图;
图3为本发明的B-树聚集索引结构图;
图4为本发明数据库可重复读实现装置示意框图。
具体实施方式
下面结合附图和具体实施例详细描述本发明,以更进一步了解本发明之目的、方案及功效,但并非作为对本发明所附权利要求保护范围的限制。
参考图1,详细说明本发明数据库可重复读的实现方法,该方法用于一种多用户、多事务并发的数据库管理系统,其中,该系统维护一回滚段,一索引树,一事务列表和一读视图结构。
该数据库可重复读的实现方法包括:
步骤S10,在遍历所述系统维护的事务列表时利用索引快速定位到满足条件的页,其中,所述事务列表,用于保存当前正在并发执行且未提交的事务;
步骤S20,遍历页记录时检查当前事务是否看得见当前记录,如果看得见,则将当前记录加入到结果集中,如果看不见则利用所述系统维护的回滚段中的撤销日志,构造出该记录的原始版本并添加到结果集中,其中所述回滚段用于记录事务所做的修改。
在所述系统维护一个回滚段的步骤中:系统在磁盘上生成回滚段日志文件,同时在高速缓存中保存相应页,并使每次插入一撤销日志仅针对所述高速缓存中的页;为保证系统故障重启时,可以恢复到最新状态,系统要定期清理所述高速缓存中旧的撤销日志,并定期将所述高速缓存中的页存在到磁盘文件中。
所述回滚段对应磁盘上的一个日志文件,文件划分为若干大小相等的页,页中存储撤销日志,撤销日志中包含了撤销类型、撤销号、表ID、各字段值等信息。任何插入、修改、删除操作均生成一条撤销日志,同时将回滚段ID、页号、页内偏移等信息编码成回滚指针,同时将回滚指针保存在记录中。
在所述系统维护一棵索引树的步骤进一步包括:
步骤S201,系统接收到查询请求后,从索引树的根节点开始沿着索引树定位到页节点;
步骤S202,定位到页节点后开始构造结果集;
步骤S203,遍历页中所有记录,检查当前事务中的事务ID,遍历读视图中的事务列表,查看所述读视图是否看得见当前记录,如看得见,则将当前记录加入到结果集中,如看不见,则从记录中取出回滚指针,从回滚指针中解码出撤销日志在回滚段中的位置,然后从该回滚段中取出相关数据构造出前一次版本,并添加到结果集中;
步骤S204,获取到所述前一个版本,检查读视图是否看的见该版本记录,如果看不见,再构造更前一次的版本,如此重复,直至读视图看得见某版本记录为止,将该版本记录加入到结果集中;
步骤S205,检查是否有下一条记录,如果有,重复执行步骤S203~S204,直至遍历完数据页链表,如果没有,本次查询结束。
上述步骤S201进一步包括:
步骤S211,检查所述根节点是否在高速缓存中,如在,执行步骤S212;如不在,将所述根节点换入所述高速缓存中,执行步骤S212;
步骤S212,检查当前节点是否是叶子节点,如不是,采用二分查找定位到满足查询条件的索引项;
步骤S213,沿着所述索引项中指针定位到子节点,循环执行步骤S212直至定位到所述页节点。
在所述系统维护一个事务列表的步骤中,事务列表记录当前事务执行时系统中并发执行的其它事务,按照后来者插入到队头的原则插入,同时分配一个读视图结构,该结构保存当前事务执行时系统中并发执行的其它事务的ID以及最大事务ID、最小事务ID,同时保存撤销日志清理相关信息。系统每次启动一个事务,将事务插入到事务列表中;每次事务提交或回滚,都从事务列表中删除相应的事务,保证事务列表中只保存未提交事务。其中,事务信息包括事务ID、事务类型、指向事务列表中前后节点的指针、撤销号、分配给事务的回滚段、插入(insert)撤销指针、更新(update)撤销指针、读视图指针等。
在上述步骤S202中,每次收到客户端请求,生成一个事务,构造出结果集,返回给客户端。最后结束本次事务,释放本次事务所分配的资源。
在上述步骤S203中,检查当前事务是否看得见当前记录中,如果修改记录的事务ID小于事务列表中最小事务ID,则当前事务看得见当前记录,因为读时修改记录的事务已提交;如果修改记录的事务ID大于事务列表中最大事务ID,说明修改记录的是某个后来发生的事务,所以当前事务不应该看得见当前记录;如果修改记录的事务ID等于事务列表中任一事务ID,说明修改记录的是某个未提交事务,所以当前事务不应该看得见当前记录。
图2为本发明的一实施例可重复读查询过程图,这里描述了其中可能的一种情况,即用户没有建普通索引。下面介绍其流程:
步骤S301,监听线程接收查询请求,并分配一工作线程处理查询请求。
步骤S302,工作线程执行查询分析和查询优化,生成执行计划。
步骤S303,工作线程取出查询所用的聚集索引,首先定位到聚集索引的根节点,检查根节点是否在高速缓存中,如果不在则将其换入。
步骤S304,工作线程检查当前节点是否是叶子节点,如果不是,则采用二分查找,定位出满足条件的记录组,然后在记录组中遍历记录,取得满足条件的记录,然后取出子节点,如此重复,直至定位到页节点;如果是叶节点,则从步骤S305继续执行。
步骤S305,工作线程取出当前页的下一条记录(如果是第一次访问本页,则定位到首记录),并检查读视图是否看得见当前记录,如果看得见,则将记录加入到结果集中。如果看不见,则从当前记录中取出回滚指针,从回滚指针解码出撤销日志的地址,然后读出撤销日志,并从撤销日志构造出前一次版本,再检查读视图是否看得见该版本记录,如此重复,直至读视图看得见某个版本的记录。检查是否有下一条记录(如果本页记录已遍历完,则取下一页),如果有,则重复步骤S305,直至遍历完所有记录;如果没有,执行步骤S306。
步骤S306,本次查询结束,返回结果集。
图3为B-树聚集索引结构示意图,索引由页节点构造成树,页节点分为索引页和数据页。索引页中存放数据项,数据项由索引键和指向子节点的指针组成,每若干条索引项构成一组,便于快速查找,数据页中存放实际的数据,数据按照索引键有序存放,记录中包含每个字段的偏移、标记信息(字段偏移是一字节还是二字节、记录是否被删除、记录字段数、下一记录偏移等)、字段值。
参考图4,本发明还提供了一种应用上述数据库可重复读实现方法的实现装置400,用于一种多用户、多事务并发的数据库管理系统4,所述装置包括:
一事务列表维护模块401,用于维护一个事务列表,其中所述事务列表用于保存当前正在并发执行且未提交的事务;一回滚段维护模块402,用于维护一个回滚段,其中所述回滚段用于记录事务所做的修改;一索引树维护模块403,用于在执行查询操作时,遍历所述事务列表利用索引快速定位到满足条件的页,遍历页记录时检查当前事务是否看得见当前记录,如果看得见,则将当前记录加入到结果集中,如果看不见则利用所述回滚段中的撤销日志,构造出该记录的原始版本并添加到结果集中。所述回滚段中记录撤销日志,撤销日志中包含了撤销类型、撤销号、表ID、各字段值等信息。任何插入、修改、删除操作均生成一条撤销日志,同时将回滚段ID、页号、页内偏移等信息编码成回滚指针,同时将回滚指针保存在记录中。
本发明为了实现可重复读,数据库管理系统对数据做修改会在回滚段中记录撤销日志,以便系统回滚,撤销日志中保存了原始数据,如果当前读视图看不见当前记录时,则从撤销日志中构建原始版本添加到结果集中,从而保证了一个事务查看相同的信息不会看到两个不同的版本,即如果一个事务在某个时刻读了一条记录,接下来自己如果没有修改,再读该记录应该得到同样的值,不管有没有其它事务修改过该记录。
采用这种方法,有效的提升了系统性能,当然在一定程度上牺牲了数据正确性,但对有些事务,这是可以接受的。在数据正确性和事务并发程度上做权衡,隔离级别越高,数据正确性越高,但性能也越差。
虽然本发明已以一较佳实施例揭露如上,然其并非用以限定本发明,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。

Claims (12)

1.一种数据库可重复读实现方法,用于一种多用户、多事务并发的数据库管理系统,所述系统维护一事务列表、一回滚段及一索引树,其特征在于,该方法包括:
步骤一,在遍历所述系统维护的事务列表时利用索引定位到满足条件的页,其中,所述事务列表,用于保存当前正在并发执行且未提交的事务;
步骤二,遍历页记录时检查当前事务是否看得见当前记录,如果看得见,则将当前记录加入到结果集中,如果看不见则利用所述系统维护的回滚段中的撤销日志,构造出该记录的原始版本并添加到结果集中,其中所述回滚段用于记录事务所做的修改。
2.根据权利要求1所述的数据库可重复读实现方法,其特征在于,所述系统维护一个回滚段的步骤,进一步包括:
步骤11,所述系统在磁盘上生成回滚段日志文件,同时在高速缓存中保存相应页,并使每次插入一撤销日志仅针对所述高速缓存中的页;
步骤12,定期清理所述高速缓存中旧的撤销日志;
步骤13,定期将所述高速缓存中的页存储到磁盘文件中。
3.根据权利要求1所述的数据库可重复读实现方法,其特征在于,所述回滚段的内存结构信息包括:回滚段ID、表空间ID、页号。
4.根据权利要求1所述的数据库可重复读实现方法,其特征在于,所述系统每次启动一个事务,将该事务信息插入到所述事务列表中;每次事务提交或回滚,将该事务从所述事务列表中删除,以实现所述事务列表中只保存未提交事务。
5.根据权利要求4所述的数据库可重复读实现方法,其特征在于,所述事务信息包括:事务ID、事务类型、指向事务列表中前后节点的指针、撤销号、分配给事务的回滚段、插入撤销指针、更新撤销指针、读视图指针。
6.根据权利要求1所述的数据库可重复读实现方法,其特征在于,所述检查当前事务是否看得见当前记录,需要在查询节点中保存读视图结构,该读视图结构保存当前事务执行时系统中并发执行的其它事务ID、最大事务ID和最小事务ID,同时保存所述撤销日志清理相关信息,如果修改记录的事务ID小于所述事务列表中的最小事务ID,则当前事务看得见当前记录;如果修改记录的事务ID大于事务列表中的最大事务ID,则当前事务看不见当前记录;如果修改记录的事务ID等于事务列表中任一事务ID,则当前事务看不见当前记录。
7.根据权利要求1所述的数据库可重复读实现方法,其特征在于,所述系统维护一索引树的步骤,进一步包括:
步骤21,接收到查询请求后,从索引树的根节点开始沿着索引树定位到页节点;
步骤22,定位到页节点后开始构造结果集;
步骤23,遍历页中所有记录,检查当前事务中的事务ID,遍历所述读视图中的事务列表,查看所述读视图是否看得见当前记录,如看得见,则将当前记录加入到结果集中,如看不见,则从记录中取出回滚指针,从所述回滚指针中解码出所述撤销日志在所述回滚段中的位置,然后从该回滚段中取出相关数据构造出前一次版本,并添加到结果集中;
步骤24,获取到所述前一个版本,检查所述读视图是否看得见该版本记录,如果看不见,再构造更前一次的版本,如此重复,直至所述读视图看得见一版本记录为止,将该版本记录加入到所述结果集中;
步骤25,检查是否有下一条记录,如果有,重复执行步骤23~24,直至遍历完数据页链表,如果没有,本次查询结束。
8.根据权利要求7所述的数据库可重复读实现方法,其特征在于,所述步骤21进一步包括:
步骤211,检查所述根节点是否在高速缓存中,如在,执行步骤212;如不在,将所述根节点换入所述高速缓存中,执行步骤212;
步骤212,检查当前节点是否是叶子节点,如不是,采用二分查找定位到满足查询条件的索引项;
步骤213,沿着所述索引项中指针定位到子节点,循环执行步骤212直至定位到所述页节点。
9.根据权利要求7所述的数据库可重复读实现方法,其特征在于,所述记录中包含回滚指针,该回滚指针中编码了回滚ID、回滚段表空间ID、页号、页内偏移、回滚类型。
10.根据权利要求2所述的数据库可重复读实现方法,其特征在于,在所述步骤11中,所述日志文件分为多个大小相等的页,所述页中存储所述撤销日志,所述撤销日志中包含:撤销类型、撤销号、表ID、各字段值,任何插入、修改、删除操作均生成一条撤销日志。
11.一种数据库可重复读实现方法的实现装置,其特征在于,所述装置包括:
一事务列表维护模块,用于维护一个事务列表,其中所述事务列表用于保存当前正在并发执行且未提交的事务;
一回滚段维护模块,用于维护一个回滚段,其中所述回滚段用于记录事务所做的修改;
一索引树维护模块,用于在执行查询操作时,遍历所述事务列表利用索引定位到满足条件的页,遍历页记录时检查当前事务是否看得见当前记录,如果看得见,则将当前记录加入到结果集中,如果看不见则利用所述回滚段中的撤销日志,构造出该记录的原始版本并添加到结果集中。
12.一种数据库管理系统,包括一数据库可重复读实现装置,其特征在于,该装置包括:
一事务列表维护模块,用于维护一个事务列表,其中所述事务列表用于保存当前正在并发执行且未提交的事务;
一回滚段维护模块,用于维护一个回滚段,其中所述回滚段用于记录事务所做的修改;
一索引树维护模块,用于在执行查询操作时,遍历所述事务列表利用索引定位到满足条件的页,遍历页记录时检查当前事务是否看得见当前记录,如果看得见,则将当前记录加入到结果集中,如果看不见则利用所述回滚段中的撤销日志,构造出该记录的原始版本并添加到结果集中。
CN2007101224160A 2007-09-25 2007-09-25 数据库可重复读实现方法、装置及数据库管理系统 Expired - Fee Related CN101127045B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2007101224160A CN101127045B (zh) 2007-09-25 2007-09-25 数据库可重复读实现方法、装置及数据库管理系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2007101224160A CN101127045B (zh) 2007-09-25 2007-09-25 数据库可重复读实现方法、装置及数据库管理系统

Publications (2)

Publication Number Publication Date
CN101127045A CN101127045A (zh) 2008-02-20
CN101127045B true CN101127045B (zh) 2010-04-21

Family

ID=39095077

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2007101224160A Expired - Fee Related CN101127045B (zh) 2007-09-25 2007-09-25 数据库可重复读实现方法、装置及数据库管理系统

Country Status (1)

Country Link
CN (1) CN101127045B (zh)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8306959B2 (en) * 2010-08-06 2012-11-06 Ianywhere Solutions, Inc. Incremental maintenance of immediate materialized views with outerjoins
CN102103642B (zh) * 2011-03-25 2016-08-03 北京世纪互联宽带数据中心有限公司 基于oltp的数据删除方法、系统及图形数据库服务器
CN102750376A (zh) * 2012-06-25 2012-10-24 天津神舟通用数据技术有限公司 一种多版本数据库存储引擎系统及其相关处理的实现方法
CN102880704A (zh) * 2012-09-25 2013-01-16 上海证券交易所 一种新型的并发内存数据组织与访问方法
CN103853718B (zh) * 2012-11-28 2018-05-08 北京京东尚科信息技术有限公司 分片数据库访问方法及数据库系统
CN104281592A (zh) * 2013-07-04 2015-01-14 中国银联股份有限公司 一种基于视图的查询方法
CN106469174B (zh) * 2015-08-19 2019-10-29 阿里巴巴集团控股有限公司 数据读取方法和装置
CN105404541A (zh) * 2015-11-12 2016-03-16 用友网络科技股份有限公司 通过弱引用技术消除缓存对象不一致性的装置和方法
CN105550206B (zh) * 2015-12-01 2019-10-29 珠海多玩信息技术有限公司 结构化查询语句的版本控制方法及装置
CN108241684B (zh) * 2016-12-26 2021-08-24 航天信息股份有限公司 一种数据更新方法和集群系统
CN110019050A (zh) * 2017-10-19 2019-07-16 中兴通讯股份有限公司 一种数据回滚方法、系统、设备及计算机可读存储介质
CN110121712B (zh) * 2017-12-05 2022-04-05 华为技术有限公司 一种日志管理方法、服务器和数据库系统
CN110096389A (zh) * 2019-04-30 2019-08-06 上海达梦数据库有限公司 一种数据库的启动方法、装置、设备和存储介质
CN110232057B (zh) * 2019-05-29 2021-03-12 掌阅科技股份有限公司 数据回滚方法、电子设备、存储介质
CN110609741A (zh) * 2019-09-23 2019-12-24 中国银行股份有限公司 一种任务并发处理方法及装置
CN110807046B (zh) * 2019-10-31 2022-06-07 浪潮云信息技术股份公司 一种新型分布式newsql数据库智能事务优化方法
CN111367718B (zh) * 2020-02-26 2023-05-02 上海达梦数据库有限公司 数据库的启动方法、装置、设备和存储介质
CN111933176B (zh) * 2020-09-22 2020-12-22 成都启英泰伦科技有限公司 一种批量定位语音内容的方法及装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6363387B1 (en) * 1998-10-20 2002-03-26 Sybase, Inc. Database system providing methodology for enhancing concurrency using row update bit and deferred locking
WO2004025519A2 (en) * 2002-09-13 2004-03-25 Netezza Corporation Controlling data visibility in multi-version database systems
CN1556483A (zh) * 2003-12-31 2004-12-22 ����ͨѶ�ɷ����޹�˾ 一种在数据库里快速定位数据页中记录的方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6363387B1 (en) * 1998-10-20 2002-03-26 Sybase, Inc. Database system providing methodology for enhancing concurrency using row update bit and deferred locking
WO2004025519A2 (en) * 2002-09-13 2004-03-25 Netezza Corporation Controlling data visibility in multi-version database systems
CN1556483A (zh) * 2003-12-31 2004-12-22 ����ͨѶ�ɷ����޹�˾ 一种在数据库里快速定位数据页中记录的方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
卢炎生,杨攀宇,潘鹏.时空数据库事务并发控制的动态封锁.计算机控制与科学27 5.2005,27(5),45-47.
卢炎生,杨攀宇,潘鹏.时空数据库事务并发控制的动态封锁.计算机控制与科学27 5.2005,27(5),45-47. *

Also Published As

Publication number Publication date
CN101127045A (zh) 2008-02-20

Similar Documents

Publication Publication Date Title
CN101127045B (zh) 数据库可重复读实现方法、装置及数据库管理系统
US8768977B2 (en) Data management using writeable snapshots in multi-versioned distributed B-trees
Plattner The impact of columnar in-memory databases on enterprise systems: implications of eliminating transaction-maintained aggregates
Vo et al. Logbase: A scalable log-structured database system in the cloud
US7580941B2 (en) Automated logical database design tuning
US10055440B2 (en) Database table re-partitioning using trigger-based capture and replay
US10754854B2 (en) Consistent query of local indexes
US9576038B1 (en) Consistent query of local indexes
US9047333B2 (en) Dynamic updates to a semantic database using fine-grain locking
CN100367239C (zh) 用于数据库系统的考虑了高速缓存的并行控制方案
US10866865B1 (en) Storage system journal entry redaction
Larson et al. The Hekaton Memory-Optimized OLTP Engine.
Giceva et al. Hybrid OLTP and OLAP.
GC A critical comparison of NOSQL databases in the context of ACID and BASE
Riegger et al. Efficient data and indexing structure for blockchains in enterprise systems
Skidanov et al. A column store engine for real-time streaming analytics
US7542983B1 (en) Delaying automated data page merging in a B+tree until after committing the transaction
Schönig Mastering PostgreSQL 12: Advanced techniques to build and administer scalable and reliable PostgreSQL database applications
Schönig Mastering PostgreSQL 11: Expert techniques to build scalable, reliable, and fault-tolerant database applications
Vogt Adaptive Management of Multimodel Data and Heterogeneous Workloads
Schönig Mastering PostgreSQL 10: Expert techniques on PostgreSQL 10 development and administration
Purohit et al. A comparative study on open source database management system
Strate et al. Expert Performance Indexing in SQL Server
Zhang et al. Efficiently Making Cross-Engine Transactions Consistent
Hitchcock In Search of an Efficient Data Structure for a Temporal-Graph Database

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20100421

Termination date: 20160925