一种数据库的事务提交方法和装置的制作方法

文档序号:7718614阅读:162来源:国知局
专利名称:一种数据库的事务提交方法和装置的制作方法
技术领域
本发明涉及多媒体技术领域,尤其涉及一种数据库的事务提交方法和装置。
背景技术
视频监控是安全防范系统的重要组成部分,它是一种防范能力较强的综合系统。 视频监控以其直观、准确、及时和信息内容丰富而广泛应用于许多场合。近年来,随着计算 机、网络以及图像处理、传输技术的飞速发展,视频监控技术也有了长足的发展,其是以计 算机为核心的多媒体监控,把管理权交给计算机,不以人的主观意识为转移。
借助现代网络技术,视频监控系统从传统的本地化走向网络化,从集中式发展 到分布式。分布式视频监控系统由业务节点群rgmgroup (通常包含N个业务处理节 点rgmnode)和中心服务节点组cmsgroup (通常包含M个中心服务节点cmsnode)构成, rgmgroup负责系统的实际业务,cmsgroup负责系统的数据维护,具体的,分布式视频监控 系统的具体架构如图l所示。 以上分布式视频监控系统的数据管理者是64位主存分布式数据库。64位主 存分布式数据库分为前端服务进程(图1中为dbproxy)和后端服务进程(图1中为 dbcorethrd),前端服务进程部署在业务处理节点上,后端服务进程部署在中心服务节点 上,具体的,该数据库部署图如图2所示。 作为数据库管理系统,64位主存分布式数据库需要在数据库层面上提供事务处理 能力,即满足事务的ACID特性。其中,A表示Atomic,原子性指整个数据库事务是不可分 割的工作单元,"要么全部,要么全不";C表示Consistency, —致性即数据库事务不能破坏 关系的完整性以及业务逻辑上的一致性;I表示Isolation隔离性当不同的事务同时操纵 相同的数据时,每个事务都有互不相交的完整数据空间;而D指Durability,持久性只要 事务成功结束,它对数据库所作的更新就必须永久保存下来。 电信级的现网业务需要系统以极高的吞吐量运转,传统的数据库事务提交策略往 往依赖本地记录日志文件以备UNDO (回滚)和REDO (恢复),而在追求高速的电信级视频监 控系统中,这样的频繁磁盘IO操作是不合适的。针对高吞吐量要求的监控业务环境,与之 配套的主存数据库如何在事务的执行性能和稳定提交之间取得平衡,是亟待解决的问题。

发明内容
本发明提供一种数据库的事务提交方法和装置,用以解决传统的数据库事务提交 策略往往依赖本地记录日志文件,不能满足当前监控业务高吞吐量要求的问题。
本发明一种数据库的事务提交方法,应用在分布式视频监控系统中,包括
步骤1、前端服务进程加载事务,建立对应的事务映像空间,并执行所述事务,若所 述事务执行结束后,事务映像空间内存在更新数据,则构造事务提交包,并向对应的后端服 务进程发起事务提交请求,若提交成功,执行步骤2,否则,执行步骤3 ; 步骤2、判断所述事务是否为首次提交,若是,利用所述事务映像空间中的更新数据覆盖本地内存中的主版本,否则,向本地flash写入本地事务日志,删除本地磁盘和延迟 事务管理器中的与所述事务对应的信息,并利用所述事务映像空间中的更新数据覆盖本地 内存中的主版本,转步骤4; 步骤3、将所述事务提交包存入本地磁盘内、向本地flash写入本地事务日志,并 将所述事务的事务标识信息插入延迟事务管理器后,利用所述事务映像空间中的更新数据 覆盖本地内存中的主版本,转步骤4 ; 步骤4、定时遍历所述延迟事务管理器,根据所述延迟事务管理器中记录的事务标 识信息,获取事务提交包后再次发起事务提交请求。
进一步的,所述步骤1中还包括 在执行所述事务时,判断所述事务是否被用户回滚,若是,则释放所述事务映像空 间,结束操作,否则,继续执行所述事务。 所述步骤1中,构造事务提交包的过程具体为所述前端服务进程压縮所述事务 映像空间内的更新数据得到提交数据,并根据该提交数据构造事务提交包,所述事务提交 包包括事务标识信息和提交数据。 所述步骤1中,当所述前端服务进程在预设时间内接收到后端服务进程发送的提 交成功消息时,判定所述事务提交成功;当所述前端服务进程在预设时间内接收到后端服 务进程发送的提交失败消息或在预设时间内未接收到后端服务进程发送的消息时,判定所 述事务提交失败。 其中,所述后端服务进程接收到所述前端服务进程发起的事务提交请求时,将事 务提交包写入自身维护的flash物理日志文件、将事务标识信息和全局提交开始信息写入 自身维护的flash逻辑日志文件,当两次写入日志均成功时,向所述前端服务进程反馈提 交成功消息,并将所述事务标识信息插入自身维护的事务提交管理器,否则,向所述前端服 务进程反馈提交失败消息。 进一步的,所述后端服务进程定时遍历所述事务提交管理器,将所述flash物理
日志文件内写入的事务提交包写入自身维护的磁盘内,将事务标识信息和全局提交结束信
息写入flash逻辑日志文件,并删除所述事务提交管理器内插入的事务标识信息。 所述步骤2中,向所述本地flash写入所述事务对应的事务标识信息、事务提交包
的文件名信息和本地提交结束信息,并删除本地磁盘中存储的与所述事务对应的事务提交
包和延迟事务管理器中的与所述事务对应的事务标识信息; 所述步骤3中,向所述本地flash写入本地事务日志具体为向本地flash写入与
所述事务对应的事务标识信息、事务提交包的文件名信息和本地提交开始信息。 所述步骤4中,根据延迟事务管理器中记录的事务标识信息,获取事务提交包具
体为根据所述事务标识信息,查找所述本地flash,获取记录的事务提交包的文件名,并
根据该提交包的文件名查找所述本地磁盘,获取对应的事务提交包。 进一步的,所述步骤4中还包括将所述延迟事务管理器中的事务标识信息和定
时时间到达时刻的时间戳写入所述本地flash。 本发明还提供一种数据库的事务提交装置,包括 事务加载模块,用于加载事务,建立对应的事务映像空间,执行所述事务; 事务提交包构造模块,用于在事务执行结束后,判断所述事务映像空间内是否有更新数据,当存在更新数据时,构造事务提交包; 事务提交请求下发模块,用于向对应的后端服务进程发起事务提交请求,并判断 所述事务是否提交成功,若是,触发事务提交成功处理模块,否则,触发事务提交失败处理 模块; 事务提交成功处理模块,用于判断所述事务是否为首次提交,若是,利用所述事务 映像空间中的更新数据覆盖本地内存中的主版本,否则,向本地flash写入本地事务日志, 删除本地磁盘和延迟事务管理器中的与所述事务对应的信息,并利用所述事务映像空间中 的更新数据覆盖本地内存中的主版本,触发定时遍历模块; 事务提交失败处理模块,用于将所述事务提交包存入本地磁盘内、向本地flash 写入本地事务日志,并将所述事务的事务标识信息插入延迟事务管理器后,利用所述事务 映像空间中的更新数据覆盖本地内存中的主版本,触发定时遍历模块; 定时遍历模块,用于定时遍历所述延迟事务管理器,根据所述延迟事务管理器中
记录的事务标识信息,获取事务提交包后触发所述事务提交请求下发模块。 进一步的,本发明提供的装置还包括 事务回滚判断模块,用于在执行所述事务时,判断所述事务是否被用户回滚,若 是,则释放所述事务映像空间,结束操作,否则,触发所述事务提交包构造模块。
进一步的,所述事务提交包构造模块,还用于当所述事务映像空间内没更新数据 时,释放所述事务映像空间,结束操作; 所述定时遍历模块,还用于将所述延迟事务管理器中的事务标识信息和定时时间
到达时刻的时间戳写入所述本地flash。 与现有技术相比,本发明具有以下优点 本发明提供的方法紧密结合3G视频监控业务的需求,设计的框架满足事务提 交的高速需求,通过给出内存、flash、磁盘的三层存储方案,合理分配系统的事务持久化 开销;进一步的,本发明还提出前端服务进程的事务映像空间提交空间的概念,避免记录 皿do日志o


为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现 有技术描述中所需要使用的附图进行简单地介绍,显而易见地,下面描述中的附图仅仅是 本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可 以根据这些附图获得其他的附图。
图1为现有技术中分布式视频监控系统的具体架构图;
图2为现有技术中分布式数据库部署图; 图3为本发明提供的一种数据库的事务提交方法的流程图;
图4为本发明实施例提供的前端服务进程事务提交流程图;
图5为本发明实施例提供的后端服务进程接收事务处理流称图;
图6为本发明提供的一种数据库的事务提交装置的结构图。
具体实施例方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完 整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于 本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他 实施例,都属于本发明保护的范围。 本发明提供一种数据库的事务提交方法和装置,用以解决传统的数据库事务提交 策略往往依赖本地记录日志文件,不能满足当前监控业务高吞吐量要求的问题。
具体的,本发明提供的数据库的事务提交方法,如图3所示,包括以下步骤
步骤S301、前端服务进程加载事务,建立该事务的事务映像空间,并执行该事务。
优选的,在该步骤之后还进行以下操作事务执行过程中,判断该事务是否被用户 回滚,若是,则释放事务映像空间,结束操作,否则,执行步骤S302。 步骤S302、在事务执行结束后,判断事务映像空间内是否有更新数据,当存在更新 数据时,根据该更新数据构造事务提交包。 进一步的,该步骤中,当事务映像空间内没更新数据时,释放事务映像空间,结束 操作。 步骤S303、前端服务进程向对应的一个或多个后端服务进程发起事务提交请求,
并判断该事务是否提交成功,若是,执行步骤S304,否则,执行步骤S305。 步骤S304、判断该事务是否为首次提交,若是,利用事务映像空间中的更新数据覆
盖本地内存中的主版本,否则,向本地flash写入本地事务日志,删除本地磁盘和延迟事务
管理器中的与该事务对应的信息,并利用事务映像空间中的更新数据覆盖本地内存中的主
版本,转步骤S306。 该步骤中,向本地flash写入本地事务日志,并删除本地磁盘和延迟事务管理器 中的与该事务对应的信息具体为向本地flash写入该事务对应的事务标识信息、事务提 交包的文件名信息和本地提交结束信息,并删除本地磁盘中存储的与该事务对应的事务提 交包和延迟事务管理器中的与该事务对应的事务标识信息。 步骤S305、将事务提交包存入本地磁盘内、向本地flash写入本地事务日志,并将 事务的事务标识信息插入延迟事务管理器后,利用事务映像空间中的更新数据覆盖本地内 存中的主版本,转步骤S306。 该步骤中,向本地flash写入本地事务日志具体为向本地flash写入与该事务对 应的事务标识信息、事务提交包的文件名信息和本地提交开始信息。 步骤S306、定时遍历延迟事务管理器,根据延迟事务管理器中记录的事务标识信 息,获取事务提交包后转步骤S303。 本发明提供的方法紧密结合3G视频监控业务的需求,设计的框架满足事务提 交的高速需求,通过给出内存、flash、磁盘的三层存储方案,合理分配系统的事务持久化 开销;进一步的,本发明还提出前端服务进程的事务映像空间提交空间的概念,避免记录 undo日志o 下面通过一具体实施例来详细阐述本发明提供的方法的具体实现过程。 本发明实施例提供如下的事务提交组织框架前端服务进程作为数据引擎为业务
处理节点提供服务,系统运行中产生的数据更新按规则提交到中心服务节点上的后端服务进程进行持久化。 其中,前端服务进程串行执行事务,避免额外的数据库锁定和解锁操作,这样每个 时间点,在前端服务进程执行的事务不超过1个,符合事务的Isolation原则,执行完毕后 向后端服务进程提交; 后端服务进程则执行事务固化操作,将事务的日志和数据登记到不宜丢失的介质 中;以上两者的操作可以保持Atomic和Durability,当A、 I、 D特性均满足时,如果业务操 作本身不违背数据库Consistency,则ACID特性全部满足。 本发明实施例中,实现高吞吐量需求的关键点在于合理利用存储设备,构造三级存 储空间,分别为系统运算的内存、事务日志的登记载体flash、实际数据的驻留载体磁盘。
具体的,本发明实施例分为两个执行阶段,分别为前端服务进程执行的前段和后 端服务进程执行的后段。 如图4所示,事务提交的前段具体实施步骤如下 步骤S401、前端服务进程加载事务,并以全局唯一序列号Session ID标示各 事务,即事务标识信息,建立本事务专有的事务映像空间,该映像空间称为Session— dataspace,事务对系统的数据请求都将转化到本空间。 步骤S402、前端服务进程执行事务,此过程中对原有数据的修改都记录在事务映 像空间内。 具体的,该事务映像空间以记录列表的形式组织,其包含一组记录信息 Recordlnfo,形如Primary Row ID :Session ID :Row Data。 步骤S403、判断事务执行过程中是否被用户回滚,例如用户选择进行rollback, 若是,由于前端服务进程内存中的主版本数据未被修改,所以不需要做UNDO操作,直接执 行步骤S415 ;否则,执行步骤S404。 步骤S404、在事务执行结束后,判断事务映像空间是否产生更新数据,若是,执 行步骤S405 ;否则,说明本次事务并未对系统数据产生影响,例如,此次事务执行的是 Select,直接执行步骤S415。 步骤S405、事务执行结束后且事务映像空间中有更新数据,例如,此次事务执行的 是update、 delete或insert,说明本次事务需要提交,此时压縮事务映像空间中的更新数 据得到提交数据Commit Data,并构造事务提交包Commit_Packet。
其中,Commit—Packet包括Session ID :Commit Data。 步骤S406、前端服务进程向后端服务进程发起事务请求,并启动定时器,等待后端 服务进程的回应,其中,事务请求中携带有事务提交包。 优选的,该步骤中前端服务进程可以向多个后端服务进程发起事务请求,在这种 情况下,即使某个后端服务进程由于网络等问题未回应该请求,只要有一个后端服务进程 回应该请求,即证明提交成功,前端服务进程可以继续后续操作,而不需等待,该方法也在 一定程度上增加了事务提交的成功率。 同时,前端服务进程还可以记录各个后端服务进程的平均返回时间,根据该时间, 前端服务进程还可以选择后端服务进程,在后续提交的过程中可以优选返回时间短的后端 服务进程,也在一定程度上提高了事务提交效率。 另外,上述的后端服务进程还可以组成一组进程组,该进程组内部通过负载平衡来调整由哪个后端服务进程接收前端服务进程的事务请求。当然,在这种情况下就不涉及 平均返回时间的问题。 步骤S407、判断在设定的时间段内是否接收到后端服务进程回应的提交成功消 息,若是,执行步骤S411 ,否则,执行步骤S408。 步骤S408、将事务提交包Commit_Packet按文件名Local File ID存入磁盘。
步骤S409、向本地flash写入本地事务日志Local Session Log,记录SessionID 和Local File ID,标示为"本地提交开始,具体的"格式为〈Session ID :C0MMIT_Local_ Begin丄ocal File ID>。 步骤S410、将该事务的Session ID插入延迟事务管理器,执行步骤S414。 步骤S411、检查该事务的Session ID是否在延迟事务管理器中,若是,执行步骤
S412,否则,执行步骤S414。 步骤S412、检查出该事务的Session ID在延迟事务管理器中,说明此事务前次 提交失败,其物理数据和逻辑日志已经保存在本地,此次提交利用了本地保存的日志和数 据,并具体执行以下操作向本地flash写入本地事务日志,记录该事务的Session ID和 Local File ID,标示为"本地提交结束",具体的格式为Local Session Log〈Session ID: C0MMIT_Local_End :Local File ID>。 步骤S413、根据该事务的Session ID查出Local File ID,并将磁盘内的 LocalFile ID文件删除,从延迟事务管理器中删除Session ID,执行步骤S414。
步骤S414、利用事务映像空间中数据覆盖前端服务进程内存中的主版本。
步骤S415、释放事务映像空间,流程结束。 步骤S416、当前端服务进程运行到特定时刻后,即到达检查点Check Point时,遍 历延迟事务管理器,获取当前时间时刻缓存事务管理器中Session ID信息(该Session ID 信息可能为多个),将延迟事务管理器中的Session ID信息和当前时刻对应的时间戳写入 Flash上的日志文件,具体格式为丄ocal Session Log〈Check Point :Session ID List>, 其中,Session ID List是此时在延迟事务管理器中的Session ID合集,写入此日志是为 了崩溃恢复,此后根据事务的Session ID信息查找flash日志文件中的Local File ID信 息,并根据该Local File ID信息获取磁盘中的提交事务包,转到步骤S406处理。
如图5所示,事务提交的后段具体实施步骤如下 步骤S501、后端服务进程接收前端服务进程发送的事务请求,并获取事务提交包 Commit—Packet。 步骤S502、后端服务进程将事务提交包写入flash物理日志文件Physic Session Log,具体格式为〈Session ID :Commit Data〉;将Session ID信息和"全局提交开始"标 识写入flash逻辑日志文件Logic Session Log,具体格式为〈Session ID :C0MMIT_A11_ begin>。 另外,在执行该步骤的同时,后端服务进程还可以将收到的事务提交包解压缓存 在内存中,在后续写入磁盘时,可以不用从flash中读物理数据,而是直接从内存中读取, 因为flash的读取需要擦写的过程,而读取内存相对于读取flash在读取效率方面具有一 定的优势。 步骤S503、判断上述写入日志是否成功,若是,执行步骤S505 ;否则,执行步骤S504。 步骤S504、回应前端服务进程提交失败,并执行步骤S507。
步骤S505、回应前端服务进程提交成功。 步骤S506、将该事务的Session ID信息插入本地保存到的事务提交管理器,并执 行步骤S507。 步骤S507、流程结束。 步骤S508、当后端服务进程运行到特定时刻后,即到达检查点Check Point时,遍 历事务提交管理器,将事务提交管理器中的Session ID信息和当前时刻对应的时间戳写入 逻辑日志文件,具体的格式为Logic Session Log〈CheckPoint :Session ID List〉;并将 Session ID对应的提交数据Commit Data写入磁盘,以实现真正的持久化。
步骤S509、判断磁盘写入是否成功,若是执行步骤S510,否则,等待下一次遍历。
步骤S510、磁盘写入成功后,从事务提交管理器中删除Session ID信息,并写逻 辑日志文件为LogicSessionLog〈SessionlD :C0MMIT_All_end>。 以上在检查点对flash日志的操作主要是提供一种崩溃恢复的手段,分别在前端 服务进程侧和后端服务进程侧都有所部署。分别实现对本地提交过程的异常保护和全局提 交过程的异常保护。 需要说明的是,上述前端服务进程和后端服务进程进行事务提交操作中的flash 可以采用多个,从而避免了一个flash的情况下,由于该flash已写满或出现故障时影响提 交成功率的问题。 本发明实施例紧密结合3G视频监控业务的需求,设计的框架满足事务提交的高
速需求;给出了主存、flash、磁盘的3层存储方案,合理分配系统的事务持久化开销;提出
前端服务进程的串行事务执行方案,有效规避了提交过程中的锁检测和锁恢复;提出前端
服务进程的事务映像空间提交空间的概念,避免记录undo日志。 本发明还提供一种数据库的事务提交装置,如图6所示,包括 事务加载模块610,用于加载事务,建立对应的事务映像空间,执行该事务; 事务提交包构造模块620,用于在事务执行结束后,判断事务映像空间内是否有更
新数据,当存在更新数据时,构造事务提交包; 事务提交请求下发模块630,用于向对应的后端服务进程发起事务提交请求,并判 断该事务是否提交成功,若是,触发事务提交成功处理模块640,否则,触发事务提交失败处 理模块650 ; 事务提交成功处理模块640,用于判断该事务是否为首次提交,若是,利用事务映 像空间中的更新数据覆盖本地内存中的主版本,否则,向本地flash写入本地事务日志,删 除本地磁盘和延迟事务管理器中的与该事务对应的信息,并利用事务映像空间中的更新数 据覆盖本地内存中的主版本,触发定时遍历模块660 ; 事务提交失败处理模块650,用于将事务提交包存入本地磁盘内、向本地flash写 入本地事务日志,并将事务的事务标识信息插入延迟事务管理器后,利用事务映像空间中 的更新数据覆盖本地内存中的主版本,触发定时遍历模块660 ; 定时遍历模块660,用于定时遍历延迟事务管理器,根据延迟事务管理器中记录的 事务标识信息,获取事务提交包后触发事务提交请求下发模块630。
进一步的,本发明提供的装置还包括 事务回滚判断模块670,用于在执行所述事务时,判断事务是否被用户回滚,若是, 则释放事务映像空间,结束操作,否则,触发事务提交包构造模块620。 进一步的,事务提交包构造模块620,还用于当事务映像空间内没更新数据时,释 放事务映像空间,结束操作; 定时遍历模块660,还用于将延迟事务管理器中的事务标识信息和定时时间到达 时刻的时间戳写入本地flash。 显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精 神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围 之内,则本发明也意图包含这些改动和变型在内。
权利要求
一种数据库的事务提交方法,应用在分布式视频监控系统中,其特征在于,包括步骤1、前端服务进程加载事务,建立对应的事务映像空间,并执行所述事务,若所述事务执行结束后,事务映像空间内存在更新数据,则构造事务提交包,并向对应的后端服务进程发起事务提交请求,若提交成功,执行步骤2,否则,执行步骤3;步骤2、判断所述事务是否为首次提交,若是,利用所述事务映像空间中的更新数据覆盖本地内存中的主版本,否则,向本地flash写入本地事务日志,删除本地磁盘和延迟事务管理器中的与所述事务对应的信息,并利用所述事务映像空间中的更新数据覆盖本地内存中的主版本,转步骤4;步骤3、将所述事务提交包存入本地磁盘内、向本地flash写入本地事务日志,并将所述事务的事务标识信息插入延迟事务管理器后,利用所述事务映像空间中的更新数据覆盖本地内存中的主版本,转步骤4;步骤4、定时遍历所述延迟事务管理器,根据所述延迟事务管理器中记录的事务标识信息,获取事务提交包后再次发起事务提交请求。
2. 如权利要求1所述的方法,其特征在于,所述步骤1中还包括在执行所述事务时,判断所述事务是否被用户回滚,若是,则释放所述事务映像空间,结束操作,否则,继续执行所述事务。
3. 如权利要求1或2所述的方法,其特征在于,所述构造事务提交包的过程具体为所述前端服务进程压縮所述事务映像空间内的更新数据得到提交数据,并根据该提交数据构造事务提交包,所述事务提交包包括事务标识信息和提交数据。
4. 如权利要求1或2所述的方法,其特征在于,所述步骤1中,当所述前端服务进程在预设时间内接收到后端服务进程发送的提交成功消息时,判定所述事务提交成功;当所述前端服务进程在预设时间内接收到后端服务进程发送的提交失败消息或在预设时间内未接收到后端服务进程发送的消息时,判定所述事务提交失败。
5. 如权利要求4所述的方法,其特征在于,所述后端服务进程接收到所述前端服务进程发起的事务提交请求时,将事务提交包写入自身维护的flash物理日志文件、将事务标识信息和全局提交开始信息写入自身维护的flash逻辑日志文件,当两次写入日志均成功时,向所述前端服务进程反馈提交成功消息,并将所述事务标识信息插入自身维护的事务提交管理器,否则,向所述前端服务进程反馈提交失败消息。
6. 如权利要求5所述的方法,其特征在于,还包括所述后端服务进程定时遍历所述事务提交管理器,将所述flash物理日志文件内写入的事务提交包写入自身维护的磁盘内,将事务标识信息和全局提交结束信息写入flash逻辑日志文件,并删除所述事务提交管理器内插入的事务标识信息。
7. 如权利要求1或2所述的方法,其特征在于,所述步骤2中,向所述本地flash写入所述事务对应的事务标识信息、事务提交包的文件名信息和本地提交结束信息,并删除本地磁盘中存储的与所述事务对应的事务提交包和延迟事务管理器中的与所述事务对应的事务标识信息;所述步骤3中,向所述本地flash写入本地事务日志具体为向本地flash写入与所述事务对应的事务标识信息、事务提交包的文件名信息和本地提交开始信息。
8. 如权利要求7所述的方法,其特征在于,所述步骤4中,根据延迟事务管理器中记录的事务标识信息,获取事务提交包具体为根据所述事务标识信息,查找所述本地flash,获取记录的事务提交包的文件名,并根据该提交包的文件名查找所述本地磁盘,获取对应的事务提交包。
9. 如权利要求1或2或8所述的方法,其特征在于,所述步骤4中还包括将所述延迟事务管理器中的事务标识信息和定时时间到达时刻的时间戳写入所述本地flash。
10. —种数据库的事务提交装置,其特征在于,包括事务加载模块,用于加载事务,建立对应的事务映像空间,执行所述事务;事务提交包构造模块,用于在事务执行结束后,判断所述事务映像空间内是否有更新数据,当存在更新数据时,构造事务提交包;事务提交请求下发模块,用于向对应的后端服务进程发起事务提交请求,并判断所述事务是否提交成功,若是,触发事务提交成功处理模块,否则,触发事务提交失败处理模块;事务提交成功处理模块,用于判断所述事务是否为首次提交,若是,利用所述事务映像空间中的更新数据覆盖本地内存中的主版本,否则,向本地flash写入本地事务日志,删除本地磁盘和延迟事务管理器中的与所述事务对应的信息,并利用所述事务映像空间中的更新数据覆盖本地内存中的主版本,触发定时遍历模块;事务提交失败处理模块,用于将所述事务提交包存入本地磁盘内、向本地flash写入本地事务日志,并将所述事务的事务标识信息插入延迟事务管理器后,利用所述事务映像空间中的更新数据覆盖本地内存中的主版本,触发定时遍历模块;定时遍历模块,用于定时遍历所述延迟事务管理器,根据所述延迟事务管理器中记录的事务标识信息,获取事务提交包后触发所述事务提交请求下发模块。
11. 如权利10所述的装置,其特征在于,还包括事务回滚判断模块,用于在执行所述事务时,判断所述事务是否被用户回滚,若是,则释放所述事务映像空间,结束操作,否则,触发所述事务提交包构造模块。
12. 如权利10或11所述的装置,其特征在于,所述事务提交包构造模块,还用于当所述事务映像空间内没更新数据时,释放所述事务映像空间,结束操作;所述定时遍历模块,还用于将所述延迟事务管理器中的事务标识信息和定时时间到达时刻的时间戳写入所述本地flash。
全文摘要
本发明公开了一种数据库的事务提交方法和装置,该方法包括前端服务进程加载事务,建立事务映像空间;若事务执行结束后,事务映像空间内存在更新数据,则构造事务提交包,并向对应后端服务进程发起事务提交请求,若事务提交成功,判断该事务是否为首次提交,若是,利用事务映像空间中的更新数据覆盖前端服务进程内存中的主版本,否则,清除存储的与该事务对应的相关信息;若事务提交失败,存储该事务并将事务的事务标识信息插入延迟事务管理器;定时遍历延迟事务管理器,根据延迟事务管理器中记录的事务标识信息,获取事务提交包后开始事务提交。本发明兼顾事务的执行性能和提交稳定性,有效的提高了业务的吞吐量。
文档编号H04N7/18GK101699439SQ20091022237
公开日2010年4月28日 申请日期2009年11月16日 优先权日2009年11月16日
发明者文韬, 陈亚娟 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1