数据分配方法、装置、电子设备及计算机可读存储介质制造方法及图纸

技术编号:37873898 阅读:11 留言:0更新日期:2023-06-15 21:02
本申请提供一种数据分配方法、装置、电子设备及计算机可读存储介质。该数据分配方法包括:当数据库的多个线程中的目标线程获取到所述数据库的锁时,获取所述数据库记录的当前偏移值和所述目标线程的目标数据处理量;根据所述当前偏移值和所述目标数据处理量,确定所述数据库中待分配给所述目标线程的目标任务数据;分配所述目标任务数据至所述目标线程。本申请中避免了增加线程数同时会增加锁竞争,当业务数据量高达一定值时增加线程数仍可有效提高数据处理效率。提高数据处理效率。提高数据处理效率。

【技术实现步骤摘要】
数据分配方法、装置、电子设备及计算机可读存储介质


[0001]本申请涉及数据读写
,具体涉及一种数据分配方法、装置、电子设备及计算机可读存储介质。

技术介绍

[0002]为了处理数据处理效率,可以通过多线程并发来进行处理,但是,并发的多个线程同时读取到一条数据时,就会导致数据状态丢失,从而导致数据更新失败,现有技术中通过增加锁来解决多个线程读取到同一数据的问题。
[0003]锁可以避免多个线程同时处理同一条数据的问题,但是,多个线程间也会出现锁竞争问题。影响锁竞争性的条件主要有两个:锁被请求的频率和每次持有锁的时间。显然当而这二者都很小的时候,锁竞争不会成为主要的瓶颈。但是如果锁使用不当,导致二者都比较大,那么很有可能CPU不能有效的处理任务,任务被大量堆积。
[0004]因此,随着业务发展业务数据量不断地增加,处理完全部数据的时间也越来越长,通过增加线程数的同时也会增加锁竞争的强度;故由于锁竞争带来的瓶颈问题,当业务数据量高达一定值时通过增加线程数已无法提高数据处理效率,甚至会导致死锁问题而导致数据无法被正常处理。

技术实现思路

[0005]本申请提供一种数据分配方法、装置、电子设备及计算机可读存储介质,旨在解决由于增加线程数同时会增加锁竞争而导致数据处理效率无法提升、甚至导致数据无法被正常处理的问题。
[0006]第一方面,本申请提供一种数据分配方法,所述方法包括:
[0007]当数据库的多个线程中的目标线程获取到所述数据库的锁时,获取所述数据库记录的当前偏移值和所述目标线程的目标数据处理量;
[0008]根据所述当前偏移值和所述目标数据处理量,确定所述数据库中待分配给所述目标线程的目标任务数据;
[0009]分配所述目标任务数据至所述目标线程。
[0010]在本申请的一些实施例中,所述根据所述当前偏移值和所述目标数据处理量,确定所述数据库中待分配给所述目标线程的目标任务数据,包括:
[0011]按照序号标识由前到后的顺序,从所述数据库的各任务数据中,依序查询序号标识在所述当前偏移值之后的未处理数据;
[0012]直至查询到的所述未处理数据的数量达到所述目标数据处理量时,将查询到的各所述未处理数据作为所述目标任务数据。
[0013]在本申请的一些实施例中,所述分配所述目标任务数据至所述目标线程之后,还包括:
[0014]从查询到的各所述未处理数据的序号标识中,获取排序在最后的目标序号标识;
[0015]将所述数据库记录的当前偏移值更新为所述目标序号标识;
[0016]释放所述数据库的锁。
[0017]在本申请的一些实施例中,述根据所述当前偏移值和所述目标数据处理量,确定所述数据库中待分配给所述目标线程的目标任务数据,包括:
[0018]根据所述当前偏移值和所述目标数据处理量,确定所述数据库的下一偏移值;
[0019]从所述数据库的各任务数据中,确定序号标识处于当前偏移值和所述下一偏移值区间的任务数据,作为所述目标任务数据。
[0020]在本申请的一些实施例中,所述分配所述目标任务数据至所述目标线程之后,还包括:
[0021]将所述数据库记录的当前偏移值更新为所述下一偏移值;
[0022]释放所述数据库的锁。
[0023]在本申请的一些实施例中,所述分配所述目标任务数据至所述目标线程之后,还包括:
[0024]若所述目标任务分配后处理异常,则将所述数据库记录的当前偏移值更新为所述数据库的各任务数据的开始序号标识,得到所述数据库记录的更新后当前偏移值;
[0025]根据所述更新后当前偏移值和所述目标数据处理量,对所述数据库的各任务数据进行重新分配。
[0026]在本申请的一些实施例中,所述分配所述目标任务数据至所述目标线程之后,还包括:
[0027]当所述目标线程完成所述目标任务数据的处理后,在所述数据库中更新所述目标任务数据为已处理状态。
[0028]第二方面,本申请提供一种数据分配装置,所述数据分配装置包括:
[0029]获取单元,用于当数据库的多个线程中的目标线程获取到所述数据库的锁时,获取所述数据库记录的当前偏移值和所述目标线程的目标数据处理量;
[0030]确定单元,用于根据所述当前偏移值和所述目标数据处理量,确定所述数据库中待分配给所述目标线程的目标任务数据;
[0031]分配单元,用于分配所述目标任务数据至所述目标线程。
[0032]在本申请的一些实施例中,所述确定单元具体用于:
[0033]按照序号标识由前到后的顺序,从所述数据库的各任务数据中,依序查询序号标识在所述当前偏移值之后的未处理数据;
[0034]直至查询到的所述未处理数据的数量达到所述目标数据处理量时,将查询到的各所述未处理数据作为所述目标任务数据。
[0035]在本申请的一些实施例中,所述数据分配装置还包括更新单元,所述分配所述目标任务数据至所述目标线程之后,所述更新单元具体用于:
[0036]从查询到的各所述未处理数据的序号标识中,获取排序在最后的目标序号标识;
[0037]将所述数据库记录的当前偏移值更新为所述目标序号标识;
[0038]释放所述数据库的锁。
[0039]在本申请的一些实施例中,所述确定单元具体用于:
[0040]根据所述当前偏移值和所述目标数据处理量,确定所述数据库的下一偏移值;
[0041]从所述数据库的各任务数据中,确定序号标识处于当前偏移值和所述下一偏移值区间的任务数据,作为所述目标任务数据。
[0042]在本申请的一些实施例中,所述数据分配装置还包括更新单元,所述分配所述目标任务数据至所述目标线程之后,所述更新单元具体用于:
[0043]将所述数据库记录的当前偏移值更新为所述下一偏移值;
[0044]释放所述数据库的锁。
[0045]在本申请的一些实施例中,所述分配所述目标任务数据至所述目标线程之后,所述分配单元具体用于:
[0046]若所述目标任务分配后处理异常,则将所述数据库记录的当前偏移值更新为所述数据库的各任务数据的开始序号标识,得到所述数据库记录的更新后当前偏移值;
[0047]根据所述更新后当前偏移值和所述目标数据处理量,对所述数据库的各任务数据进行重新分配。
[0048]在本申请的一些实施例中,所述分配所述目标任务数据至所述目标线程之后,所述更新单元具体用于:
[0049]当所述目标线程完成所述目标任务数据的处理后,在所述数据库中更新所述目标任务数据为已处理状态。
[0050]第三方面,本申请还提供一种电子设备,所述电子设备包括处理器和存储器,所述存储器中存储有计算机程序,所述处理器调用所述存储器中的计算机程序时执行本申请提供的任一种数据分配方法中的步骤。
[0051]第四方面,本申请还提供一种计算机可读存储介质,其上存储有计本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种数据分配方法,其特征在于,所述方法包括:当数据库的多个线程中的目标线程获取到所述数据库的锁时,获取所述数据库记录的当前偏移值和所述目标线程的目标数据处理量;根据所述当前偏移值和所述目标数据处理量,确定所述数据库中待分配给所述目标线程的目标任务数据;分配所述目标任务数据至所述目标线程。2.根据权利要求1所述的数据分配方法,其特征在于,所述根据所述当前偏移值和所述目标数据处理量,确定所述数据库中待分配给所述目标线程的目标任务数据,包括:按照序号标识由前到后的顺序,从所述数据库的各任务数据中,依序查询序号标识在所述当前偏移值之后的未处理数据;直至查询到的所述未处理数据的数量达到所述目标数据处理量时,将查询到的各所述未处理数据作为所述目标任务数据。3.根据权利要求2所述的数据分配方法,其特征在于,所述分配所述目标任务数据至所述目标线程之后,还包括:从查询到的各所述未处理数据的序号标识中,获取排序在最后的目标序号标识;将所述数据库记录的当前偏移值更新为所述目标序号标识;释放所述数据库的锁。4.根据权利要求1所述的数据分配方法,其特征在于,所述根据所述当前偏移值和所述目标数据处理量,确定所述数据库中待分配给所述目标线程的目标任务数据,包括:根据所述当前偏移值和所述目标数据处理量,确定所述数据库的下一偏移值;从所述数据库的各任务数据中,确定序号标识处于当前偏移值和所述下一偏移值区间的任务数据,作为所述目标任务数据。5.根据权利要求4所述的数据分配方法,其特征在于,所述分配所述目标任务数据至所述目标线程之后,...

【专利技术属性】
技术研发人员:曾海辉肖隆源彭远灿汪绍红何珍珍谢娜陈晋李柏林王展鹏蔡同俊陈懿伍俊
申请(专利权)人:顺丰科技有限公司
类型:发明
国别省市:

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

1