CN101350022B - 基于数据库逻辑锁的变更处理方法 - Google Patents
基于数据库逻辑锁的变更处理方法 Download PDFInfo
- Publication number
- CN101350022B CN101350022B CN2008101188968A CN200810118896A CN101350022B CN 101350022 B CN101350022 B CN 101350022B CN 2008101188968 A CN2008101188968 A CN 2008101188968A CN 200810118896 A CN200810118896 A CN 200810118896A CN 101350022 B CN101350022 B CN 101350022B
- Authority
- CN
- China
- Prior art keywords
- data
- transaction
- sequence number
- lock
- database
- 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.)
- Active
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种基于数据库逻辑锁的变更处理方法,包括:当所述交易请求需要更新数据时,查询数据库得到对应的记录数据和逻辑锁序号,对交易请求数据和查询数据库得到的记录数据进行检查、判断和运算处理,当满***易条件时,启动数据更新处理,使用排他锁锁定对应数据库资源,并获取逻辑锁序号和记录数据,比较所述数据更新单元使用排他锁锁定对应数据库资源获取的逻辑锁序号与所述查询数据库得到的逻辑锁序号是否一致,如果一致则根据所述交易逻辑处理单元的处理结果更新记录数据并将所述数据更新单元使用排他锁锁定对应数据库资源获取的逻辑锁序号加一,数据变更处理成功,否则数据变更处理失败。本发明通过修改应用流程,将带锁更新的处理集中在最后进行的方法,有效的解决了大量交易并发时***资源占用过多,效率较低的问题。
Description
技术领域
本发明涉及计算机数据处理方法,尤其涉及一种基于数据库逻辑锁的联机事物处理的变更处理方法。
背景技术
在计算机数据处理过程中,经常需要对数据进行查询和更新,尤其是在大数据量、大业务量的业务数据处理***中,如银行计算机***,当大量联机交易并发时,由于数据库储存的信息极其巨大,要求对数据库访问处理效率非常高。
目前银行等金融机构的核心业务***大都采用了专门的数据库软件***,在联机事务访问数据库时,采用的一般方法是:当联机需要数据更新时,先使用排他锁锁住该数据资源(如表锁或行锁),在整个交易处理结束前,向数据库提交COMMIT动作来完成表数据的变更和锁释放,或者通过ROLLBACK动作来回滚表更新事务和锁释放。目前这种方法在联机事务的处理过程中,完全通过数据库提供的***锁控制处理,非常简单方便,但由于数据库锁的存在,使得数据资源的使用具有独占性和排他性,从而影响到其他并发联机交易的实时性。对于一些较为复杂、需访问较多数据库资源、处理时间相对较长的联机事务而言,这种处理方法使得联机交易占用数据库资源的时间较长,当大量类似复杂的交易并发时,将导致大量交易的等待,占用大量的***资源,严重的将导致数据库死锁,产生数据安全隐患。同时,由于***一直未能即时反馈响应,导致用户一直处理等待状态,不知***发生了什么异常情形。因此,无论从***的稳定运行,还是从客户的友好操作来说,都迫切需要一种技术方法来避免上述问题。
中国专利(CN1110764C)公开了一种关于数据库的方法,使数据库中的多个对象被一致读取,包括通过在两个阶段上锁定来管理交易,第一阶段包括访问受交易对象影响的请求和锁定该对象,第二阶段包括提交该交易并解除第一阶段中设置的所有锁定,交易在第一阶段中执行所有的数据改变操作,在第二阶段之后尽可能执行最大量的未变操作,一个对象的每个版本分配一个计数器,所述计数器在设置一个锁定是逐一增加,在解除一个锁定是逐一减少。其中,两阶段锁定通常包括两种不同的锁定,第一锁定是共享锁定,由与一个数据对象相关的只读交易设置,并语序其他读交易访问所述对象,但锁定该对象不能改变交易。第二锁定是排他锁定,由改变数据对象的交易设置并锁定与所有其他交易相关的对象。虽然上述方法适当减少了排他锁定的处理时间,但是数据库访问效率和计算机实时处理速度方面仍有待改进。
发明内容
本发明的目的是提供一种基于数据库逻辑锁的联机事物处理的数据处理方法,能够提高数据库访问效率和计算机实时处理速度。
为了实现上述目的,本发明提供一种基于数据库逻辑锁的变更处理方法,包括:
交易终端发出交易请求;
交易处理装置接收到所述交易请求,根据所述交易请求类型判断是否需要数据更新;
当所述交易请求需要更新数据时,所述交易处理装置启动数据查询控制单元查询数据库,得到对应的记录数据和逻辑锁序号,并将交易请求数据、查询数据库得到的记录数据和逻辑锁序号传给交易逻辑处理单元处理;
所述交易逻辑处理单元对接收到的数据进行检查、判断和运算处理,当满***易条件时,所述交易逻辑处理单元启动数据更新单元进行处理,并将处理结果和所述查询数据库得到的逻辑锁序号传送给所述数据更新单元;
所述数据更新单元使用排他锁锁定对应数据库资源,并获取逻辑锁序号和记录数据,比较所述数据更新单元使用排他锁锁定对应数据库资源获取的逻辑锁序号与所述查询数据库得到的逻辑锁序号是否一致,如果一致则根据所述交易逻辑处理单元的处理结果更新记录数据并将所述数据更新单元使用排他锁锁定对应数据库资源获取的逻辑锁序号加一,数据变更处理成功,否则数据变更处理失败,然后所述数据更新单元将处理结果返回给所述交易处理装置;
所述交易处理装置将所述数据更新单元的处理结果返回给所述交易终端。
从上述技术方案可以看出,本发明通过修改应用流程,将带锁更新的处理集中在最后进行的方法,有效的解决了大量交易并发时***资源占用过多,效率较低的问题。同时,由于增加了逻辑序号字段,通过逻辑锁的判断很容易的检查出表数据发生变更,简化了数据发生变化的判断。主要优点如下:
1、提高了数据库访问效率和计算机实时处理速度
传统的表更新方法,在交易的第一张表已经开始带锁访问,因此当交易流程访问表较多,交易并发量大时,造成交易所需时间逐渐变长。而通过修改应用流程,将带锁访问表数据和COMMIT/ROLLBACK处理集中放在流程最后,极大的缩短了这种情况下的应用锁表时间,把时间控制在以单个交易本身所需时间以内,减少因等待而占用的***资源。
下表为在IBM主机环境下DB2数据库中运行本发明方法的平均处理时间,与普通的数据库锁更新方法进行了比较,试验结果如下表所示:
以上数据和验证环境等因素有关,不同环境有不一样的数据,联机事务处理时间仅和该笔交易的单体复杂度也有关。但使用本发明方法后,由于带锁更新集中在最后处理,并检查了逻辑锁,当逻辑锁发生变化,立即返回错误完成处理,理论上节省了***处理时间。
2、优化用户显示界面
传统的表更新方法,当交易流程访问表较多,交易并发量大时,由于更新同一张表的几率增大,交易等待时间逐渐变长,造成交易等待界面时间较长,但客户并不清楚为什么等待如此长的时间,界面显的不太友好。当使用了本技术,如果不同的交易在同时更新同一张表时,本交易发现读取该表的逻辑锁字段前后值不一致(查询和更新时间段内有其它交易已经更新了表的数据),则立即结束交易并返回“***忙,请稍后再试”错误提示。减少了客户等待时间,也提示了客户。
附图说明
图1是采用本发明的基于数据库逻辑锁的变更处理方法的交易处理装置的结构示意图。
图2是根据本发明的基于数据库逻辑锁的变更处理方法的总体流程图。
图3是根据本发明的基于数据库逻辑锁的变更处理方法中的更新处理的流程图。
具体实施方式
为使本发明的目的、技术方案和优点更加清晰易懂,下面结合附图,对本发明做进一步详细说明。在此,本发明的示意性实施例及其说明用于解释本发明,但并不作为对本发明的限定。
下面将对照附图,对本发明的技术方案进行详细说明。
如图1所示为采用本发明的基于数据库逻辑锁的变更处理方法的交易处理装置1,该交易处理装置1包括表数据查询控制单元2、交易逻辑处理单元3、表数据更新处理单元4。
数据查询控制单元2负责交易数据的查询获取,使用数据库查询语句(如SQL语言中的SELECT语句)查询数据库数据记录,得到联机交易所需业务数据以及该记录的逻辑锁序号A1,其中业务数据可以是包括交易***、账户余额等信息,并将联机交易请求数据、查询数据库得到的记录数据和逻辑锁序号A1传给交易逻辑处理单元3处理;
交易逻辑处理单元3主要完成联机交易中的逻辑判断处理,如检查账户余额B是否满***易条件,交易金额是否超限额等。如检查通过,则启动数据更新处理单元4进行处理,并将逻辑锁序号A1传送给数据更新处理单元4;否则退出,交易失败;
表数据更新处理单元4负责对数据库数据的更新,使用数据库更新语句(如SQL语言中的SELECT*FOR UPDATE语句)锁定该笔交易所需记录,获取逻辑锁序号A2,如果A1=A2,说明从数据查询阶段至数据更新阶段期间,该笔交易记录没有被其它并发交易更新,则更新数据库该笔记录,如:更新账户余额=原账户余额-交易发生额,A2=A2+1;否则,交易失败,退出处理。
图2为根据本发明的基于数据库逻辑锁的变更处理方法中的流程图,根据本发明的基于数据库逻辑锁的变更处理方法包括:
步骤201:交易处理装置1接收到交易终端的联机事务处理请求,根据交易请求类型判断该笔联机交易请求是否需要数据更新,如果是,则进入步骤202;否则,退出变更处理方法,按一般联机事务处理方法进行处理。其中,对于查询数据,数据不发生改变;对于新增数据,逻辑锁序号初始值赋为0;对于删除数据,则是将记录从数据库中清除掉,这三种情况都不需要更新逻辑锁序号,退出变更处理。
步骤202:交易处理装置1启动数据查询控制单元2,使用不带锁数据库查询语句(如SQL语言中的SELECT语句)查询数据库,得到该笔联机交易所需的记录数据和逻辑锁序号,并将交易请求数据、查询数据库得到的记录数据和逻辑锁序号传给交易逻辑处理单元3处理;
步骤203:逻辑处理单元3,根据事务处理的功能要求,对数据查询控制单元2传送过来的数据进行检查、判断和运算等处理,完成整个联机交易的业务逻辑检查判断,如账户余额是否足够,账户交易金额是否超限额等等。如果满***易条件,再启动数据更新单元4进行处理;
步骤204:数据更新单元4进行如图3的检查判断处理,并将处理结果返回给交易处理装置1;
步骤205:交易处理装置1将数据更新单元4的处理结果返回给请求终端。
如图3所示,根据本发明的基于数据库逻辑锁的变更处理方法中的更新处理的流程图,具体包括:
步骤301:数据更新单元4接收到逻辑处理单元3发起的数据更新请求;
步骤302:数据更新单元4根据数据更新请求,使用排他锁锁定对应数据库资源(如SQL语言中的SELECT*FOR UPDATE语句),并获取交易请求所需记录数据和逻辑锁序号;
步骤303:数据更新单元4比较数据数据查询阶段所得到的逻辑锁序号A1和数据更新阶段得到的逻辑锁序号A2是否一致,如果两者不一致,则进行步骤304,如果一致,则进行步骤305;
步骤304:数据更新单元4发出数据库回滚命令(RollBack命令),进行数据库恢复和资源释放,数据更新处理失败,进入步骤306;
步骤305:数据更新单元4累加数据库记录的逻辑锁序号A2=A2+1(如果逻辑锁序号已经到最大值则自动赋值为0),并结和逻辑处理单元3的处理结果,更新该笔记录数据如账户余额=原账户余额+交易发生额等,发出数据库更新命令(Commit命令),进行数据库更新操作,数据更新成功;
步骤306:数据更新单元4将处理结果返回给交易处理装置1,处理结束。
本发明提供了一个应用层面的访问数据库表资源的方法,该方法通过增加不带锁读取表数据进行业务和逻辑处理,把加锁的表更新处理和提交COMMIT和ROLLBACK动作的处理集中放在联机交易最后,从而减少在更新表数据时使用排他锁锁表的时间。本发明的技术方案具有以下特点:
在数据库表中新增“逻辑锁序号”字段,该字段为一数字顺序号,每次数据库更新,该字段顺序号都相应加1,以记录数据发生了改变;“逻辑锁序号”可重复使用,当到达最大值重新归0;
在软件应用层将联机事务对数据库的操作分为:数据读取、逻辑处理和数据更新三个步骤。数据读取阶段负责数据的查询获取;逻辑处理阶段主要完成业务功能的逻辑判断处理;数据更新阶段,使用排他锁锁定数据库资源,进行数据库更新操作。
采用逻辑锁法更新数据库,减少对数据库资源的锁定时间,提高***运行的时效性和并发性,具体包括如下内容:
A.在数据读取阶段,先查询得到所需数据记录的逻辑锁序号,不使用排他锁(如SQL语言中的SELECT语句),因此占用较少的***资源,并提高整个运行***的并发性能;
B.逻辑处理阶段,根据联机事务中业务逻辑的处理结果,得出具体业务是否需要更新数据库;
C.数据更新阶段,使用排他锁获取所需数据记录(如SQL语言中的SELECT FOR UPDATE语句),判断数据读取阶段与数据更新阶段的逻辑锁序号是否一致,如果逻辑锁序号不一致,则说明在数据读取阶段到数据更新阶段的这段时间,数据库中的该笔记录已发生过变更,不能继续更新数据库的操作;如果一致,则可以直接进行数据库更新,同时对逻辑锁序号进行累加。
以上所述的具体描述,对发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (6)
1.一种基于数据库逻辑锁的变更处理方法,包括步骤:
交易终端发出交易请求;
交易处理装置接收到所述交易请求,根据所述交易请求类型判断是否需要数据更新;
当所述交易请求需要更新数据时,所述交易处理装置启动数据查询控制单元查询数据库,得到对应的记录数据和逻辑锁序号,并将交易请求数据、查询数据库得到的记录数据和逻辑锁序号传给交易逻辑处理单元处理;
所述交易逻辑处理单元对接收到的数据进行检查、判断和运算处理,当满***易条件时,所述交易逻辑处理单元启动数据更新单元进行处理,并将处理结果和所述查询数据库得到的逻辑锁序号传送给所述数据更新单元;
所述数据更新单元使用排他锁锁定对应数据库资源,并获取逻辑锁序号和记录数据,比较所述数据更新单元使用排他锁锁定对应数据库资源获取的逻辑锁序号与所述查询数据库得到的逻辑锁序号是否一致,如果一致则根据所述交易逻辑处理单元的处理结果更新记录数据并将所述数据更新单元使用排他锁锁定对应数据库资源获取的逻辑锁序号加一,数据变更处理成功,否则数据变更处理失败,然后所述数据更新单元将处理结果返回给所述交易处理装置;
所述交易处理装置将所述数据更新单元的处理结果返回给所述交易终端。
2.根据权利要求1所述的方法,其中,当不需要更新数据时,退出数据变更处理,按常规联机事务处理方法进行处理。
3.根据权利要求2所述的方法,其中,所述不需要更新数据的情况包括查询数据,新增数据和删除数据。
4.根据权利要求3所述的方法,其中,对于新增数据,逻辑锁序号初始值赋为0。
5.根据权利要求1所述的方法,其中,当所述逻辑锁序号已经到最大值时,自动赋值为0。
6.根据权利要求1所述的方法,其中,当所述数据更新单元使用排他锁锁定对应数据库资源获取的逻辑锁序号与所述查询数据库得到的逻辑锁序号不一致时,所述数据更新单元发出数据库回滚命令,进行数据库恢复和资源释放。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2008101188968A CN101350022B (zh) | 2008-08-27 | 2008-08-27 | 基于数据库逻辑锁的变更处理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2008101188968A CN101350022B (zh) | 2008-08-27 | 2008-08-27 | 基于数据库逻辑锁的变更处理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101350022A CN101350022A (zh) | 2009-01-21 |
CN101350022B true CN101350022B (zh) | 2010-04-14 |
Family
ID=40268817
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2008101188968A Active CN101350022B (zh) | 2008-08-27 | 2008-08-27 | 基于数据库逻辑锁的变更处理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101350022B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2221733A1 (en) * | 2009-02-17 | 2010-08-25 | AMADEUS sas | Method allowing validation in a production database of new entered data prior to their release |
US8843460B2 (en) | 2009-02-17 | 2014-09-23 | Amadeus S.A.S. | Method allowing validation of large volume of updates in a large production database of new entered data prior to their release |
CN102193981B (zh) * | 2011-03-25 | 2013-01-02 | 北京世纪互联宽带数据中心有限公司 | 图形数据库联机事务中事务过期机制的实现方法 |
CN102436633A (zh) * | 2011-11-30 | 2012-05-02 | 华为技术有限公司 | 数据管理方法及***、数据库*** |
CN103886109B (zh) * | 2014-04-18 | 2017-04-12 | 北京搜狐新媒体信息技术有限公司 | 一种实现数据库行锁的方法及装置 |
CN107230153A (zh) * | 2016-03-24 | 2017-10-03 | 平安科技(深圳)有限公司 | 处理保单信息的方法和装置 |
CN108932284B (zh) * | 2018-05-22 | 2020-11-24 | 中国银行股份有限公司 | 通用逻辑调度方法、电子设备及可读存储介质 |
CN109857745A (zh) * | 2019-02-20 | 2019-06-07 | 平安科技(深圳)有限公司 | 数据库操作控制方法、装置、计算机设备和存储介质 |
CN110866757B (zh) * | 2019-11-19 | 2024-02-13 | 神州数码融信软件有限公司 | 电子账户的透支防止方法及装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1195144A (zh) * | 1997-03-27 | 1998-10-07 | 国际商业机器公司 | 框架环境中工具数据对象的锁定 |
CN1774699A (zh) * | 2003-04-24 | 2006-05-17 | 国际商业机器公司 | 共享资源的并发访问 |
CN101238476A (zh) * | 2005-04-01 | 2008-08-06 | 微软公司 | 宽松当前性约束 |
-
2008
- 2008-08-27 CN CN2008101188968A patent/CN101350022B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1195144A (zh) * | 1997-03-27 | 1998-10-07 | 国际商业机器公司 | 框架环境中工具数据对象的锁定 |
CN1774699A (zh) * | 2003-04-24 | 2006-05-17 | 国际商业机器公司 | 共享资源的并发访问 |
CN101238476A (zh) * | 2005-04-01 | 2008-08-06 | 微软公司 | 宽松当前性约束 |
Also Published As
Publication number | Publication date |
---|---|
CN101350022A (zh) | 2009-01-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101350022B (zh) | 基于数据库逻辑锁的变更处理方法 | |
CN107977376B (zh) | 分布式数据库***及事务处理方法 | |
AU2016244128B2 (en) | Processing database transactions in a distributed computing system | |
EP2550632B1 (en) | System with multiple conditional commit databases | |
EP2825957B1 (en) | Systems and methods for supporting inline delegation of middle-tier transaction logs to database | |
WO2016180164A1 (zh) | 一种分布式事务回滚方法及装置 | |
CN111259083A (zh) | 分布式事务处理方法及装置 | |
US8417680B2 (en) | System for improving access efficiency in database and method thereof | |
US7461065B2 (en) | Method and system for utilizing shared numeric locks | |
US20130339312A1 (en) | Inter-Query Parallelization of Constraint Checking | |
CN109255701B (zh) | 一种网贷业务数据处理方法 | |
CN111522631A (zh) | 分布式事务处理方法、装置、服务器及介质 | |
US20060136443A1 (en) | Method and apparatus for initializing data propagation execution for large database replication | |
EP3396560B1 (en) | Database operating method and device | |
CN105786595A (zh) | 一种两段式提交的事务控制方法 | |
CN114661718A (zh) | Opengauss平台下在线创建本地分区索引的方法及*** | |
US20220043796A1 (en) | Distributed pessimistic lock based on hbase storage and the implementation method thereof | |
US9542463B2 (en) | Method and system for optimizing XA open and XA close operations in a distributed database system | |
US8027996B2 (en) | Commitment control for less than an entire record in an in-memory database in a parallel computer system | |
US5964828A (en) | Method and system for maintaining the integrity of objects | |
CN109919623A (zh) | 防止账户透支方法、装置、设备及可读存储介质 | |
CN112035503B (zh) | 交易数据更新方法及装置 | |
CN106708948A (zh) | 一种用主键唯一性实现事务操作的方法及装置 | |
US7502792B2 (en) | Managing database snapshot storage | |
CN102193981B (zh) | 图形数据库联机事务中事务过期机制的实现方法 |
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 |