CN110806943A - 基于更新标记的数据更新方法及相关设备 - Google Patents
基于更新标记的数据更新方法及相关设备 Download PDFInfo
- Publication number
- CN110806943A CN110806943A CN201910871154.0A CN201910871154A CN110806943A CN 110806943 A CN110806943 A CN 110806943A CN 201910871154 A CN201910871154 A CN 201910871154A CN 110806943 A CN110806943 A CN 110806943A
- Authority
- CN
- China
- Prior art keywords
- data
- updated
- updating
- update
- mark
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 50
- 238000001514 detection method Methods 0.000 claims description 8
- 239000003550 marker Substances 0.000 claims description 2
- 230000009467 reduction Effects 0.000 abstract description 3
- 230000008569 process Effects 0.000 description 10
- 230000015556 catabolic process Effects 0.000 description 3
- 238000006731 degradation reaction Methods 0.000 description 3
- 238000004590 computer program Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F9/524—Deadlock detection or avoidance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2308—Concurrency control
- G06F16/2336—Pessimistic concurrency control approaches, e.g. locking or multiple versions without time stamps
- G06F16/2343—Locking methods, e.g. distributed locking or locking implementation details
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24552—Database cache management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请涉及大数据领域,本申请公开了一种基于更新标记的数据更新方法及相关设备,所述方法包括:预设数据更新条件,获取数据更新请求;当所述与所述数据更新请求对应的待更新数据满足所述预设的数据更新条件时,在缓存中查询与所述数据更新请求对应的待更新数据是否已设置更新标记;若所述缓存中查询到与所述数据更新请求对应的待更新数据未设置更新标记或所述更新标记已超时,对所述缓存中的待更新数据设置更新标记,并对所述待更新数据申请排它锁,根据申请排它锁的结果进行数据更新。本申请通过对被更新数据设置更新标记,并对设置更新标记的数据申请排它锁,进行数据更新,可以避免数据死锁导致的系统性能下降。
Description
技术领域
本申请涉及大数据领域,特别涉及一种基于更新标记的数据更新方法及相关设备。
背景技术
在信息系统中的异步调度中,经常会发生数据更新出错的情况,在一个大型的系统中,如果数据出现了偏差导致引发错误,将可能导致严重问题且难以追查根源,并给用户带来巨大损失,因此在数据更新的时候通常采用排它锁,以此保证信息系统中数据的准确性,所述排它锁是指在加上排它锁的数据上进行更新的时候,其它进程不能修改所述数据,直到所述数据释放排它锁,但是由于在使用排它锁的过程中,一旦有多个对象都申请排它锁,但是如果发生排它锁被交叉占用的情况,则会导致排它锁死锁的情况,由此导致性能下降;例如:假设有资源A和B,程序X和程序Y都要同时更新A和B这两个资源,因此都要抢占A和B的排它锁,但是在申请过程中,程序X抢占到了资源A的排它锁,程序Y抢占到了资源B的排它锁,这时程序X会等待资源B的排它锁,程序Y会等待资源A的排它锁,很显然程序X和程序Y都无法等到,由此会导致死锁,因此需要一种新的方式来申请排它锁,解决死锁的问题。
发明内容
本申请的目的在于针对现有技术的不足,提供一种基于更新标记的数据更新方法及相关设备,通过对被更新数据设置更新标记,并对设置更新标记的数据申请排它锁,进行数据更新,可以避免数据死锁导致的系统性能下降。
为达到上述目的,本申请的技术方案提供一种基于更新标记的数据更新方法及相关设备。
本申请公开了一种基于更新标记的数据更新方法,包括以下步骤:
预设数据更新条件,获取数据更新请求,并根据所述数据更新请求检测与所述数据更新请求对应的待更新数据是否满足预设的数据更新条件;
当所述与所述数据更新请求对应的待更新数据满足所述预设的数据更新条件时,在缓存中查询与所述数据更新请求对应的待更新数据是否已设置更新标记;
若所述缓存中查询到与所述数据更新请求对应的待更新数据未设置更新标记或所述更新标记已超时,对所述缓存中的待更新数据设置更新标记,并对所述待更新数据申请排它锁,根据申请排它锁的结果进行数据更新。
较佳地,所述预设数据更新条件,获取数据更新请求,并根据所述数据更新请求检测与所述数据更新请求对应的待更新数据是否满足预设的数据更新条件,包括:
预设数据可更新状态;
获取数据更新请求,根据所述数据更新请求获取与所述数据更新请求对应的待更新数据的当前状态,并将所述待更新数据的当前状态与所述预设的数据可更新状态进行比对。
较佳地,所述当所述与所述数据更新请求对应的待更新数据满足所述预设的数据更新条件时,在缓存中查询与所述数据更新请求对应的待更新数据是否已设置更新标记,包括:
当所述与所述数据更新请求对应的待更新数据满足所述预设的数据更新条件时,在缓存中查询与所述待更新数据对应的数据;
当查询到与所述待更新数据对应的数据后,进一步查询所述与所述待更新数据对应的数据是否已设置更新标记。
较佳地,所述当所述与所述数据更新请求对应的待更新数据满足所述预设的数据更新条件时,在缓存中查询与所述数据更新请求对应的待更新数据是否已设置更新标记之后,包括:
当在所述缓存中查询到所述与所述待更新数据对应的数据已设置更新标记,且所述更新标记未超时,则拒绝所述数据更新请求。
较佳地,所述若所述缓存中查询到与所述数据更新请求对应的待更新数据未设置更新标记或所述更新标记已超时,对所述缓存中的待更新数据设置更新标记,包括:
预设第一有效时间,若所述缓存中查询到与所述数据更新请求对应的待更新数据未设置更新标记或所述更新标记已超时,对所述缓存中的待更新数据设置更新标记,并根据所述预设的第一有效时间对所述更新标记进行计时;
将所述更新标记与所述缓存中的待更新数据进行绑定,并存储在缓存中。
较佳地,所述对所述待更新数据申请排它锁,包括:
预设第二有效时间;
对所述待更新数据申请排它锁,并在申请排它锁之后对所述排它锁的申请根据所述预设的第二有效时间进行计时。
较佳地,所述根据申请排它锁的结果进行数据更新,包括:
若所述第二有效时间超时或者所述排它锁的申请失败,则拒绝所述数据更新请求;
若所述排他锁的申请成功,则再次检测所述待更新数据是否满足所述数据更新条件,若满足所述数据更新条件,则对所述待更新数据进行更新,并在所述待更新数据更新完成后释放所述排它锁,删除所述缓存中的与所述待更新数据对应的更新标记。
本申请还公开了一种基于更新标记的数据更新装置,所述装置包括:
检测模块:设置为预设数据更新条件,获取数据更新请求,并根据所述数据更新请求检测与所述数据更新请求对应的待更新数据是否满足预设的数据更新条件;
查询模块:设置为当所述与所述数据更新请求对应的待更新数据满足所述预设的数据更新条件时,在缓存中查询与所述数据更新请求对应的待更新数据是否已设置更新标记;
更新模块:设置为若所述缓存中查询到与所述数据更新请求对应的待更新数据未设置更新标记或所述更新标记已超时,对所述缓存中的待更新数据设置更新标记,并对所述待更新数据申请排它锁,根据申请排它锁的结果进行数据更新。
本申请还公开了一种计算机设备,所述计算机设备包括存储器和处理器,所述存储器中存储有计算机可读指令,所述计算机可读指令被一个或多个所述处理器执行时,使得一个或多个所述处理器执行上述所述数据更新方法的步骤。
本申请还公开了一种存储介质,所述存储介质可被处理器读写,所述存储介质存储有计算机指令,所述计算机可读指令被一个或多个处理器执行时,使得一个或多个处理器执行上述所述数据更新方法的步骤。
本申请的有益效果是:本申请通过对被更新数据设置更新标记,并对设置更新标记的数据申请排它锁,由于在申请排它锁之前进行了数据更新标记的检测,由此可以避免未设置更新标记的数据申请到排它锁的情况发生,即避免了死锁情况的发生,并在已设置更新标记的数据成功申请到排它锁之后进行数据更新,可以避免数据死锁导致的系统性能下降。
附图说明
图1为本申请第一个实施例的一种基于更新标记的数据更新方法的流程示意图;
图2为本申请第二个实施例的一种基于更新标记的数据更新方法的流程示意图;
图3为本申请第三个实施例的一种基于更新标记的数据更新方法的流程示意图;
图4为本申请第四个实施例的一种基于更新标记的数据更新方法的流程示意图;
图5为本申请第五个实施例的一种基于更新标记的数据更新方法的流程示意图;
图6为本申请第六个实施例的一种基于更新标记的数据更新方法的流程示意图;
图7为本申请实施例的一种基于更新标记的数据更新装置结构示意图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本申请的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。
本申请第一个实施例的一种基于更新标记的数据更新方法流程如图1所示,本实施例包括以下步骤:
步骤s101,预设数据更新条件,获取数据更新请求,并根据所述数据更新请求检测与所述数据更新请求对应的待更新数据是否满足预设的数据更新条件;
具体的,首先可预设速决更新条件,所述数据更新条件用于确认当前的数据是否可以更新,以酒店订房为例,当前台为客户订房时,想订房间A,但是发现房间A的状态是已入住,那么本次订房请求是不满足数据更新条件的,即只有在房间A是未入住的状态下才能进行数据的更新,所述数据的更新即修改房间密码和房间状态;所述数据更新条件即为满足房间未入住的状态,因此可将数据更新条件预设为房间状态未入住。
具体的,当对所需的数据发起更新时,会发起数据更新请求,所述数据更新请求中包含待更新的数据,当系统获取所述数据更新请求后,会根据所述数据更新请求检测与所述数据更新请求对应的待更新数据是否满足预设的数据更新条件。
步骤s102,当所述与所述数据更新请求对应的待更新数据满足所述预设的数据更新条件时,在缓存中查询与所述数据更新请求对应的待更新数据是否已设置更新标记;
具体的,当经过检测发现所述与所述数据更新请求对应的待更新数据满足所述预设的数据更新条件时,可在缓存中查询与所述数据更新请求对应的待更新数据是否已设置更新标记,所述缓存是系统中临时建立的缓存,用于存储待更新数据的条目及对应的更新标记,所述更新标记用于标记数据正在更新中,在更新过程中拒绝一切后续的更新请求,直到所述标记的数据更新完成,或者所述更新标记计时超时,所述更新标记在对数据进行设置后会启动计时,因此在所述更新标记超时后,所述更新标记不再有效。
步骤s103,若所述缓存中查询到与所述数据更新请求对应的待更新数据未设置更新标记或所述更新标记已超时,对所述缓存中的待更新数据设置更新标记,并对所述待更新数据申请排它锁,根据申请排它锁的结果进行数据更新。
具体的,若通过查询在所述缓存中未找到与所述数据更新请求对应的待更新数据的更新标记,或者所述待更新数据有更新标记,但是所述更新标记已超时,这时可以对所述缓存中的待更新数据设置更新标记;其中,若所述缓存中没有待更新数据的更新标记,则可将所述待更新数据的条目存储在所述缓存中,并将所述待更新数据的条目设置更新标记,并对所述更新标记启动计时,所述计时时间可再系统中预先设定,一旦所述计时启动,就可按预先设定的计时时间进行计时,当所述计时超时后,所述更新标记不再有效;若所述缓存中有所述待更新数据的更新标记,但是所述更新标记计时已经超时,则可以对所述待更新数据的条目重新设置更新标记,并对所述重新设置的更新标记启动新的计时;当对所述待更新数据设置更新标记后,就可对所述待更新数据申请排它锁,所述排它锁用于对数据进行锁定,在所述锁定过程中,只允许当前请求对其进行更新,并根据申请排它锁的结果进行数据更新,所述申请排它锁的结果包括成功与失败,当申请排它锁成功的时候,可对所述待更新数据进行更新,如果申请排它锁失败,则拒绝本次数据更新请求。
本实施例中,通过对被更新数据设置更新标记,并对设置更新标记的数据申请排它锁,进行数据更新,可以避免数据死锁导致的系统性能下降。
图2为本申请第二个实施例的一种基于更新标记的数据更新方法流程示意图,如图所示,所述步骤s101,预设数据更新条件,获取数据更新请求,并根据所述数据更新请求检测与所述数据更新请求对应的待更新数据是否满足预设的数据更新条件,包括:
步骤s201,预设数据可更新状态;
具体的,所述数据更新条件包括数据可更新状态,因此可预先在系统中预设数据可更新状态,所述数据可更新状态用于标识所述待更新数据是否满足当前更新的状态条件;以酒店订房为例,只有在房间为未入住状态下,才可对所述房间发起请求进行预定,因此所述未入住状态即为数据可更新状态,如果所述房间状态为已入住,则不满足所述数据可更新状态。
步骤s202,获取数据更新请求,根据所述数据更新请求获取与所述数据更新请求对应的待更新数据的当前状态,并将所述待更新数据的当前状态与所述预设的数据可更新状态进行比对。
具体的,当获取到数据更新请求后,可根据所述数据更新请求获取与所述数据更新请求对应的待更新数据的当前状态,由于所述数据更新请求中包含了本次待更新的数据的身份,因此可根据所述待更新的数据的身份在系统中查询所述待更新数据的状态,并将所述待更新数据的当前状态与所述预设的数据可更新状态进行比对;以酒店订房为例,当发起对房间A001的数据更新请求时,所述数据更新请求就是对房间的预定,这时可查询房间A001的当前房间状态,并将所述房间A001的当前房间状态与预设的数据可更新状态进行比较,如果所述房间A001是未入住状态,则可以进行下一步流程,否则拒绝本次请求。
本实施例中,通过对待更新数据状态的设定及检测,可以避免无效数据发起排它锁的申请,提高系统效率。
图3为本申请第三个实施例的一种基于更新标记的数据更新方法流程示意图,如图所示,所述步骤s102,当所述与所述数据更新请求对应的待更新数据满足所述预设的数据更新条件时,在缓存中查询与所述数据更新请求对应的待更新数据是否已设置更新标记,包括:
步骤s301,当所述与所述数据更新请求对应的待更新数据满足所述预设的数据更新条件时,在缓存中查询与所述待更新数据对应的数据;
具体的,当所述与所述数据更新请求对应的待更新数据满足所述预设的数据更新条件时,可在缓存中查询与所述待更新数据对应的数据,所述查询与所述待更新数据对应的数据包括查询所述待更新数据的条目。
步骤s302,当查询到与所述待更新数据对应的数据后,进一步查询所述与所述待更新数据对应的数据是否已设置更新标记。
具体的,当查到所述待更新数据的条目后,可进一步查询所述待更新数据的条目是否存在对应的更新标记。
本实施例中,通过查询缓存中的更新标记,可对有更新标记的数据进行排除,防止死锁,提高数据更新效率。
在一个实施例中,所述步骤s102,当所述与所述数据更新请求对应的待更新数据满足所述预设的数据更新条件时,在缓存中查询与所述数据更新请求对应的待更新数据是否已设置更新标记之后,包括:
当在所述缓存中查询到所述与所述待更新数据对应的数据已设置更新标记,且所述更新标记未超时,则拒绝所述数据更新请求。
具体的,当在所述缓存中查询到所述与所述待更新数据对应的数据已设置更新标记时,由于所述更新标记还可能正在计时中,因此还需检测计时是否已经超时,如果所述更新标记未超时,这时可拒绝所述数据更新请求,如果已经超时,这时可以进行下一步流程,所述对更新标记进行计时是为了避免待更新数据设置更新标记之后长时间得不到更新而发生假死。
本实施例中,通过检测数据是否设置更新标记并检测所述更新标记是否已超时,可以避免排它锁死锁,同时可避免系统假死。
图4为本申请第四个实施例的一种基于更新标记的数据更新方法流程示意图,如图所示,所述步骤s103,若所述缓存中查询到与所述数据更新请求对应的待更新数据未设置更新标记或所述更新标记已超时,对所述缓存中的待更新数据设置更新标记,包括:
步骤s401,预设第一有效时间,若所述缓存中查询到与所述数据更新请求对应的待更新数据未设置更新标记或所述更新标记已超时,对所述缓存中的待更新数据设置更新标记,并根据所述预设的第一有效时间对所述更新标记进行计时;
具体的,在系统中可预设第一有效时间,所述第一有效时间用于对所述更新标记进行计时,例如,所述第一有效时间可设为30秒或者1分钟,后续也可以在系统中对所述预定的第一有效时间进行更改,所述第一有效时间是对更新标记的计时,避免更新标记长期对房间进行锁定,导致死锁;若所述缓存中查询到与所述数据更新请求对应的待更新数据未设置更新标记,这时可以对所述缓存中的待更新数据设置更新标记,并根据所述预设的第一有效时间对所述更新标记启动定时器进行计时,若所述缓存中查询到与所述数据更新请求对应的待更新数据已设置更新标记,但是所述更新标记已计时超时,这时可以对所述缓存中的待更新数据重新设置更新标记,并根据所述预设的第一有效时间对所述更新标记启动定时器进行新的计时;所述更新标记可以是符号,如感叹号、十字叉,或者是文字显示;所述定时器与所述更新标记一一对应,即每次生成一个更新标记之后,就会启动与所述更新标记对应的计时,并等待所述第一有效时间超时。
步骤s402,将所述更新标记与所述缓存中的待更新数据进行绑定,并存储在缓存中。
具体的,当对所述更新标记开始计时后,可将所述更新标记存储在缓存中,并将所述更新标记与所述待更新数据的条目进行对应,用于在下一个数据更新请求到来的时候可供查询。
本实施例中,通过未设置更新标记的待更新数据设置更新标记,可以提前对数据进行筛选,避免排它锁死锁情况发生,提高系统效率。
图5为本申请第五个实施例的一种基于更新标记的数据更新方法流程示意图,如图所示,所述步骤s103,对所述待更新数据申请排它锁,包括:
步骤s501,预设第二有效时间;
具体的,可在系统中预设第二有效时间,所述第二有效时间用于对排它锁的申请进行计时,用于避免长时间申请不到排它锁导致的假死,所述排它锁用于保证用户修改数据的安全性,即在一个时刻只有一个用户能修改数据。
步骤s502,对所述待更新数据申请排它锁,并在申请排它锁之后对所述排它锁的申请根据所述预设的第二有效时间进行计时。
具体的,当对所述待更新数据申请排它锁之后,可根据所述预设的第二有效时间对所述排它锁的申请进行计时,其中,每个待更新数据对应各自的计时。
本实施例中,通过对排它锁的申请进行计时,可以避免长时间申请不到排它锁导致的假死。
图6为本申请第六个实施例的一种基于更新标记的数据更新方法流程示意图,如图所示,所述步骤s103,根据申请排它锁的结果进行数据更新,包括:
步骤s601,若所述第二有效时间超时或者所述排它锁的申请失败,则拒绝所述数据更新请求;
具体的,所述申请排它锁的结果包括成功或者失败,所述成功包括成功申请到排它锁,所述失败包括申请排它锁失败或者所述第二有效时间超时,若所述第二有效时间超时或者所述排它锁的申请失败,则拒绝所述数据更新请求,本次数据更新结束。
步骤s602,若所述排他锁的申请成功,则再次检测所述待更新数据是否满足所述数据更新条件,若满足所述数据更新条件,则对所述待更新数据进行更新,并在所述待更新数据更新完成后释放所述排它锁,删除所述缓存中的与所述待更新数据对应的更新标记。
具体的,若成功申请到排它锁,则可以再次检测所述待更新数据是否满足所述数据更新条件,保证在申请排它锁过程中所述待更新数据的可更新状态没有发生变化,若通过检测还是满足所述数据更新条件,则对所述待更新数据进行更新,所述更新是对所述待更新数据的实际内容进行更新,所述实际内容进行更新,包括数据值及数据状态等,以酒店订房为例,待更新数据为房间A001的房间状态和密码,所述数据值即为房间的密码,所述数据状态即为房间的状态。
具体的,当对所述待更新数据更新完成后即可释放所述排它锁,以便其他数据获得排它锁,避免长时间占用排它锁导致系统性能下降,并可删除所述缓存中的与所述待更新数据对应的更新标记,由于所述缓存是临时缓存,用于存储更新标记,因此当所述待更新数据完成更新后,即可删除所述更新标记,释放缓存,避免长期占用缓存导致系统性能下降。
本实施例中,通过在待更新数据更新完成后释放排它锁及删除更新标记,可以避免由此导致的系统性能下降。
本申请实施例的一种装置结构如图7所示,包括:
检测模块701、查询模块702及更新模块703;其中,检测模块701与查询模块702相连,查询模块702与更新模块703相连;检测模块701设置为预设数据更新条件,获取数据更新请求,并根据所述数据更新请求检测与所述数据更新请求对应的待更新数据是否满足预设的数据更新条件;查询模块702设置为当所述与所述数据更新请求对应的待更新数据满足所述预设的数据更新条件时,在缓存中查询与所述数据更新请求对应的待更新数据是否已设置更新标记;更新模块703设置为若所述缓存中查询到与所述数据更新请求对应的待更新数据未设置更新标记或所述更新标记已超时,对所述缓存中的待更新数据设置更新标记,并对所述待更新数据申请排它锁,根据申请排它锁的结果进行数据更新。
本申请实施例还公开了一种计算机设备,所述计算机设备包括存储器和处理器,所述存储器中存储有计算机可读指令,所述计算机可读指令被一个或多个所述处理器执行时,使得一个或多个所述处理器执行上述各实施例中所述数据更新方法中的步骤。
本申请实施例还公开了一种存储介质,所述存储介质可被处理器读写,所述存储器存储有计算机可读指令,所述计算机可读指令被一个或多个处理器执行时,使得一个或多个处理器执行上述各实施例中所述数据更新方法中的步骤。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,该计算机程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,前述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)等非易失性存储介质,或随机存储记忆体(Random Access Memory,RAM)等。
以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (10)
1.一种基于更新标记的数据更新方法,其特征在于,包括以下步骤:
预设数据更新条件,获取数据更新请求,并根据所述数据更新请求检测与所述数据更新请求对应的待更新数据是否满足预设的数据更新条件;
当所述与所述数据更新请求对应的待更新数据满足所述预设的数据更新条件时,在缓存中查询与所述数据更新请求对应的待更新数据是否已设置更新标记;
若所述缓存中查询到与所述数据更新请求对应的待更新数据未设置更新标记或所述更新标记已超时,对所述缓存中的待更新数据设置更新标记,并对所述待更新数据申请排它锁,根据申请排它锁的结果进行数据更新。
2.如权利要求1所述的基于更新标记的数据更新方法,其特征在于,所述预设数据更新条件,获取数据更新请求,并根据所述数据更新请求检测与所述数据更新请求对应的待更新数据是否满足预设的数据更新条件,包括:
预设数据可更新状态;
获取数据更新请求,根据所述数据更新请求获取与所述数据更新请求对应的待更新数据的当前状态,并将所述待更新数据的当前状态与所述预设的数据可更新状态进行比对。
3.如权利要求1所述的基于更新标记的数据更新方法,其特征在于,所述当所述与所述数据更新请求对应的待更新数据满足所述预设的数据更新条件时,在缓存中查询与所述数据更新请求对应的待更新数据是否已设置更新标记,包括:
当所述与所述数据更新请求对应的待更新数据满足所述预设的数据更新条件时,在缓存中查询与所述待更新数据对应的数据;
当查询到与所述待更新数据对应的数据后,进一步查询所述与所述待更新数据对应的数据是否已设置更新标记。
4.如权利要求3所述的基于更新标记的数据更新方法,其特征在于,所述当所述与所述数据更新请求对应的待更新数据满足所述预设的数据更新条件时,在缓存中查询与所述数据更新请求对应的待更新数据是否已设置更新标记之后,包括:
当在所述缓存中查询到所述与所述待更新数据对应的数据已设置更新标记,且所述更新标记未超时,则拒绝所述数据更新请求。
5.如权利要求3所述的基于更新标记的数据更新方法,其特征在于,所述若所述缓存中查询到与所述数据更新请求对应的待更新数据未设置更新标记或所述更新标记已超时,对所述缓存中的待更新数据设置更新标记,包括:
预设第一有效时间,若所述缓存中查询到与所述数据更新请求对应的待更新数据未设置更新标记或所述更新标记已超时,对所述缓存中的待更新数据设置更新标记,并根据所述预设的第一有效时间对所述更新标记进行计时;
将所述更新标记与所述缓存中的待更新数据进行绑定,并存储在缓存中。
6.如权利要求5所述的基于更新标记的数据更新方法,其特征在于,所述对所述待更新数据申请排它锁,包括:
预设第二有效时间;
对所述待更新数据申请排它锁,并在申请排它锁之后对所述排它锁的申请根据所述预设的第二有效时间进行计时。
7.如权利要求6所述的基于更新标记的数据更新方法,其特征在于,所述根据申请排它锁的结果进行数据更新,包括:
若所述第二有效时间超时或者所述排它锁的申请失败,则拒绝所述数据更新请求;
若所述排他锁的申请成功,则再次检测所述待更新数据是否满足所述数据更新条件,若满足所述数据更新条件,则对所述待更新数据进行更新,并在所述待更新数据更新完成后释放所述排它锁,删除所述缓存中的与所述待更新数据对应的更新标记。
8.一种基于更新标记的数据更新装置,其特征在于,所述装置包括:
检测模块:设置为预设数据更新条件,获取数据更新请求,并根据所述数据更新请求检测与所述数据更新请求对应的待更新数据是否满足预设的数据更新条件;
查询模块:设置为当所述与所述数据更新请求对应的待更新数据满足所述预设的数据更新条件时,在缓存中查询与所述数据更新请求对应的待更新数据是否已设置更新标记;
更新模块:设置为若所述缓存中查询到与所述数据更新请求对应的待更新数据未设置更新标记或所述更新标记已超时,对所述缓存中的待更新数据设置更新标记,并对所述待更新数据申请排它锁,根据申请排它锁的结果进行数据更新。
9.一种计算机设备,其特征在于,所述计算机设备包括存储器和处理器,所述存储器中存储有计算机可读指令,所述计算机可读指令被一个或多个所述处理器执行时,使得一个或多个所述处理器执行如权利要求1至7中任一项所述数据更新方法的步骤。
10.一种存储介质,其特征在于,所述存储介质可被处理器读写,所述存储介质存储有计算机指令,所述计算机可读指令被一个或多个处理器执行时,使得一个或多个处理器执行如权利要求1至7中任一项所述数据更新方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910871154.0A CN110806943B (zh) | 2019-09-16 | 2019-09-16 | 基于更新标记的数据更新方法及相关设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910871154.0A CN110806943B (zh) | 2019-09-16 | 2019-09-16 | 基于更新标记的数据更新方法及相关设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110806943A true CN110806943A (zh) | 2020-02-18 |
CN110806943B CN110806943B (zh) | 2024-06-25 |
Family
ID=69487538
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910871154.0A Active CN110806943B (zh) | 2019-09-16 | 2019-09-16 | 基于更新标记的数据更新方法及相关设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110806943B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111680038A (zh) * | 2020-05-18 | 2020-09-18 | 赵家乐 | 适用于变更的安全多维数据对象集的查询方法及存储介质 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6581205B1 (en) * | 1998-12-17 | 2003-06-17 | International Business Machines Corporation | Intelligent compilation of materialized view maintenance for query processing systems |
US6606626B1 (en) * | 1998-10-20 | 2003-08-12 | Sybase, Inc. | Database system with lock manager enhancement for improving concurrency |
US6981061B1 (en) * | 1997-11-14 | 2005-12-27 | Mitsubishi Denki Kabushiki Kaisha | Method and system for updating a data system in conjunction with synchronized clock modules |
CN106503001A (zh) * | 2015-09-03 | 2017-03-15 | 阿里巴巴集团控股有限公司 | 分布式集群环境中的数据更新方法及装置 |
US20170199704A1 (en) * | 2016-01-13 | 2017-07-13 | Wal-Mart Stores, Inc. | System for providing a time-limited mutual exclusivity lock and method therefor |
CN107038174A (zh) * | 2016-02-04 | 2017-08-11 | 北京京东尚科信息技术有限公司 | 用于数据系统的数据同步方法和装置 |
CN107436910A (zh) * | 2017-04-14 | 2017-12-05 | 阿里巴巴集团控股有限公司 | 一种数据查询方法和装置 |
US20180165326A1 (en) * | 2016-12-14 | 2018-06-14 | Google Inc. | Managing transactions requesting non-existing index keys in database systems |
-
2019
- 2019-09-16 CN CN201910871154.0A patent/CN110806943B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6981061B1 (en) * | 1997-11-14 | 2005-12-27 | Mitsubishi Denki Kabushiki Kaisha | Method and system for updating a data system in conjunction with synchronized clock modules |
US6606626B1 (en) * | 1998-10-20 | 2003-08-12 | Sybase, Inc. | Database system with lock manager enhancement for improving concurrency |
US6581205B1 (en) * | 1998-12-17 | 2003-06-17 | International Business Machines Corporation | Intelligent compilation of materialized view maintenance for query processing systems |
CN106503001A (zh) * | 2015-09-03 | 2017-03-15 | 阿里巴巴集团控股有限公司 | 分布式集群环境中的数据更新方法及装置 |
US20170199704A1 (en) * | 2016-01-13 | 2017-07-13 | Wal-Mart Stores, Inc. | System for providing a time-limited mutual exclusivity lock and method therefor |
CN107038174A (zh) * | 2016-02-04 | 2017-08-11 | 北京京东尚科信息技术有限公司 | 用于数据系统的数据同步方法和装置 |
US20180165326A1 (en) * | 2016-12-14 | 2018-06-14 | Google Inc. | Managing transactions requesting non-existing index keys in database systems |
CN107436910A (zh) * | 2017-04-14 | 2017-12-05 | 阿里巴巴集团控股有限公司 | 一种数据查询方法和装置 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111680038A (zh) * | 2020-05-18 | 2020-09-18 | 赵家乐 | 适用于变更的安全多维数据对象集的查询方法及存储介质 |
CN111680038B (zh) * | 2020-05-18 | 2021-08-31 | 江西师范大学 | 适用于变更的安全多维数据对象集的查询方法及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN110806943B (zh) | 2024-06-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8112528B2 (en) | Mechanisms for providing exclusive access to shared resources in a database | |
CN111078451B (zh) | 分布式事务处理方法、装置、计算机设备及存储介质 | |
US10437788B2 (en) | Automatic detection, retry, and resolution of errors in data synchronization | |
CN108572876B (zh) | 一种读写锁的实现方法及装置 | |
CN108491252B (zh) | 分布式事务处理方法及分布式系统 | |
CN107861799B (zh) | 基于多线程环境的任务处理方法及装置 | |
CN111400330B (zh) | 任务处理方法、装置、设备及计算机可读存储介质 | |
CN104486328A (zh) | 访问控制方法和装置 | |
EP2390794A1 (en) | Interactive processing method and apparatus between content-id management servers | |
CN112052264A (zh) | 业务数据查询方法、装置、电子设备及可读存储介质 | |
CN112148480A (zh) | 基于多线程的任务处理方法、装置、设备及存储介质 | |
CN110806943A (zh) | 基于更新标记的数据更新方法及相关设备 | |
CN112988777B (zh) | 对象处理方法、装置、计算机设备和存储介质 | |
CN114036195A (zh) | 一种数据请求处理方法、装置、服务器和存储介质 | |
US11061864B2 (en) | Clustered network file system server reclaim via decentralized, coordinated grace period | |
CN115098889B (zh) | 一种权限管理的方法、装置、设备及存储介质 | |
US20150256614A1 (en) | Resource synchronization control method, device, and system | |
JP5459613B2 (ja) | データ処理システム、データ処理方法およびデータ処理プログラム | |
CN112463348B (zh) | 一种定时任务处理方法及装置 | |
CN114036102A (zh) | 支付撤销的多类型分布式管理方法及装置 | |
CN115809150A (zh) | 一种分布式死锁检测方法、装置及电子设备 | |
CN113297610A (zh) | 基于区块链的信息处理方法、区块链节点和系统 | |
CN108255848B (zh) | 实现条件更新的方法、设备及系统 | |
CN111400324B (zh) | 一种锁定云存储中对象的方法、装置及服务器 | |
CN109542643B (zh) | 一种OpenStack系统中消息的恢复方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |