一种访问数据库记录的方法和系统与流程

文档序号:13983175阅读:114来源:国知局
一种访问数据库记录的方法和系统与流程

本发明属于数据处理技术领域,尤其涉及一种访问数据库记录的方法和系统。



背景技术:

现有技术中,对数据库中记录进行更新时经常出现并发更新的情况,即多进程程序或多线程程序同时对数据库中的一条记录进行更新。下面以多进程程序为例说明并发更新的过程:数据库对该一条记录进行加锁,由多进程程序中的一个进程程序对该一条记录进行更新,更新完后数据库对该一条记录进行解锁;数据库对该一条记录再进行加锁,由多进程程序中的另一个进程程序对该一条记录进行更新,更新完后数据库再对该一条记录进行解锁……,如此完成多进程程序中的每个进程程序对该一条记录的更新。通过数据库的加锁和解锁的过程避免了脏读等异常现象的产生,但对于更新在后的进程程序而言,由于需要等待更新在前的进程程序更新完才能对该一条记录进行更新,因而无谓地等待了很长时间,导致记录更新的效率低。



技术实现要素:

本发明所要解决的技术问题是针对现有技术的不足,提供一种访问数据库记录的方法和系统。

本发明解决上述技术问题的技术方案如下:一种访问数据库记录的方法,包括:

确定数据库待更新记录上更新程序的程序数量,根据所述程序数量创建预设数量的临时记录,初始化所述临时记录;

将所有所述更新程序对应到所述预设数量的临时记录上,并更新所述临时记录,得到每条临时记录的临时数据;

当所述数据库待更新记录上有查询程序时,根据所有所述临时记录的临时数据和所述数据库待更新记录的原始数据得到查询数据,并发送给所述查询程序。

本发明的有益效果是:通过更新程序的程序数量创建预设数量的临时记录,将更新程序对应到临时记录上,并对临时记录更新,从而使多个更新程序同时更新,避免更新程序无谓地等待,提高记录更新的效率。对创建的临时记录进行初始化,避免临时记录中存在的数据对更新和查询产生影响。在更新完成且有查询需求时,根据所有临时记录的临时数据和原始数据得到查询数据,使查询程序能够得到查询数据,满足查询需求。

本发明解决上述技术问题的另一技术方案如下:一种访问数据库记录的系统,包括:

创建模块,用于确定数据库待更新记录上更新程序的程序数量,根据所述程序数量创建预设数量的临时记录,初始化所述临时记录;

更新模块,用于将所有所述更新程序对应到所述预设数量的临时记录上,并更新所述临时记录,得到每条临时记录的临时数据;

处理模块,用于当所述数据库待更新记录上有查询程序时,根据所有所述临时记录的临时数据和所述数据库待更新记录的原始数据得到查询数据,并发送给所述查询程序。

本发明的有益效果是:通过更新程序的程序数量创建预设数量的临时记录,将更新程序对应到临时记录上,并对临时记录更新,从而使多个更新程序同时更新,避免更新程序无谓地等待,提高记录更新的效率。对创建的临时记录进行初始化,避免临时记录中存在的数据对更新和查询产生影响。在更新完成且有查询需求时,根据所有临时记录的临时数据和原始数据得到查询数据,使查询程序能够得到查询数据,满足查询需求。

附图说明

图1为本发明一实施例提供的一种访问数据库记录的方法的流程示意图;

图2为本发明另一实施例提供的一种访问数据库记录的方法的流程示意图;

图3为本发明另一实施例提供的一种访问数据库记录的方法的流程示意图;

图4为本发明另一实施例提供的一种访问数据库记录的方法的流程示意图;

图5为本发明实施例提供的一种访问数据库记录的系统的结构示意图。

具体实施方式

以下结合附图对本发明的原理和特征进行描述,所举实例只用于解释本发明,并非用于限定本发明的范围。

如图1所示,本发明实施例提供的一种访问数据库记录的方法,包括:

步骤110,确定数据库待更新记录上更新程序的程序数量,根据所述程序数量创建预设数量的临时记录,初始化所述临时记录;

具体地,更新程序可以包括:更新进程程序或更新线程程序。

数据库待更新记录是数据库中的任何一条记录,只要该一条记录存在并发更新的问题即可采用本实施例提供的方法解决。

预设数量的数值越大,更新效率越高,查询效率越低;预设数量的数值越小,更新效率越低,查询效率越高。预设数量的最大数值与程序数量的数值相同,预设数量的最小数值为1。

初始化临时记录可以包括:将创建的所有临时记录中的数据设置为零。

步骤120,将所有所述更新程序对应到所述预设数量的临时记录上,并更新所述临时记录,得到每条临时记录的临时数据;

具体地,当更新程序对应到预设数量的临时记录上时,由于预设数量的临时记录不是同一条临时记录,因而可以多条临时记录同时更新。

步骤130,当所述数据库待更新记录上有查询程序时,根据所有所述临时记录的临时数据和所述数据库待更新记录的原始数据得到查询数据,并发送给所述查询程序。

具体地,查询程序的程序数量与查询数据没有关系,查询数据只与数据库待更新记录的原始数据和所有临时记录的临时数据有关。

本发明实施例提供的一种访问数据库记录的方法,通过更新程序的程序数量创建预设数量的临时记录,将更新程序对应到临时记录上,并对临时记录更新,从而使多个更新程序同时更新,避免更新程序无谓地等待,提高记录更新的效率。对创建的临时记录进行初始化,避免临时记录中存在的数据对更新和查询产生影响。在更新完成且有查询需求时,根据所有临时记录的临时数据和原始数据得到查询数据,使查询程序能够得到查询数据,满足查询需求。

优选地,如图2所示,本发明实施例中,所述将所有所述更新程序对应到所述预设数量的临时记录上包括:

步骤221,对所有所述更新程序进行随机排序并编号,得到一组连续的序号;

步骤222,将所述一组连续的序号中的每个序号分别除以所述预设数量的数值,并取余数;

步骤223,将余数相同的更新程序设置在同一临时记录上。

该实施例中,以例子一说明该实施例:假设数据库待更新记录上更新程序的程序数量为7,并创建3条临时记录。该7个更新程序包括:更新程序一、更新程序二、更新程序三、更新程序四、更新程序五、更新程序六和更新程序七;该3条临时记录包括:临时记录一、临时记录二和临时记录三。

步骤221:对7个更新程序进行随机排序并编号,得到一组连续的序号;一组连续的序号包括:序号1、序号2、序号3、序号4、序号5、序号6和序号7,其中,序号1对应更新程序一,序号2对应更新程序二,序号3对应更新程序三,序号4对应更新程序四,序号5对应更新程序五,序号6对应更新程序6,序号7对应更新程序七。

步骤222:将序号1、序号2、序号3、序号4、序号5、序号6和序号7分别除以3(该例子中预设数量的数值为3),并取余数;其中,更新程序一的余数是1,更新程序二的余数是2,更新程序三的余数是0,更新程序四的余数是1,更新程序五的余数是2,更新程序六的余数是0,更新程序七的余数是1。

步骤223:将更新程序一、更新程序四和更新程序七设置在临时记录一上,将更新程序二和更新程序五设置在临时记录二上,将更新程序三和更新程序六设置在临时记录三上。

上述实施例中,通过对所有更新程序进行随机排序并编号,得到一组连续的序号,根据序号和取余原则对所有更新程序进行分配,将余数相同的更新程序分配在同一临时记录上,实现将所有更新程序以近乎平均地方式分配到每条临时记录上,从而使多个更新程序能够同时更新,避免更新程序无谓地等待,提高记录更新的效率。

优选地,如图3所示,本发明实施例中,所述更新所述临时记录,得到每条临时记录的临时数据包括:

步骤324,控制所述余数相同的更新程序依次对所述同一临时记录进行更新,直到所有所述更新程序完成更新;

步骤325,从每条所述临时记录中获取所述每条临时记录的临时数据。

该实施例中,以例子一为基础说明该实施例:

步骤324:控制更新程序一、更新程序四和更新程序七依次对临时记录一进行更新,控制更新程序二和更新程序五依次对临时记录二进行更新,控制更新程序三和更新程序六依次对临时记录三进行更新,直到7个更新程序全部完成更新。

由于临时记录一、临时记录二和临时记录三不是同一条记录,因而数据库可对临时记录一、临时记录二和临时记录三同时进行加锁或解锁,临时记录一、临时记录二和临时记录三可同时更新。

步骤325:从临时记录一中获取临时记录一的临时数据,从临时记录二中获取临时记录二的临时数据,从临时记录三中获取临时记录三的临时数据。

以控制更新程序二和更新程序五依次对临时记录二进行更新为例说明更新过程:数据库对临时记录二进行加锁,由更新程序二对临时记录二进行更新,更新完成后数据库对临时记录二进行解锁,此时临时记录二中的数据由零变为更新程序二携带的数据;数据库对临时记录二进行加锁,由更新程序五对临时记录二进行更新,更新完成后数据库对临时记录二进行解锁,此时临时记录二中的数据由更新程序二携带的数据变为更新程序二携带的数据和更新程序五携带的数据的总和。

上述实施例中,通过控制余数相同的更新程序依次对同一临时记录进行更新,从而避免脏读等异常情况发生,提高了记录更新的准确性。通过从每条临时记录中获取每条临时记录的临时数据,进而根据所有临时记录得到查询数据,使查询程序能够得到查询数据,满足查询需求。

优选地,如图4所示,本发明实施例中,所述根据所有所述临时记录的临时数据和所述数据库待更新记录的原始数据得到查询数据包括:

步骤431,将所述每条临时记录的临时数据依次相加,得到临时汇总数据;

步骤432,将所述数据库待更新记录的原始数据与所述临时汇总数据进行相加或相减运算,得到查询数据。

该实施例中,当数据库待更新记录的原始数据是集团已消费话单总额,临时汇总数据是集团实时消费话单数额时,则查询数据是由数据库待更新记录的原始数据与临时汇总数据相加得到。当数据库待更新记录的原始数据是集团账户余额,临时汇总数据是集团实时消费话单数额时,则查询数据是由数据库待更新记录的原始数据与临时汇总数据相减得到。当然,查询数据也可以由所有临时记录的临时数据和数据库待更新记录的原始数据进行其他运算得到。

上述实施例中,通过将每条临时记录的临时数据依次相加,得到临时汇总数据,再将数据库待更新记录的原始数据与临时汇总数据进行相加或相减,得到查询数据,使查询程序能够得到查询数据,从而满足查询需求。

优选地,本发明实施例中,所述程序数量的数值大于或等于所述预设数量的数值,且所述预设数量的数值大于或等于1。

该实施例中,当程序数量的数值等于预设数量的数值,且预设数量的数值大于或等于1时,则每一条临时记录均分配到一个更新程序,每一个更新程序不用等待其他更新程序更新完成才能进行更新,即每一个更新程序不用等待,直接对更新程序对应的临时记录进行更新,更新效率相对较高。但是由于临时记录的数量相对较多,需获得的临时数据较多,导致运算出查询结果的时间较长,故查询效率相对较低。

当程序数量的数值大于预设数量的数值,且预设数量的数值大于或等于1时,则所有临时记录中至少有一条临时记录要分配到至少两个更新程序,因而会有更新程序必须等待其他更新程序更新完成才能进行更新,更新效率相对较低。但是由于临时记录的数量相对较少,需获得的临时数据较少,运算出查询结果的时间较短,故查询效率相对较高。

当程序数量的数值小于预设数量的数值时,则所有临时记录中至少有一条临时记录没有分配到更新程序,相对于程序数量的数值等于预设数量的数值的情况,在程序数量的数值小于预设数量的数值的情况下更新效率并没有提高,由于临时记录的数量增加导致查询时运算量增大,查询效率反而降低。

上述实施例中,当程序数量的数值等于预设数量的数值,且预设数量的数值大于或等于1时,记录更新的效率高,更新速度快;当程序数量的数值大于预设数量的数值,且预设数量的数值大于或等于1时,更新的效率和查询的效率均得到提高。

如图5所示,本发明实施例提供的一种访问数据库记录的系统,包括:

创建模块,用于确定数据库待更新记录上更新程序的程序数量,根据所述程序数量创建预设数量的临时记录,初始化所述临时记录;

具体地,

更新模块,用于将所有所述更新程序对应到所述预设数量的临时记录上,并更新所述临时记录,得到每条临时记录的临时数据;

处理模块,用于当所述数据库待更新记录上有查询程序时,根据所有所述临时记录的临时数据和所述数据库待更新记录的原始数据得到查询数据,并发送给所述查询程序。

本发明实施例提供的一种访问数据库记录的系统,通过更新程序的程序数量创建预设数量的临时记录,将更新程序对应到临时记录上,并对临时记录更新,从而使多个更新程序同时更新,避免更新程序无谓地等待,提高记录更新的效率。对创建的临时记录进行初始化,避免临时记录中存在的数据对更新和查询产生影响。在更新完成且有查询需求时,根据所有临时记录的临时数据和原始数据得到查询数据,使查询程序能够得到查询数据,满足查询需求。

优选地,本发明实施例中,所述更新模块具体用于:

对所有所述更新程序进行随机排序并编号,得到一组连续的序号;

将所述一组连续的序号中的每个序号分别除以所述预设数量的数值,并取余数;

将余数相同的更新程序设置在同一临时记录上。

上述实施例中,通过对所有更新程序进行随机排序并编号,得到一组连续的序号,根据序号和取余原则对所有更新程序进行分配,将余数相同的更新程序分配在同一临时记录上,实现将所有更新程序以近乎平均地方式分配到每条临时记录上,从而使多个更新程序能够同时更新,避免更新程序无谓地等待,提高记录更新的效率。

优选地,本发明实施例中,所述更新模块具体还用于:

控制所述余数相同的更新程序依次对所述同一临时记录进行更新,直到所有所述更新程序完成更新;

从每条所述临时记录中获取所述每条临时记录的临时数据。

上述实施例中,通过控制余数相同的更新程序依次对同一临时记录进行更新,从而避免脏读等异常情况发生,提高了记录更新的准确性。通过从每条临时记录中获取每条临时记录的临时数据,进而根据所有临时记录得到查询数据,使查询程序能够得到查询数据,满足查询需求。

优选地,本发明实施例中,所述处理模块具体用于:

将所述每条临时记录的临时数据依次相加,得到临时汇总数据;

将所述数据库待更新记录的原始数据与所述临时汇总数据进行相加或相减运算,得到查询数据。

上述实施例中,通过将每条临时记录的临时数据依次相加,得到临时汇总数据,再将数据库待更新记录的原始数据与临时汇总数据进行相加或相减,得到查询数据,使查询程序能够得到查询数据,从而满足查询需求。

优选地,本发明实施例中,所述程序数量的数值大于或等于所述预设数量的数值,且所述预设数量的数值大于或等于1。

上述实施例中,当程序数量的数值等于预设数量的数值,且预设数量的数值大于或等于1时,记录更新的效率最高,更新速度最快;当程序数量的数值大于预设数量的数值,且预设数量的数值大于或等于1时,更新的效率和查询的效率均得到提高。

该系统的各模块所执行的功能已经在上述实施例一种访问数据库记录的方法中做了详细的介绍,这里不再赘述。

以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1