数据库的数据修改方法及装置与流程

文档序号:32816157发布日期:2023-01-04 03:29阅读:70来源:国知局

1.本技术涉及数据处理领域,具体而言,涉及一种数据库的数据修改方法及装置。


背景技术:

2.数据库作为常用的信息系统的底层数据存储产品,会话之间的相互阻塞是非常常见的一种情况,现在流行的各种关系型数据库产品中,几乎都实现了mvcc(multi version concurrency control,多版本并发控制)的功能,即:默认隔离级别下读数据与修改数据相互之间是互不影响的,但是,不同会话之间相互修改数据是存在排它锁阻塞的,即:会话1修改某条数据时,会话2如果也要修改这条数据,必须等待会话1执行完毕之后会话2才能进行修改,同理,如果此时还有会话3、会话4、会话n都需要修改这条数据,他们之间就形成了排队,必须等待其前面的会话都执行修改完毕后,自身才能执行修改,即:形成了排它锁的阻塞等待,从而导致数据库中的数据修改效率降低。
3.针对上述的问题,目前尚未提出有效的解决方案。


技术实现要素:

4.本技术实施例提供了一种数据库的数据修改方法及装置,以至少解决数据库中的数据修改效率低的技术问题。
5.根据本技术实施例的一个方面,提供了一种数据库的数据修改方法,包括:接收第一数据的修改指令,所述修改指令中至少包含所述第一数据的标识和变化信息;在所述修改指令通过验证的情况下,从数据库的多行第二数据中确定待修改的目标数据,并按照所述变化信息对所述目标数据进行修改,其中,所述多行第二数据是由所述第一数据拆分得到的;在所述目标数据修改完成后,发出指示信息,所述指示信息用于表示所述第一数据已修改完成。
6.可选地,所述第一数据通过以下方式拆分为多行第二数据,包括:将所述第一数据的标识确定为所述多行第二数据的标识;将所述第一数据按照预设规则分配到所述多行第二数据中,其中,所述多行第二数据共同组成所述第一数据;按照所述多行第二数据的排列顺序由小到大依次为所述多行第二数据标注行序号,完成拆分。
7.可选地,从多行第二数据中确定待修改的目标数据,包括:在所述修改指令由一个对话发出的情况下,从所述多行第二数据中选择一行第二数据,确定为所述目标数据;在所述修改指令由多个对话分别发出且所述修改指令存在多个的情况下,从所述多行第二数据中选择多行第二数据,确定为所述目标数据,其中,每行第二数据与所述多个对话一一对应。
8.可选地,从多行第二数据中确定待修改的目标数据,包括:从所述修改指令中确定所述变化信息;从所述多行第二数据中确定修改策略与所述变化信息匹配的一行或多行第二数据为目标数据。
9.可选地,从所述多行第二数据中确定修改策略与所述变化信息匹配的一行或多行
第二数据为目标数据,包括:在所述变化信息为数值且在变化信息对应的数值大于预设值的情况下,确定所述变化信息对应的数值为第一数值;从所述多行第二数据中确定一行或多行第二数据为目标数据,其中,所述目标数据的修改策略支持按照所述第一数值修改所述目标数据中的数值;在所述变化信息对应的数值小于所述预设值的情况下,确定所述变化信息对应的数值为第二数值;从所述多行第二数据中确定一行或多行第二数据为目标数据,其中,所述目标数据的修改策略支持按照所述第二数值修改所述目标数据中的数值。
10.可选地,所述修改指令通过以下方式进行验证,包括:获取所述修改指令中的变化信息;在所述变化信息对应的数值与所述第一数据中的数值相匹配的情况下,确定所述修改指令通过验证。
11.可选地,所述方法还包括:所述多行第二数据中还包括预设数据,所述预设数据的修改策略支持按照任意目标数值修改所述预设数据中的数值,其中,所述目标数值为所述变化信息对应的数值。
12.可选地,在所述预设数据中的数值与所述目标数值不匹配的情况下,所述方法还包括:修改所述预设数据中的数值,修改后的预设数据中的数值不大于所述第一数据中的数值。
13.根据本技术实施例的另一方面,还提供了一种数据库的数据修改装置,包括:接收模块,用于接收第一数据的修改指令,修改指令中至少包含第一数据的标识和变化信息;修改模块,用于在修改指令通过验证的情况下,从多行第二数据中确定待修改的目标数据,并按照变化信息对目标数据进行修改,其中,多行第二数据是由第一数据拆分得到的;发送模块,用于在目标数据修改完成后,发出指示信息,指示信息用于表示第一数据已修改完成。
14.根据本技术实施例的再一方面,还提供了一种非易失性存储介质,非易失性存储介质包括存储的程序,其中,在程序运行时控制非易失性存储介质所在设备执行上述数据库的数据修改方法。
15.根据本技术实施例的再一方面,还提供了一种计算机设备,包括存储器和处理器,处理器用于运行程序,其中,程序运行时执行上述数据库的数据修改方法。
16.在本技术实施例中,采用接收第一数据的修改指令,修改指令中至少包含第一数据的标识和变化信息;在修改指令通过验证的情况下,从多行第二数据中确定待修改的目标数据,并按照变化信息对目标数据进行修改,其中,多行第二数据是由第一数据拆分得到的;在目标数据修改完成后,发出指示信息,指示信息用于表示第一数据已修改完成的方式,通过将第一数据拆分成多条第二数据,然后按照修改指令中的变化信息对第二数据进行修改,达到了让不同的修改指令修改不同的第二数据目的,从而实现了提高数据库数据修改效率的技术效果,进而解决了数据库中的数据修改效率低技术问题。
附图说明
17.此处所说明的附图用来提供对本技术的进一步理解,构成本技术的一部分,本技术的示意性实施例及其说明用于解释本技术,并不构成对本技术的不当限定。在附图中:图1是根据本技术实施例的一种用于数据库的数据修改方法的计算机终端(或移动设备)的硬件结构框图;图2是根据本技术的一种数据库的数据修改方法流程图;
图3是根据本技术实施例的一种可选的数据库的数据修改方法装置结构示意图。
具体实施方式
18.为了使本技术领域的人员更好地理解本技术方案,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分的实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本技术保护的范围。
19.需要说明的是,本技术的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本技术的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
20.根据本技术实施例,还提供了一种数据库的数据修改方法的实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
21.本技术实施例所提供的方法实施例可以在移动终端、计算机终端、云端服务器或者类似的运算装置中执行。图1示出了一种用于实现数据库的数据修改方法的计算机终端(或移动设备)的硬件结构框图。如图1所示,计算机终端10(或移动设备10)可以包括一个或多个(图中采用102a、102b,
……
,102n来示出)处理器102(处理器102可以包括但不限于微处理器mcu或可编程逻辑器件fpga等的处理装置)、用于存储数据的存储器104、以及用于通信功能的传输模块106。除此以外,还可以包括:显示器、输入/输出接口(i/o接口)、通用串行总线(usb)端口(可以作为i/o接口的端口中的一个端口被包括)、网络接口、电源和/或相机。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述电子装置的结构造成限定。例如,计算机终端10还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。
22.应当注意到的是上述一个或多个处理器102和/或其他数据处理电路在本文中通常可以被称为“数据处理电路”。该数据处理电路可以全部或部分的体现为软件、硬件、固件或其他任意组合。此外,数据处理电路可为单个独立的处理模块,或全部或部分的结合到计算机终端10(或移动设备)中的其他元件中的任意一个内。如本技术实施例中所涉及到的,该数据处理电路作为一种处理器控制(例如与接口连接的可变电阻终端路径的选择)。
23.存储器104可用于存储应用软件的软件程序以及模块,如本技术实施例中的数据库的数据修改方法对应的程序指令/数据存储装置,处理器102通过运行存储在存储器104内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的数据库的数据修改方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步
包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至计算机终端10。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
24.传输模块106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括计算机终端10的通信供应商提供的无线网络。在一个实例中,传输模块106包括一个网络适配器(network interface controller,nic),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输模块106可以为射频(radio frequency,rf)模块,其用于通过无线方式与互联网进行通讯。
25.显示器可以例如触摸屏式的液晶显示器(lcd),该液晶显示器可使得用户能够与计算机终端10(或移动设备)的用户界面进行交互。
26.根据本技术实施例,提供了一种数据库的数据修改方法的实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
27.图2是根据本技术实施例的数据库的数据修改方法的流程图,如图2所示,该方法包括如下步骤:步骤s202,接收第一数据的修改指令,修改指令中至少包含第一数据的标识和变化信息;步骤s204,在修改指令通过验证的情况下,从多行第二数据中确定待修改的目标数据,并按照变化信息对目标数据进行修改,其中,多行第二数据是由第一数据拆分得到的;步骤s206,在目标数据修改完成后,发出指示信息,指示信息用于表示第一数据已修改完成。
28.通过上述步骤,可以实现通过将第一数据拆分成多条第二数据,然后按照修改指令中的变化信息对第二数据进行修改,达到了让不同的修改指令修改不同的第二数据目的,从而实现了提高数据库数据修改效率的技术效果,进而解决了数据库中的数据修改效率低技术问题。
29.在步骤s202中,第一数据可以是数据库中的一行数据,这一行数据可以用于表示商品的库存量、任务数量、点赞数量等与数量对应的数据,修改指令是通过终端与数据库间的会话发送的。会话的数量可以是一个也可以是多个,修改指令可以是一条也可以是多条。
30.在步骤s204中,修改指令通过验证,可以用于表示,修改指令是通过验证通过的会话发送来的,也可以表示修改指令中携带的变化信息对应的数值与第一数据中的数值相匹配,例如:变化信息为负1,第一数据中的数值为3,则可以认为第一数据中的数值为3可以按照变化信息进行修改,进而认为修改指令通过验证。
31.需要进行说明的是,将第一数据拆分为多行第二数据,可以是将第一数据中的数值拆分成多个第二数据,例如:第一数据中的数值为10000,可以将第一数据拆分成100行第二数据,每行第二数据中的数值可以为100,也可以为其他数值。
32.在步骤s206中,指示信息用于发送至终端设备中进行展示。
33.需要进行说明的是,由于在数据库里面修改数据之后,事务日志需要持久化到磁盘,如果磁盘越慢,后面的会话等待的时间就会越长;由于数据库主库提交事务日志之后还
需要等到从库也提交事务日志,那么一次修改所花费的时间会更长,那么越靠后面的会话会由于前面的会话阻塞,会等待更长的时间。
34.在实际的高并发场景下,例如:某商品打折,导致很多人抢购,按照默认的方式,数据库里的一张表中存储了一行数据,该数据记录了该商品的库存,每一个人来抢购的时候,就会修改这一行数据的库存值,当同一时段内大量的请求都在修改这一条相同的数据的情况下,就会导致较长时长的等待。
35.而按照本技术提供的方法,例如:将该商品的库存值记录到1000行数据里面去,而不是一行数据,如库存为100000,那么每一条数据的库存值就是100000/1000,即:100,那么当用户抢购的时候,让不同的用户去修改这一千条数据里面的其中一条,这样用户相互之间更新数据就更新到了不同的行上,而不是更新到同一行数据,这样就可以降低阻塞,从而提高修改效率。
36.下面通过具体的实施例来详细说明上述步骤s202至步骤s206。
37.在步骤s204中,将第一数据拆分成多行第二数据可以通过以下方式进行拆分,将第一数据的标识确定为多行第二数据的标识;将第一数据中的数值按照预设规则分配到多行第二数据中,其中,多行第二数据中的数值之和等于第一数据中的数值;按照多行第二数据的排列顺序由小到大依次为多行第二数据标注行序号,完成拆分。
38.以第一数据中的数值为10000,第一数据的标识为235为例,确定多行第二数据的标识均为235,将第一数据中的数值均分为100份,即拆分为100个第二数据,则每个第二数据中的数值为100。而每个第二数据的行序号依次为1至100。
39.在实际的应用场景中,第一数据的标识可以是一种商品的标识、也可以是一种任务的标识等用于表征事物特征的标识,第一数据中的数值可以是表示事物的数量,例如:商品的数量。
40.在本技术的一些实施例中,从多行第二数据中确定待修改的目标数据可以通过以下方式修改,具体的,在修改指令由一个对话发出的情况下,从多行第二数据中选择一行第二数据,确定为目标数据;在修改指令由多个对话分别发出且修改指令存在多个的情况下,从多行第二数据中选择多行第二数据,确定为目标数据,其中,每行第二数据与多个对话一一对应。
41.在实际的应用场景中,在一种可选的方式中,由对话1发出的修改指令,变化信息为负1的情况下,从多行第二数据中确定一行第二数据为目标数据;在另一种可选的方式中,由对话1、对话2和对话3同时发出修改指令,变化信息均为负1的情况下,从多行第二数据中,选择三行第二数据,其中,对话1、对话2和对话3分别对应一行第二数据,并对对应的第二数据进行修改,例如:对话1对应第二数据中的数值为100,按照变化信息负1进行修改后,该第二数据中的数值为99。
42.在一种可选的方式中,从修改指令中确定变化信息;从多行第二数据中确定修改策略与变化信息匹配的一行或多行第二数据为目标数据,具体的,在变化信息是数值且变化信息对应的数值大于预设值的情况下,确定变化信息为第一数值;从多行第二数据中确定一行或多行第二数据为目标数据,其中,目标数据的修改策略支持按照第一数值修改目标数据中的数值;在变化信息对应的数值小于预设值的情况下,确定变化信息为第二数值;从多行第二数据中确定一行或多行第二数据为目标数据,其中,目标数据的修改策略支持
按照第二数值修改目标数据中的数值。
43.以预设值为负2,变化信息为负1为例,将多行第二数据分为两部分,第一部分的第二数据支持变化信息为负2的修改,而第二部分的第二数据不支持变化信息为负2的修改。
44.对修改指令的一种可选的验证方式为,获取修改指令中的变化信息;在变化信息与第一数据中的数值相匹配的情况下,确定修改指令通过验证。
45.具体地,在一种可选的方式中,在第一数据中的数值与变化信息的和大于零的情况下,确定变化信息与第一数据中的数值相匹配。
46.在本技术的一些实施例中,第二数据中的数值与变化信息的和大于零的情况下,确定第二数据中的数值与变化信息相匹配。
47.可以理解的是,在另一可选的方式中,第二数据中的数值与变化信息的和小于预设阈值的情况下,确定第二数据中的数值与变化信息相匹配。匹配规则可以根据实际的场景设定。
48.在本技术的另一些实施例中,多行第二数据中还包括预设数据,预设数据的修改策略支持按照任意变化信息修改预设数据中的数值,其中,在预设数据中的数值与变化信息不匹配的情况下,修改预设数据中的数值,修改后的预设数据中的数值不大于第一数据中的数值。
49.在变化信息为负3的情况下,多行第二数据中不存在修改策略支持按照负3修改的第二数据,或目标数据中的数值与负3的和小于零的情况下,由预设数据按照负3的变化信息修改其中的数值,例如:预设数据中的数值为200,则修改后为197;在预设数据中的数值为2的情况下,则需要修改预设数据中的数值,以除预设数据以外的第二数据中的数值之和为30为例,可以修改预设数据中的数值为第一数值,第一数值的范围不大于32。
50.在实际的应用场景中,行序号字段就是第二数据的行序号,例如:把某商品拆分成1000行,那么这个商品会有1000+1=1001条数据,其中“行序号”对应的值分别为0、1、2、3....1000。
51.可以根据预设的修改策略让不同的终端设备发起的连接会话去更新不同的行,例如:行序号为1到1000的行,在一种可选的方式中,允许用户抢购的库存大于1,但存在某个用户会购买2个、3个该商品,那么可能会出现修改某个“行序号”时,发现库存不够,此时,我们就让该会话去修改“行序号”为0的行。
[0052]“库存可用状态”字段可以用于查询某个商品是否还有可用的库存时进行使用的,并且是为了拿来提高查询性能的,当“商品表”里面的某个商品的每一行数据库存都为0之后,我们会更新这个“库存可用状态”字段为0,即:库存不可用,立刻返回了。
[0053]
本技术提供的方法可以通过数据库中自带的序列功能获取第二数据的行序号,也可以不使用数据库的特性,而是从外部传入一个明确的“行序号”进行库存修改,例如:redis(远程字典服务)中的计数器,每个对话对数据库中的数据进行修改时,都先利用redis获取一个计数器值,从而得到这个“行序号”值,从而进入数据库时就可以直接修改某个“行序号”对应的数值。
[0054]
在实际的应用场景中,在本技术提供的数据库的数据修改方法的基础上本技术实施例还提供了一种商品抢购方法,接收修改指令包括:第一数据标识(商品标识)和变化信息(抢购数量),在商品库存数量(第一数据中的数值)大于变化信息(抢购数量的情况下)通
过验证,在通过验证的情况下,利用数据库中自带的序列功能获取目标行序号的值,修改目标行序号中的库存值,在目标行序号中的库存值大于抢购数量的情况下,对目标行序号中的库存值进行扣减,在目标行序号中的库存值小于抢购数量的情况下,可以将该商品的全部库存量转移到目标行序号中的库存值中,进行扣减。
[0055]
本技术实施例提供的数据库的数据修改方法,还应用于本技术实施例提供的一种数据库的数据修改方法装置,如图3所示,包括:接收模块40,用于接收第一数据的修改指令,修改指令中至少包含第一数据的标识和变化信息;修改模块42,用于在修改指令通过验证的情况下,从多行第二数据中确定待修改的目标数据,并按照变化信息对目标数据进行修改,其中,多行第二数据是由第一数据拆分得到的;发送模块44,用于在目标数据中的数值修改完成后,发出指示信息,指示信息用于表示第一数据已修改完成。
[0056]
修改模块42包括:拆分子模块,拆分子模块用于将第一数据的标识确定为多行第二数据的标识;将第一数据中的数值按照预设规则分配到多行第二数据中,其中,多行第二数据中的数值之和等于第一数据中的数值;按照多行第二数据的排列顺序由小到大依次为多行第二数据标注行序号,完成拆分。
[0057]
拆分子模块包括:第一确定单元和第二确定单元,第一确定单元用于在修改指令由一个对话发出的情况下,从多行第二数据中选择一行第二数据,确定为目标数据;在修改指令由多个对话分别发出且修改指令存在多个的情况下,从多行第二数据中选择多行第二数据,确定为目标数据,其中,每行第二数据与多个对话一一对应;第二确定单元从修改指令中确定变化信息;从多行第二数据中确定修改策略与变化信息匹配的一行或多行第二数据为目标数据;第二确定单元包括:第一确定子单元、第二确定子单元和第三确定子单元,第一确定子单元用于在变化信息对应的数值大于预设值的情况下,确定变化信息为第一数值;从多行第二数据中确定一行或多行第二数据为目标数据,其中,目标数据的修改策略支持按照第一数值修改目标数据;在变化信息对应的数值小于预设值的情况下,确定变化信息为第二数值;从多行第二数据中确定一行或多行第二数据为目标数据,其中,目标数据的修改策略支持按照第二数值修改目标数据中的数值;第二确定子单元用于在变化信息与第一数据中的数值相匹配的情况下,确定修改指令通过验证。
[0058]
第三确定子单元用在多行第二数据中设置预设数据,预设数据的修改策略支持按照任意变化信息修改预设数据中的数值,其中,在预设数据中的数值与变化信息不匹配的情况下修改预设数据中的数值,修改后的预设数据中的数值不大于第一数据中的数值。
[0059]
根据本技术实施例的另一方面,还提供了一种非易失性存储介质,包括存储的程序,其中,在程序运行时控制非易失性存储介质所在设备执行上述数据库的数据修改方法。
[0060]
根据本技术实施例的另一方面,还提供了一种计算机设备,包括存储器和处理器,处理器用于运行程序,其中,程序运行时执行上述数据库的数据修改方法。
[0061]
上述计算机设备执行上述客服工单分配方法,通过将第一数据拆分成多条第二数据,然后按照修改指令中的变化信息对第二数据进行修改,达到了让不同的修改指令修改不同的第二数据目的,从而实现了提高数据库数据修改效率的技术效果,进而解决了数据库中的数据修改效率低技术问题,在实际的应用场景中,降低了高并发场景下持续不断的排它锁带来的严重阻塞的时间,从而明显的提高了响应时间,带来了明显的性能提升。
[0062]
上述本技术实施例序号仅仅为了描述,不代表实施例的优劣。
[0063]
在本技术的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
[0064]
在本技术所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如单元的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
[0065]
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0066]
另外,在本技术各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
[0067]
集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本技术各个实施例方法的全部或部分步骤。而前述的存储介质包括:u盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
[0068]
以上仅是本技术的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本技术原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本技术的保护范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1