一种内存数据合并更新数据库库存的方法及其系统技术方案

技术编号:34920736 阅读:20 留言:0更新日期:2022-09-15 07:12
本发明专利技术提供了一种内存数据合并更新数据库库存的方法,该方法为:1、收到库存更新请求,生成唯一请求号,转存成内存数据,并写入本地日志。2、读取一段时间内的数据,按商品编号进行分组合并扣减库存的数量,合并成数据库更新语句,移除更新的内存数据,并删除本地日志。3、定时遍历本地日志,如果有超过1s的日志,则检查内存是否有对应唯一请求号数据,如果不存在则把本地日志写回内存数据,等待步骤2执行;本发明专利技术提高写入速度,从而提高高并发下的吞吐量。量。量。

【技术实现步骤摘要】
一种内存数据合并更新数据库库存的方法及其系统


[0001]本专利技术涉及数据库管理
,特别是一种内存数据合并更新数据库库存的方法及其系统。

技术介绍

[0002]数据表是数据库的重要对象,是存储数据的基本单元,表结构创建完成后就涉及向表中插入新的数据,以及对已有数据进行修改与删除,这就是数据更新,数据更新可以使用“对象资源管理器”和T

SQL语句两种方式实现。也就是说,数据更新是以新数据项或记录、替换数据文件或数据库中与之相对应的旧数据项或记录的过程,通过删除、修改、再插入的操作来实现。
[0003]数据库的插入更新等操作均是比较耗时的磁盘IO操作,在高并发的场景下,如何提高系统的吞吐量,mysql数据库的优化是重中之重。现有技术都是进行多次的更新数据库,这样比较耗时的磁盘IO操作;多次的更新是否可以合并成一次更新,如何保证合并的数据在更新之前因系统异常而丢失?如何保证系统恢复后可以重新执行未更新的数据?是亟待需要解决的问题。

技术实现思路

[0004]为克服上述问题,本专利技术的目的是提供一种内存数据合并更新数据库库存的方法,能够通过合并库存进行数据库批量更新,提高写入速度,从而提高高并发下的吞吐量。
[0005]本专利技术采用以下方案实现:一种内存数据合并更新数据库库存的方法,所述方法包括如下步骤:
[0006]步骤S1、接收扣减库存更新请求,为请求生成唯一请求号,将请求号和请求数据转存成内存数据,并写入本地日志;
[0007]步骤S2、读取一设定时间段内的内存数据,按商品编号进行分组合并内存数据得到扣减库存的数量,根据重组后的扣减库存的数量来得到每个商品编号对应的库存扣减的数据库更新语句,根据数据库更新语句执行数据库更新,更新成功则删除内存和日志中的数据;
[0008]步骤S3、定时检查本地日志,判断日志内容是否有大于1秒的数据,否,则不进行操作,结束流程;是,则检查内存是否有对应唯一请求号的数据,是,则不进行操作,结束流程;否,则把本地日志写回内存数据,并执行步骤S2。
[0009]进一步的,所述步骤S1进一步具体为:在收到扣减库存更新的请求后,得到参数:商品编号和扣减库存数,为该请求生成一个唯一的请求号,生成方式按照拼接规则:即服务器编号+启动版本号+内存最大编号加1生成,生产时同步更新内存最大编号,其中启动版本号会在服务器每次重新启动的时候从文本日志中读取后加1,再存回文本日志中,这样能避免因服务器重启,导致唯一请求号存在重复的情况;把收到的请求数据转化为内存数据结构{

请求号

,

商品编号

,

扣减库存数

,

time

},其中time为当前请求时间戳,存储至内
存list中,并写入本地日志,以防止因服务器异常奔溃,在内存中未来得及写入数据库的数据能够从文本日志中恢复。
[0010]进一步的,所述步骤S2进一步具体为:在内存list中读取0到200毫秒的数据,遍历数据,按商品编号进行分组,合并相同的商品编号的扣减库存数,不同的商品编号的数据单独一组,根据重组后的扣减库存的数量来得到每组的商品编号对应的库存扣减的数据库更新语句,执行数据库更新,更新成功则删除对应的内存和日志中的数据。
[0011]进一步的,所述步骤S3进一步具体为:所述数据库更新语句还未执行成功之前服务器系统因异常奔溃重启,那么内存中的list数据将会丢失,日志文件的内容保存的list内容将不会被清除;则读取当前服务器时间,转换为时间戳time,每设定时间检查一下本地日志文件,判断日志内容是否有大于1秒的数据,否,则不进行操作,结束流程;是,则检查内存是否有对应唯一请求号的数据,是,则不进行操作,结束流程;否,则把本地日志写回内存数据,并执行步骤S2。
[0012]本专利技术提供了一种内存数据合并更新数据库库存的系统,所述系统包括内存数据存储模块、内存数据合并更新模块、以及日志检测模块;
[0013]所述内存数据存储模块,接收扣减库存更新请求,为请求生成唯一请求号,将请求号和请求数据转存成内存数据,并写入本地日志;
[0014]所述内存数据合并更新模块,读取一设定时间段内的内存数据,按商品编号进行分组合并内存数据得到扣减库存的数量,根据重组后的扣减库存的数量来得到每个商品编号对应的库存扣减的数据库更新语句,根据数据库更新语句执行数据库更新,更新成功则删除内存和日志中的数据;
[0015]所述日志检测模块,定时检查本地日志,判断日志内容是否有大于1秒的数据,否,则不进行操作,结束流程;是,则检查内存是否有对应唯一请求号的数据,是,则不进行操作,结束流程;否,则把本地日志写回内存数据,并执行内存数据合并更新模块。
[0016]进一步的,所述内存数据存储模块的实现方式进一步具体为:在收到扣减库存更新的请求后,得到参数:商品编号和扣减库存数,为该请求生成一个唯一的请求号,生成方式按照拼接规则:即服务器编号+启动版本号+内存最大编号加1生成,生产时同步更新内存最大编号,其中启动版本号会在服务器每次重新启动的时候从文本日志中读取后加1,再存回文本日志中,这样能避免因服务器重启,导致唯一请求号存在重复的情况;把收到的请求数据转化为内存数据结构{

请求号

,

商品编号

,

扣减库存数

,

time

},其中time为当前请求时间戳,存储至内存list中,并写入本地日志,以防止因服务器异常奔溃,在内存中未来得及写入数据库的数据能够从文本日志中恢复。
[0017]进一步的,所述内存数据合并更新模块的实现方式进一步具体为:在内存list中读取0到200毫秒的数据,遍历数据,按商品编号进行分组,合并相同的商品编号的扣减库存数,不同的商品编号的数据单独一组,根据重组后的扣减库存的数量来得到每组的商品编号对应的库存扣减的数据库更新语句,执行数据库更新,更新成功则删除对应的内存和日志中的数据。
[0018]进一步的,所述日志检测模块的实现方式进一步具体为:所述数据库更新语句还未执行成功之前服务器系统因异常奔溃重启,那么内存中的list数据将会丢失,日志文件的内容保存的list内容将不会被清除;则读取当前服务器时间,转换为时间戳time,每设定
时间检查一下本地日志文件,判断日志内容是否有大于1秒的数据,否,则不进行操作,结束流程;是,则检查内存是否有对应唯一请求号的数据,是,则不进行操作,结束流程;否,则把本地日志写回内存数据,并执行内存数据合并更新模块。
[0019]本专利技术的有益效果在于:本专利技术能够通过合并库存进行数据库批量更新,提高写入速度,从而提高高并发下的吞吐量。并且能够运用物理日志保障系统的内存数据还未写入数本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种内存数据合并更新数据库库存的方法,其特征在于:所述方法包括如下步骤:步骤S1、接收扣减库存更新请求,为请求生成唯一请求号,将请求号和请求数据转存成内存数据,并写入本地日志;步骤S2、读取一设定时间段内的内存数据,按商品编号进行分组合并内存数据得到扣减库存的数量,根据重组后的扣减库存的数量来得到每个商品编号对应的库存扣减的数据库更新语句,根据数据库更新语句执行数据库更新,更新成功则删除内存和日志中的数据;步骤S3、定时检查本地日志,判断日志内容是否有大于1秒的数据,否,则不进行操作,结束流程;是,则检查内存是否有对应唯一请求号的数据,是,则不进行操作,结束流程;否,则把本地日志写回内存数据,并执行步骤S2。2.根据权利要求1所述的一种内存数据合并更新数据库库存的方法,其特征在于:所述步骤S1进一步具体为:在收到扣减库存更新的请求后,得到参数:商品编号和扣减库存数,为该请求生成一个唯一的请求号,生成方式按照拼接规则:即服务器编号+启动版本号+内存最大编号加1生成,生产时同步更新内存最大编号,其中启动版本号会在服务器每次重新启动的时候从文本日志中读取后加1,再存回文本日志中,这样能避免因服务器重启,导致唯一请求号存在重复的情况;把收到的请求数据转化为内存数据结构{

请求号

,

商品编号

,

扣减库存数

,

time

},其中time为当前请求时间戳,存储至内存list中,并写入本地日志,以防止因服务器异常奔溃,在内存中未来得及写入数据库的数据能够从文本日志中恢复。3.根据权利要求1所述的一种内存数据合并更新数据库库存的方法,其特征在于:所述步骤S2进一步具体为:在内存list中读取0到200毫秒的数据,遍历数据,按商品编号进行分组,合并相同的商品编号的扣减库存数,不同的商品编号的数据单独一组,根据重组后的扣减库存的数量来得到每组的商品编号对应的库存扣减的数据库更新语句,执行数据库更新,更新成功则删除对应的内存和日志中的数据。4.根据权利要求1所述的一种内存数据合并更新数据库库存的方法,其特征在于:所述步骤S3进一步具体为:所述数据库更新语句还未执行成功之前服务器系统因异常奔溃重启,那么内存中的list数据将会丢失,日志文件的内容保存的list内容将不会被清除;则读取当前服务器时间,转换为时间戳time,每设定时间检查一下本地日志文件,判断日志内容是否有大于1秒的数据,否,则不进行操作,结束流程;是,则检查内存是否有对应唯一请求号的数据,是,则不进行操作,结束流程;否,则把本地日志写回内存数据,并执行步骤S2。5.一种内存数据合并更新数据库库存的系统,其特征在于:所述系统包括内存数据存储模块、内存数据合...

【专利技术属性】
技术研发人员:刘德建叶伟李佳
申请(专利权)人:福建天晴数码有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1