CN106250487B - 一种数据库并发控制方法及装置 - Google Patents
一种数据库并发控制方法及装置 Download PDFInfo
- Publication number
- CN106250487B CN106250487B CN201610620620.4A CN201610620620A CN106250487B CN 106250487 B CN106250487 B CN 106250487B CN 201610620620 A CN201610620620 A CN 201610620620A CN 106250487 B CN106250487 B CN 106250487B
- Authority
- CN
- China
- Prior art keywords
- identification information
- service operation
- data
- terminal device
- database server
- 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.)
- Active
Links
Images
Classifications
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例提供了一种数据库并发控制方法及装置。该方法应用于数据库服务器,该方法包括:接收终端设备发送的携带有第一标识信息的第一指令,第一指令为终端设备获得针对数据库服务器中的数据库的操作指令后发送的,第一标识信息为操作指令中所包括的第一业务操作的标识信息;在数据库服务器的业务操作表中的第一标识信息所对应的状态为加锁状态的情况下,生成用于表征第一业务操作当前正在被执行的第一数据;向终端设备发送第一数据,以使终端设备在接收到第一数据后,不执行第一业务操作。综上,本发明实施例较好地避免了在针对数据库的同一业务操作并发的情况下,出现并发冲突的问题。
Description
技术领域
本发明涉及数据库技术领域,特别是涉及一种数据库并发控制方法及装置。
背景技术
在现有技术中,为了保证应用程序的可用性和可靠性,同一应用程序APP可以分别部署在多个终端设备上,并且,部署在不同终端设备上的各应用程序可以共享同一数据库。这样,当任一终端设备出现故障时,部署在其余终端设备上的应用程序仍可正常运行。举例而言,如图1所示,APP-1和APP-2可以为同一应用程序,APP-1部署在一终端设备上,APP-2部署在另一终端设备上。这样,当APP-1所在的终端设备出现故障,导致APP-1无法正常工作时,APP-2仍可在其所在的终端设备上正常运行。
但是,应用程序采用上述部署方式时存在一定的问题。如图2所示,当一个终端设备上的APP_1接收到一个操作指令,例如对数据库中的某一特定存储区域内的数据c的更改操作指令时,该终端设备会先与数据库建立连接。在连接建立好之后,该终端设备会从数据库中查询得到数据c,并计算出c经更改后所对应的字段值v。最后,数据库服务器中的特定存储区域内的数据c将会被更改为字段值v。
一般而言,终端设备从数据库中查询得到的数据需要是数据库中当前最新的数据,故理论上来说,需要在上述特定存储区域内的数据c被成功更改为字段值v后,另一终端设备再去特定存储区域内获取数据。但是,在实际情况中,在特定存储区域内的数据c还未被更改为字段值v的情况下,另一终端设备上的APP_2可能也会接收到相同的操作指令,此时另一终端设备也会去上述特定存储区域内获取数据,另一终端设备获取到的就不是最新的数据,各个终端设备对数据库的业务操作之间会产生并发冲突,这样会导致业务操作出现错误。因此,如何避免在针对数据库的同一业务操作并发的情况下,出现并发冲突的问题是一个亟待解决的问题。
发明内容
本发明实施例的目的在于提供一种数据库并发控制方法及装置,以避免在针对数据库的同一业务操作并发的情况下,出现并发冲突的问题。
本发明实施例提供了一种数据库并发控制方法,应用于数据库服务器,所述方法包括:
接收终端设备发送的携带有第一标识信息的第一指令,其中,所述第一指令为所述终端设备获得针对所述数据库服务器中的数据库的操作指令后发送的,所述第一标识信息为所述操作指令中所包括的第一业务操作的标识信息;
在数据库服务器的业务操作表中的第一标识信息所对应的状态为加锁状态的情况下,生成用于表征所述第一业务操作当前正在被执行的第一数据,其中,所述业务操作表中存储有至少一个标识信息及每个标识信息所对应的状态,所述状态包括加锁状态和未加锁状态;
向所述终端设备发送所述第一数据,以使所述终端设备在接收到所述第一数据后,不执行所述第一业务操作。
本发明实施例还提供了一种数据库并发控制装置,应用于数据库服务器,所述装置包括:
指令接收模块,用于接收终端设备发送的携带有第一标识信息的第一指令,其中,所述第一指令为所述终端设备获得针对所述数据库服务器中的数据库的操作指令后发送的,所述第一标识信息为所述操作指令中所包括的第一业务操作的标识信息;
第一处理模块,用于在数据库服务器的业务操作表中的第一标识信息所对应的状态为加锁状态的情况下,生成用于表征所述第一业务操作当前正在被执行的第一数据,其中,所述业务操作表中存储有至少一个标识信息及每个标识信息所对应的状态,所述状态包括加锁状态和未加锁状态;
第一发送模块,用于向所述终端设备发送所述第一数据,以使所述终端设备在接收到所述第一数据后,不执行所述第一业务操作。
本发明实施例中,当终端设备获得针对数据库的操作指令后,终端设备不会立即执行操作指令所指示的第一业务操作,而是先向数据库服务器发送第一指令,以使数据库服务器执行相应的查询操作以及数据生成操作。最终,若终端设备接收到的为表征第一业务操作当前正在被执行的第一数据,终端设备就不会执行第一业务操作。与现有技术相比,本发明实施例较好地避免了在针对数据库的同一业务操作并发的情况下,出现并发冲突的问题。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为应用程序的部署示意图;
图2为应用程序与数据库的交互流程示意图;
图3为本发明实施例提供的数据库并发控制方法的流程图;
图4为本发明实施例提供的数据库并发控制装置的结构框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为了解决现有技术存在的问题,本发明实施例提供了一种数据库并发控制方法及装置。
下面首先对本发明实施例所提供的一种数据库并发控制方法进行说明。
参见图3,图中示出了本发明实施例所提供的一种数据库并发控制方法的流程图。如图3所示,该方法可以应用于数据库服务器,该方法可以包括如下步骤:
S301,接收终端设备发送的携带有第一标识信息的第一指令,其中,第一指令为终端设备获得针对数据库服务器中的数据库的操作指令后发送的,第一标识信息为操作指令中所包括的第一业务操作的标识信息。
需要说明的是,该数据库可以为MySQL数据库、SQLServer数据库或者Oracle数据库,当然,数据库的类型并不局限于此,具体可以根据实际情况来确定,本实施例对此不做任何限定。
本领域技术人员容易理解的是,MySQL是一个开放源代码的关系型数据库管理系统,MySQL由于性能高、成本低、可靠性好等优点,成为了最流行的开源数据库,其被广泛地应用在Internet上的中小型网站中。随着MySQL的不断成熟,其也逐渐被用于更多大规模网站和应用,例如维基百科、Google和Facebook等网站。
本实施例中,由于操作指令中包括第一业务操作的标识信息,因此,终端设备在获得该操作指令后,其根据该标识信息可以非常容易地确定出用户希望针对数据库执行的具体是何种类型的操作。为了避免出现并发冲突的情况,在获得操作指令后,终端设备不会立即执行操作指令所指示的第一业务操作,而是先执行后续的S302。
S302,在数据库服务器的业务操作表中的第一标识信息所对应的状态为加锁状态的情况下,生成用于表征第一业务操作当前正在被执行的第一数据,其中,业务操作表中存储有至少一个标识信息及每个标识信息所对应的状态,该状态包括加锁状态和未加锁状态。
需要说明的是,数据库服务器可以预先对标识信息所对应的状态以及标识信息所指向的业务操作当前是否正在被执行之间的映射关系进行定义。具体地,对于数据库服务器而言,其可以将任一标识信息所对应的状态为加锁状态定义为:该标识信息所指向的业务操作当前正在被执行,其还可以将任一标识信息所对应的状态为未加锁状态定义为:该标识信息所指向的业务操作当前未被执行。
可以理解的是,业务操作表中可以存储有针对数据库服务器的每个业务操作的标识信息,以及每个标识信息所对应的状态;或者,业务操作表中也可以仅存储有数据库服务器在接收到携带有第一标识信息的第一指令之前,其接收到的各第一指令中的标识信息,以及每个标识信息所对应的状态,这都是可行的。下述实施例均以业务操作表中存储的内容为数据库服务器在接收到携带有第一标识信息的第一指令之前,其接收到的各第一指令中的标识信息,以及每个标识信息所对应的状态的情况为例进行说明。
本实施例中,当数据库服务器接收到携带有第一标识信息的第一指令后,数据库服务器可以去业务操作表中查询第一标识信息是否存在,并在业务操作表中存在第一标识信息的情况下,查询第一标识信息所对应的状态是否为加锁状态。若第一标识信息所对应的状态为加锁状态,则说明第一标识信息所指向的业务操作当前正在被执行,此时数据库服务器会生成用于表征第一业务操作当前正在被执行的第一数据。
S303,向终端设备发送第一数据,以使终端设备在接收到第一数据后,不执行第一业务操作。
由于第一数据是用来表征第一业务操作当前正在被执行的数据,因此,当终端设备接收到该第一数据后,终端设备可以非常容易地确定出第一数据当前正在被执行,为了避免出现并发冲突的情况,终端设备将不会执行第一业务操作。
本实施例中,当终端设备获得针对数据库的操作指令后,终端设备不会立即执行操作指令所指示的第一业务操作,而是先向数据库服务器发送第一指令,以使数据库服务器执行相应的查询操作以及数据生成操作。最终,若终端设备接收到的为表征第一业务操作当前正在被执行的第一数据,终端设备就不会执行第一业务操作。与现有技术相比,本实施例较好地避免了在针对数据库的同一业务操作并发的情况下,出现并发冲突的问题。
可选地,接收终端设备发送的携带有第一标识信息的第一指令后,该方法还可以包括:
在数据库服务器的业务操作表中不存在第一标识信息的情况下,将第一标识信息更新至业务操作表中,将第一标识信息所对应的状态置为加锁状态,并生成用于表征第一业务操作当前未被执行的第二数据;
向终端设备发送第二数据,以使终端设备在接收到第二数据后,执行第一业务操作。
本实施例中,当数据库服务器接收到携带有第一标识信息的第一指令后,数据库服务器可以去业务操作表中查询第一标识信息是否存在,并在业务操作表中存在第一标识信息的情况下,查询第一标识信息所对应的状态是否为加锁状态。
可以理解的是,若数据库服务器的业务操作表中不存在第一标识信息,则说明数据库服务器之前从未接收到过携带有第一标识信息的操作指令,相应地,对于数据库服务器来说,第一标识信息所指向的第一业务操作也从未被任何操作对象(例如某一终端设备中的某个线程)执行过。换句话说,当前不可能有任何操作对象在执行第一业务操作,终端设备此时执行第一业务操作并不会导致出现并发冲突的情况。因此,在接收到第二数据后,终端设备就会去执行第一业务操作,以较好地响应用户的操作指令,从而给用户带来较好的使用体验。
可选地,接收终端设备发送的携带有第一标识信息的第一指令后,该方法还可以包括:
在数据库服务器的业务操作表中的第一标识信息所对应的状态为未加锁状态的情况下,将第一标识信息所对应的状态置为加锁状态,并生成用于表征第一业务操作当前未被执行的第三数据;
向终端设备发送第三数据,以使终端设备在接收到第三数据后,执行第一业务操作。
本实施例中,当数据库服务器接收到携带有第一标识信息的第一指令后,数据库服务器可以去业务操作表中查询第一标识信息是否存在,并在业务操作表中存在第一标识信息的情况下,查询第一标识信息所对应的状态是否为加锁状态。
可以理解的是,若数据库服务器的业务操作表中的第一标识信息所对应的状态为未加锁状态,则说明数据库服务器之前接收到过携带有第一标识信息的第一指令,并且,第一标识信息所指向的第一业务操作当前并未被执行。换句话说,当前没有任何操作对象正在执行第一业务操作,终端设备此时执行第一业务操作不会导致出现并发冲突的情况。因此,在接收到第三数据后,终端设备就会去执行第一业务操作,以较好地响应用户的操作指令,从而给用户带来较好的使用体验。
可选地,在数据库服务器的业务操作表中的第一标识信息所对应的状态为加锁状态的情况下,生成用于表征第一业务操作当前正在被执行的第一数据,可以包括:
在数据库服务器的业务操作表中的第一标识信息所对应的状态为加锁状态,且加锁时长不大于预设的时长阈值的情况下,生成用于表征第一业务操作当前正在被执行的第一数据。
本实施例中,时长阈值可以为各个针对数据库的业务操作理论上所需的各个时长中的最大值。
可以理解的是,若数据库服务器查询出第一标识信息所对应的状态为加锁状态,且加锁时长(可以认为是目标操作对象开始执行第一业务操作的时刻到当前时刻的时长,其中,目标操作对象是当前正在执行第一业务操作的对象)不大于预设的时长阈值,则可以认为目标操作对象仍在执行第一业务操作。为了避免产生并发冲突的问题,数据库服务器就可以生成用于表征第一业务操作当前正在被执行的第一数据,并将该第一数据发送至终端设备,以使得终端设备在接收到该数据后,不执行第一业务操作。
可以看出,本实施例较好地避免了针对数据库的同一业务操作并发的情况下,出现并发冲突的问题。
可选地,接收终端设备发送的携带有第一标识信息的第一指令后,该方法还可以包括:
在查询出数据库服务器的业务操作表中的第一标识信息为加锁状态,且加锁时长不小于时长阈值的情况下,生成用于表征第一业务操作当前未被执行的第三数据;
向终端设备发送第三数据,以使终端设备在接收到第三数据后,执行第一业务操作。
可以理解的是,若数据库服务器查询出第一标识信息所对应的状态为加锁状态,且加锁时长大于预设的时长阈值,由于时长阈值为各个针对数据库的业务操作理论上所需的各个时长中的最大值,此时可以确定第一业务操作当前并未被任何操作对象执行,因此,数据库服务器可以生成用于表征第一业务操作当前未被执行的第三数据,并将该第三数据发送至终端设备,以使得终端设备在接收到该数据后,执行第一业务操作,以较好地响应用户的操作指令,从而给用户带来较好的使用体验。
可选地,该方法还可以包括:
接收终端设备在执行完第一业务操作后,发送的退出执行第一业务操作的反馈信息;
根据反馈信息,将业务操作表中,第一标识信息所对应的状态置为未加锁状态。
对于终端设备来说,当前执行完了针对数据库的第一业务操作后,若其未向终端设备发送退出执行第一业务操作的反馈信息,则业务操作表中,第一标识信息所对应的状态将会一直处于加锁状态。相应地,当该终端设备再次接收到用户输入的包括有第一标识信息的操作指令或者其他的终端设备接收到用户输入的包括有第一标识信息的操作指令后,这些终端设备在确定出第一标识信息所对应的状态为加锁状态后,还要去进一步确定加锁时长是否大于预设的时长阈值,以根据判断结果生成相应的数据,操作起来非常麻烦。
为了解决上述问题,当终端设备执行完了第一业务操作之后,其可以向数据库服务器发送退出执行的反馈信息,以使数据库服务器将业务操作表中,第一业务操作所对应的第一标识信息的状态置为未加锁状态。这样,当该终端设备再次接收到用户输入的包括有第一标识信息的操作指令或者其他的终端设备接收到用户输入的包括有第一标识信息的操作指令后,数据库服务器经过查询会发现第一标识信息所对应的状态为未加锁状态,此时数据库服务器就可以直接生成用于表征第一业务操作当前未被执行的第三数据,而无需执行判断加锁时长是否大于预设的时长阈值的步骤。
容易看出,本实施例可以有效地减少数据库服务器所需执行的判断步骤,以节省数据库服务器的系统资源。
可选地,第一指令中包括终端设备中的第一线程的标识信息;反馈信息中包括第二线程的标识信息,根据反馈信息,将业务操作表中,第一标识信息所对应的状态置为未加锁状态,可以包括:
在第一线程的标识信息和第二线程的标识信息相同的情况下,根据反馈信息,将业务操作表中,第一标识信息所对应的状态置为未加锁状态。
本领域技术人员容易理解的是,第一指令中包括终端设备中的第一线程的标识信息,表明实际想要执行第一业务操作的操作对象为终端设备中的第一线程,此时可以认为第一线程想要对业务操作表中的第一标识信息进行加锁。反馈信息中包括第二线程的标识信息,这表明想要将第一标识信息所对应的状态由加锁状态更改为未加锁状态的为第二线程,此时可以认为第二线程想要对业务操作表中的第一标识信息进行解锁。若第一线程和第二线程相同,则表明对第一标识信息加锁和解锁的操作对象为同一个操作对象,该操作对象在执行完了第一业务操作之后,正常地向数据库服务器发送了退出执行第一业务操作的反馈信息。若第一线程和第二线程不相同,则表明对第一标识信息加锁和解锁的操作对象并不是同一个操作对象,此时第一线程可能并未结束执行第一业务操作。若终端设备此时将业务操作表中的第一标识信息的状态置为未加锁状态,则当另外一个线程(可能与第一线程位于同一终端设备上,或者与第一线程位于不同的终端设备上)接收到同一操作指令后,另外一个线程就会去执行第一业务操作,此时就可能会导致出现并发冲突的情况。
为了避免出现并发冲突的情况,数据库服务器在接收到反馈信息后,其会去判断两个线程的标识信息是否相同,只有在两者相同的情况下,其才会将第一标识信息所对应的状态由加锁状态重置为未加锁状态。
容易看出,本实施例进一步避免了针对数据库的同一业务操作并发的情况下,出现并发冲突的问题。
需要说明的是,本实施例中,终端设备在接收到用于表征第一业务操作当前正在被执行的第一数据后,其可以等待预定的时间间隔后,再次向数据库服务器发送携带有第一标识信息的第一指令,此时会存在两种情况。
一种情况下,终端设备接收到的不是第一数据了,这表明之前的操作对象已经执行完了第一业务操作,并通过其所在的终端设备向数据库服务器发送了退出执行的反馈信息,从而使数据库服务器将第一标识信息所对应的状态由加锁状态重置为了未加锁状态。此时终端设备就会执行操作指令所指示的第一业务操作,以响应用户的操作指令。
另一种情况下,终端设备接收到的仍然是第一数据,这表明之前的操作对象仍然在执行第一业务操作,其未向数据库服务器发送退出执行的反馈信息。因此,终端设备会继续等待,当再次经过预定的时间间隔后,其可以再次执行向数据库服务器发送携带有第一标识信息的第一指令的步骤,直至其获得不是第一数据为止。
需要说明的是,预定的时间间隔的具体取值可以根据实际情况来确定,本实施例对此不做任何限定。
可以看出,本实施例可以保证终端设备能够较好地响应用户的操作指令。
可选地,时长阈值可以是时间间隔的N倍,其中,N为大于1的整数。
需要说明的是,N的具体取值可以根据实际情况来确定,本实施例对此不做任何限定。
假设时间间隔是10S,时长阈值是30S。当终端设备第一次向数据库服务器发送第一指令后,若终端设备获得的是第一数据,则在间隔10S之后,终端设备就会第二次向数据库服务器发送第一指令;若终端设备获得的仍是第一数据,在间隔10S之后,终端设备就会第三次向数据库服务器发送第一指令。一般来说,在终端设备等待的过程中,若没有其他的操作对象向数据库服务器发送携带有相同标识信息的第一指令,那么最多在发出三次第一指令后,终端设备一定能获得用于表征第一业务操作当前并未被执行的第一数据。
可以看出,通过对时长阈值和时间间隔的商值的合理设置,可以有效地较少终端设备发送第一指令的次数。
上述实施例中,终端设备在向数据库服务器发送携带有第一标识信息的第一指令前,其可以先判断第一业务操作是否为用于更改数据库的操作;若为是,再执行向数据库服务器发送携带有第一标识信息的第一指令的步骤。
需要强调的是,若经判断第一业务操作为不会对数据库造成更改的操作,例如读操作,那么第一业务操作的执行并不会导致出现并发冲突的情况,因此,终端设备可以直接执行第一业务操作,而无需去确定第一业务操作是否正在被执行。若经判断第一业务操作为会对数据库造成更改的操作,例如写操作,那么第一业务操作的执行很可能就会导致出现并发冲突的情况,因此,终端设备需要先去判断第一业务操作当前是否正在被执行,并在判断结果为是的情况下,不执行第一业务操作。
可以看出,本实施例中,终端设备可以在第一业务操作不是更改数据库的操作的情况下,直接执行第一业务操作,故本实施例可以较为迅速地响应用户的操作指令,从而给用户带来较佳的使用体验。
上述实施例中,终端设备在获得针对数据库服务器中的数据库的操作指令后,其可以向数据库服务器发送第二指令,以使数据库服务器检测其与终端设备的连接是否存在异常。
需要说明的是,数据库服务器可以采用现有技术中常用的、用来检测两个设备之间的连接是否存在异常的方法,以检测其自身与终端设备的连接是否存在异常,具体检测过程在此不再赘述。
在检测完成之后,数据库服务器可以向终端设备发送用于表征两者的连接是否存在异常的第四数据。终端设备根据接收到的第四数据,就可以判断该连接是否存在异常。若经判断两者之间的连接存在异常,后续的步骤可能无法正常地执行,因此,终端设备会输出报警信息,以提示用户两者之间的连接存在异常。具体地,终端设备输出报警信息的实现形式多样,例如声音报警、文字报警等,这都是可行的,在此不再一一列举。这样,当用户接收到该报警信息后,用户可以对两者之间的连接进行检查、修复等,以使终端设备与数据库服务器之间重新建立良好的连接。若经判断两者之间的连接不存在异常,即说明数据库服务器与终端设备之间可以进行正常的信息交互,此时终端设备直接向数据库服务器发送第一指令即可。
可以看出,本实施例可以有效地保证终端设备和数据库服务器之间能够进行正常的信息交互。
下面以一个具体的例子对本发明实施例所提供的一种数据库并发控制方法的具体实施过程进行详细的说明。
假设数据库为MySQL数据库,并且,该数据库内存储有一张逻辑锁表(可以认为是上述的业务操作表),该逻辑锁表内的主要字段可以参照表1。
表1
其中,该逻辑锁表中可以包括约束条件1、约束条件2、约束条件3、…、约束条件N等,这些约束条件可以认为是数据库服务器已接收到的所有第一指令中所包含的标识信息,其用来对各种针对数据库的业务操作进行标识。需要说明的是,约束条件可以仅有一个,只需要保证其能够对每一业务操作进行标识即可。该逻辑锁表中的last_call字段用于标识某个标识信息最近一次被置为加锁状态的时刻。该逻辑锁表中的unique_flag字段用于标识某个标识信息所对应的业务操作的实际操作对象。具体地,unique_flag字段可以为某个线程的标识信息,该标识信息的具体形式可以为:APP唯一标识和线程id,其中,APP唯一标识可以使用APP所在的物理机或虚拟机的IP地址、MAC地址或者登陆名等。该逻辑锁表中的locked字段用于标识某个标识信息对应的状态,该状态包括加锁状态和未加锁状态(即解锁状态),其中,locked字段值为1对应着加锁状态,locked字段值为0对应着未加锁状态。
假设表1中的实际字段值如表2所示。
约束条件1 | last_call | unique_flag | locked |
A1 | t1 | 线程1 | 1 |
A2 | t2 | 线程2 | 0 |
A3 | t3 | 线程3 | 1 |
A4 | t4 | 线程4 | 1 |
表2
如表2所示,该逻辑锁表中有四个业务操作的标识信息,分别为A1、A2、A3和A4。其中,A1最近一次被置为加锁状态的时刻为t1,A1所对应的locked字段值为1,故A1对应的状态为加锁状态,A1所对应的业务操作当前正在被执行,并且,当前正在执行A1所对应的业务操作的操作对象为第一线程1,此时可以认为A1所对应的业务操作的逻辑锁被线程1所持有。A2最近一次被置为加锁状态的时刻为t2,A2所对应的locked字段值为0,故A2的状态为未加锁状态,即A2所对应的业务操作当前并未被执行,且最近一次执行过A2所对应的业务操作的操作对象为线程2,此时可以认为A2所对应的业务操作的逻辑锁当前未被任何线程持有。其他标识信息的相关信息依此类推,在此不再赘述。
本领域技术人员可以理解的是,MySQL数据库中具有ON DUPLICATE KEY UPDATE语句。在MySQL数据库中,若在INSERT语句的末尾指定了ON DUPLICATE KEY UPDATE语句,当插入行导致一个UNIQUE索引或者主键中出现重复值时,在出现重复值的行会执行UPDATE;否则,插入新行。一般而言,数据库服务器执行上述过程会出现三种情况:第一种情况下,行作为新记录被插入,这种情况所对应的影响行数值为1;第二种情况下,原有的记录被更新,这种情况所对应的影响行数值为2;第三种情况下,原有的记录均未被更新,这种情况所对应的影响行数值为0。
本实施例中,在对逻辑锁表进行修改(包括修改表项或新增表项)时,数据库服务器可以利用该ON DUPLICATE KEY UPDATE语句,根据执行该语句后出现的情况确定逻辑锁表所对应的影响行数值,生成所确定的影响行数值,并将生成的影响行数值作为用于表征第一业务操作当前是否正在被执行的数据。
具体地,当数据库服务器接收到了携带某一标识信息的第一指令后,若逻辑锁表中该标识信息所对应的状态为加锁状态,且加锁时长不大于时长阈值,数据库服务器就可以确定该标识信息所对应的业务操作当前正在被执行,那么数据库服务器对逻辑锁表不需要做任何修改,逻辑锁表的影响行数值为0,数据库服务器可以将影响行数值0作为第一数据发送至终端设备,以表征第一业务操作当前正在被执行;若逻辑锁表中没有相应的标识信息,数据库服务器可以确定该标识信息所对应的业务操作当前并未被执行,该业务操作可以被发送第一指令的终端设备执行,那么数据库服务器会向逻辑锁表中插入该标识信息及该标识信息所对应的状态(此时插入的状态应为加锁状态),因此,逻辑锁表的影响行数值为1,数据库服务器可以将影响行数值1作为第二数据发送至终端设备,以表征第一业务操作当前并未被执行;若逻辑锁表中该标识信息所对应的状态为未加锁状态,数据库服务器可以确定该标识信息所对应的业务操作当前并未被执行,该业务操作可以被发送第一指令的终端设备执行,那么数据库服务器会将逻辑锁表中、该标识信息所对应的状态修改为加锁状态(即原有记录被更新),因此,逻辑锁表的影响行数值为2,数据库服务器可以将影响行数值2作为第三数据发送至终端设备,以表征第一业务操作当前并未被执行;若逻辑锁表中该标识信息所对应的状态为加锁状态,但加锁时长大于时长阈值,数据库服务器可以确定该标识信息所对应的业务操作当前并未被执行,该业务操作可以被发送第一指令的终端设备执行,那么数据库服务器会将逻辑锁表中、该标识信息所对应的业务操作的实际操作对象修改为通过终端设备发送该第一指令的操作对象(即原有记录被更新),因此,逻辑锁表的影响行数值为2,数据库服务器可以将影响行数值2作为第三数据发送至终端设备,以表征第一业务操作当前并未被执行。
需要说明的是,终端设备内需要预先存储各个影响行数值与第一业务操作是否正在被执行的对应关系,以使得终端设备在接收到影响行数值0、1或2后,能够确定第一业务操作当前是否正在被执行。
对于终端设备来说,当其获得了携带有某一标识信息的操作指令后,其可以向数据库服务器发送第一指令,以使数据库服务器执行用于对表2进行处理的程序段(该程序段中具有ON DUPLICATE KEY UPDATE语句)。具体地,用于对表2进行处理的程序段可以为:
假设当前线程5获得了携带A1的操作指令,此时线程5就会通过其所在的终端设备向数据库服务器发送携带A1的第一指令,数据库服务器就会去执行上述程序段。此时,数据库服务器会发现A1所对应的locked字段值为1,此时可以认为A1所对应的业务操作的逻辑锁被持有,数据库服务器会去调用时间戳函数UNIX_TIMESTAMP()和获取当前系统时间的函数sysdate(),以使UNIX_TIMESTAMP(sysdate())返回从UNIX纪元(格林威治时间1970年1月1日00:00:00)到当前时间的秒数。这样,数据库服务器可以将调用上述函数得到的秒数与t1相减,以得到两者之差。根据两者之差是否大于时长阈值,后续执行过程存在着一定的差别。
若两者之差大于时长阈值,例如10s,则说明线程1已经执行完了A1所对应的业务操作,但是,线程1并未通过其所在的终端设备向数据库服务器退出执行的反馈信息。此时,A1所对应的业务操作的逻辑锁将会由线程5来持有,数据库服务器会将表2的第一行数据中的线程1更改为线程5,并将t1更改为线程5获得逻辑锁的时间t5。可以看出,这种情况下,表2中的第一行数据被更新,故这种情况所对应的影响行数值为2,数据库服务器可以生成影响行数值2,即用于表征A1所对应的业务操作当前并未被执行的第三数据。这样,当数据库服务器将第三数据发送至线程5所在的终端设备后,线程5根据该第三数据,即影响行数值2,就会确定A1所对应的业务操作当前并未被执行,故线程5将会执行A1所对应的业务操作。当线程5执行完了A1所对应的业务操作后,线程5会通过其所在的终端设备向数据库服务器发送反馈信息,此时数据库服务器会将表2的第一行数据中的locked字段值置为0。
若两者之差不大于时长阈值,例如10s,则说明线程1仍然在继续执行A1所对应的业务操作。此时数据库服务器不会对表2进行任何更改。可以看出,这种情况下,表2并未发生任何更改,故这种情况所对应的影响行数值为0,数据库服务器可以生成影响行数值0,即用于表征A1所对应的业务操作当前正在被执行的第一数据。这样,当数据库服务器将该第一数据发送至线程5所在的终端设备后,线程5根据该第一数据,就会确定出A1所对应的业务操作当前正在被执行,故线程5将不会执行A1所对应的业务操作。线程5将会等待预定的时间间隔,并在预定的时间间隔后再次向数据库服务器发送携带A1的第一指令,直至其获得的影响行数值为2为止。
若当前线程6获得了携带A2的操作指令,此时线程6就会通过其所在的终端设备向数据库服务器发送携带A2的第一指令,数据库服务器就会去执行上述程序段。此时,数据库服务器会发现A2所对应的locked字段值为0,即A2所对应的业务操作的逻辑锁未被持有,故数据库服务器会将表2的第二行数据中的线程2修改为线程6,并将t2更新为线程6获得逻辑锁的时间t6。可以看出,这种情况下,表2中的第二行数据被更新,故这种情况所对应的影响行数值为2,数据库服务器可以生成影响行数值2,即用于表征A2所对应的业务操作当前并未被执行的第三数据。这样,当数据库服务器将该第三数据发送至线程6所在的终端设备后,线程6根据该第三数据,即影响行数值2,就会确定出A2所对应的业务操作当前并未被执行,故线程6将会执行A2所对应的业务操作。
若当前线程7获得了携带A7的操作指令,此时线程7就会通过其所在的终端设备向数据库服务器发送携带A7的第一指令,数据库服务器就会去执行上述程序段。此时数据库服务器会发现逻辑锁表中并不存在A7,即数据库服务器之前从未接收过携带A7的操作指令。此时数据库服务器会向表2中插入一行新的数据,这时逻辑锁表将会由表2更新为表3。
约束条件1 | last_call | unique_flag | locked |
A1 | t1 | 线程1 | 1 |
A2 | t2 | 线程2 | 0 |
A3 | t3 | 线程3 | 1 |
A4 | t4 | 线程4 | 1 |
A7 | t7 | 线程7 | 1 |
表3
相应地,线程7将会持有A7所对应的业务操作的逻辑锁。可以看出,这种情况下,表2中插入了一行新的数据,故这种情况所对应的影响行数值为1,数据库服务器可以生成影响行数值1,即用于表征A7所对应的业务操作当前并未被执行的第二数据。这样,当数据库服务器将该第二数据,即影响行数值1发送至线程7所在的终端设备后,线程7根据该第二数据,就会确定出A7所对应的业务操作当前并未被执行,故线程7将会执行A7所对应的业务操作。
此外,为了保证各线程所在的终端设备能够与数据库服务器进行正常地信息交互,各线程在获得了携带某一标识信息的操作指令后,其可以先向数据库服务器发送第二指令,以使数据库服务器检测其与终端设备之间的连接是否存在异常,并生成表征连接是否存在异常的数据。具体地,该数据也可以通过影响行数值来进行表征。举例而言,当数据库服务器与终端设备之间的连接存在异常时,数据库服务器可以生成影响行数值-1(即上文中的第四数据),并将该影响行数值发送至终端设备。一般而言,数据库服务器在执行上述程序段时,在正常情况下,生成的影响行数值一般为0、1或2,其不可能为其他的数值,故若终端设备获得的影响行数值为-1,那么终端设备就可以输出报警信号,以提示用户检查终端设备与数据库服务器之间的连接。
综上,本实施例较好地避免了在针对数据库的同一业务操作并发的情况下,出现并发冲突的问题。
相应于上述方法实施例,本发明实施例提供了一种数据库并发控制装置,该装置应用于数据库服务器,如图4所示,该装置可以包括:
指令接收模块41,用于接收终端设备发送的携带有第一标识信息的第一指令,其中,第一指令为终端设备获得针对数据库服务器中的数据库的操作指令后发送的,第一标识信息为操作指令中所包括的第一业务操作的标识信息;
第一处理模块42,用于在数据库服务器的业务操作表中的第一标识信息所对应的状态为加锁状态的情况下,生成用于表征第一业务操作当前正在被执行的第一数据,其中,业务操作表中存储有至少一个标识信息及每个标识信息所对应的状态,该状态包括加锁状态和未加锁状态;
第一发送模块43,用于向终端设备发送第一数据,以使终端设备在接收到第一数据后,不执行第一业务操作。
本实施例中,当终端设备获得针对数据库的操作指令后,终端设备不会立即执行操作指令所指示的第一业务操作,而是先向数据库服务器发送第一指令,以使数据库服务器执行相应的查询操作以及数据生成操作。最终,若终端设备接收到的为表征第一业务操作当前正在被执行的第一数据,终端设备就不会执行第一业务操作。与现有技术相比,本实施例较好地避免了在针对数据库的同一业务操作并发的情况下,出现并发冲突的问题。
可选地,该装置还可以包括:
第二处理模块,用于接收终端设备发送的携带有第一标识信息的第一指令后,在数据库服务器的业务操作表中不存在第一标识信息的情况下,将第一标识信息更新至业务操作表中,将第一标识信息所对应的状态置为加锁状态,并生成用于表征第一业务操作当前未被执行的第二数据;
第二发送模块,用于向终端设备发送第二数据,以使终端设备在接收到第二数据后,执行第一业务操作。
可选地,该装置还可以包括:
第三处理模块,用于接收终端设备发送的携带有第一标识信息的第一指令后,在数据库服务器的业务操作表中的第一标识信息为未加锁状态的情况下,将第一标识信息所对应的状态置为加锁状态,并生成用于表征第一业务操作当前未被执行的第三数据;
第三发送模块,用于向终端设备发送第三数据,以使终端设备在接收到第三数据后,执行第一业务操作。
可选地,第一处理模块,具体用于:
在数据库服务器的业务操作表中的第一标识信息所对应的状态为加锁状态,且加锁时长不大于预设的时长阈值的情况下,生成用于表征第一业务操作当前正在被执行的第一数据。
可选地,该装置还可以包括:
第四处理模块,用于接收终端设备发送的携带有第一标识信息的第一指令后,在数据库服务器的业务操作表中的第一标识信息为加锁状态,且加锁时长大于预设的时长阈值的情况下,生成用于表征第一业务操作当前未被执行的第三数据;
第四发送模块,用于向终端设备发送第三数据,以使终端设备在接收到第三数据后,执行第一业务操作。
可选地,该装置还可以包括:
反馈信息接收模块,用于接收终端设备在执行完第一业务操作后,发送的退出执行第一业务操作的反馈信息;
状态重置模块,用于根据反馈信息,将业务操作表中,第一标识信息所对应的状态置为未加锁状态。
可选地,第一指令中包括终端设备中的第一线程的标识信息;反馈信息中包括第二线程的标识信息,状态重置模块,具体用于:
在第一线程的标识信息和第二线程的标识信息相同的情况下,根据反馈信息,将业务操作表中,第一标识信息所对应的状态置为未加锁状态。
综上,本实施例较好地保证了在同一业务操作并发时,各个终端设备对数据库的业务操作之间不发生并发冲突。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
Claims (14)
1.一种数据库并发控制方法,其特征在于,应用于数据库服务器,所述方法包括:
接收终端设备发送的携带有第一标识信息的第一指令,其中,所述第一指令为所述终端设备获得针对所述数据库服务器中的数据库的操作指令后发送的,所述第一标识信息为所述操作指令中所包括的第一业务操作的标识信息;
在数据库服务器的业务操作表中的第一标识信息所对应的状态为加锁状态的情况下,生成用于表征所述第一业务操作当前正在被执行的第一数据,其中,所述业务操作表中存储有至少一个标识信息及每个标识信息所对应的状态,所述状态包括加锁状态和未加锁状态,所述第一标识信息所对应的状态为加锁状态表征所述第一标识信息所指向的所述第一业务操作当前正在被执行;
向所述终端设备发送所述第一数据,以使所述终端设备在接收到所述第一数据后,不执行所述第一业务操作。
2.根据权利要求1所述的方法,其特征在于,所述接收终端设备发送的携带有第一标识信息的第一指令后,所述方法还包括:
在所述数据库服务器的业务操作表中不存在所述第一标识信息的情况下,将所述第一标识信息更新至所述业务操作表中,将所述第一标识信息所对应的状态置为加锁状态,并生成用于表征所述第一业务操作当前未被执行的第二数据;
向所述终端设备发送所述第二数据,以使所述终端设备在接收到所述第二数据后,执行所述第一业务操作。
3.根据权利要求1所述的方法,其特征在于,所述接收终端设备发送的携带有第一标识信息的第一指令后,所述方法还包括:
在所述数据库服务器的业务操作表中的第一标识信息所对应的状态为未加锁状态的情况下,将所述第一标识信息所对应的状态置为加锁状态,并生成用于表征所述第一业务操作当前未被执行的第三数据;
向所述终端设备发送所述第三数据,以使所述终端设备在接收到所述第三数据后,执行所述第一业务操作。
4.根据权利要求1所述的方法,其特征在于,所述在所述数据库服务器的业务操作表中的第一标识信息为加锁状态的情况下,生成用于表征所述第一业务操作当前正在被执行的第一数据,包括:
在所述数据库服务器的业务操作表中的第一标识信息所对应的状态为加锁状态,且加锁时长不大于预设的时长阈值的情况下,生成用于表征所述第一业务操作当前正在被执行的第一数据。
5.根据权利要求4所述的方法,其特征在于,所述接收终端设备发送的携带有第一标识信息的第一指令后,所述方法还包括:
在所述数据库服务器的业务操作表中的第一标识信息所对应的状态为加锁状态,且加锁时长大于预设的时长阈值的情况下,生成用于表征所述第一业务操作当前未被执行的第三数据;
向所述终端设备发送所述第三数据,以使所述终端设备在接收到所述第三数据后,执行所述第一业务操作。
6.根据权利要求2、3和5中任一项所述的方法,其特征在于,所述方法还包括:
接收所述终端设备在执行完所述第一业务操作后,发送的退出执行所述第一业务操作的反馈信息;
根据所述反馈信息,将所述业务操作表中,所述第一标识信息所对应的状态置为未加锁状态。
7.根据权利要求6所述的方法,其特征在于,所述第一指令中包括所述终端设备中的第一线程的标识信息;所述反馈信息中包括第二线程的标识信息;
所述根据所述反馈信息,将所述业务操作表中,所述第一标识信息所对应的状态置为未加锁状态,包括:
在所述第一线程的标识信息和所述第二线程的标识信息相同的情况下,根据所述反馈信息,将所述业务操作表中,所述第一标识信息所对应的状态置为未加锁状态。
8.一种数据库并发控制装置,其特征在于,应用于数据库服务器,所述装置包括:
指令接收模块,用于接收终端设备发送的携带有第一标识信息的第一指令,其中,所述第一指令为所述终端设备获得针对所述数据库服务器中的数据库的操作指令后发送的,所述第一标识信息为所述操作指令中所包括的第一业务操作的标识信息;
第一处理模块,用于在数据库服务器的业务操作表中的第一标识信息所对应的状态为加锁状态的情况下,生成用于表征所述第一业务操作当前正在被执行的第一数据,其中,所述业务操作表中存储有至少一个标识信息及每个标识信息所对应的状态,所述状态包括加锁状态和未加锁状态,所述第一标识信息所对应的状态为加锁状态表征所述第一标识信息所指向的所述第一业务操作当前正在被执行;
第一发送模块,用于向所述终端设备发送所述第一数据,以使所述终端设备在接收到所述第一数据后,不执行所述第一业务操作。
9.根据权利要求8所述的装置,其特征在于,所述装置还包括:
第二处理模块,用于接收终端设备发送的携带有第一标识信息的第一指令后,在所述数据库服务器的业务操作表中不存在所述第一标识信息的情况下,将所述第一标识信息更新至所述业务操作表中,将所述第一标识信息所对应的状态置为加锁状态,并生成用于表征所述第一业务操作当前未被执行的第二数据;
第二发送模块,用于向所述终端设备发送所述第二数据,以使所述终端设备在接收到所述第二数据后,执行所述第一业务操作。
10.根据权利要求8所述的装置,其特征在于,所述装置还包括:
第三处理模块,用于接收终端设备发送的携带有第一标识信息的第一指令后,在所述数据库服务器的业务操作表中的第一标识信息为未加锁状态的情况下,将所述第一标识信息所对应的状态置为加锁状态,并生成用于表征所述第一业务操作当前未被执行的第三数据;
第三发送模块,用于向所述终端设备发送所述第三数据,以使所述终端设备在接收到所述第三数据后,执行所述第一业务操作。
11.根据权利要求8所述的装置,其特征在于,所述第一处理模块,具体用于:
在所述数据库服务器的业务操作表中的第一标识信息所对应的状态为加锁状态,且加锁时长不大于预设的时长阈值的情况下,生成用于表征所述第一业务操作当前正在被执行的第一数据。
12.根据权利要求11所述的装置,其特征在于,所述装置还包括:
第四处理模块,用于接收终端设备发送的携带有第一标识信息的第一指令后,在所述数据库服务器的业务操作表中的第一标识信息所对应的状态为加锁状态,且加锁时长大于预设的时长阈值的情况下,生成用于表征所述第一业务操作当前未被执行的第三数据;
第四发送模块,用于向所述终端设备发送所述第三数据,以使所述终端设备在接收到所述第三数据后,执行所述第一业务操作。
13.根据权利要求9、10和12中任一项所述的装置,其特征在于,所述装置还包括:
反馈信息接收模块,用于接收所述终端设备在执行完所述第一业务操作后,发送的退出执行所述第一业务操作的反馈信息;
状态重置模块,用于根据所述反馈信息,将所述业务操作表中,所述第一标识信息所对应的状态置为未加锁状态。
14.根据权利要求13所述的装置,其特征在于,所述第一指令中包括所述终端设备中的第一线程的标识信息;所述反馈信息中包括第二线程的标识信息,所述状态重置模块,具体用于:
在所述第一线程的标识信息和所述第二线程的标识信息相同的情况下,根据所述反馈信息,将所述业务操作表中,所述第一标识信息所对应的状态置为未加锁状态。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610620620.4A CN106250487B (zh) | 2016-07-29 | 2016-07-29 | 一种数据库并发控制方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610620620.4A CN106250487B (zh) | 2016-07-29 | 2016-07-29 | 一种数据库并发控制方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106250487A CN106250487A (zh) | 2016-12-21 |
CN106250487B true CN106250487B (zh) | 2020-07-03 |
Family
ID=57606865
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610620620.4A Active CN106250487B (zh) | 2016-07-29 | 2016-07-29 | 一种数据库并发控制方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106250487B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108830937B (zh) * | 2018-05-25 | 2023-08-08 | 如你所视(北京)科技有限公司 | 一种操作冲突的处理方法及服务器 |
CN111385294B (zh) * | 2020-03-04 | 2021-04-20 | 腾讯科技(深圳)有限公司 | 数据处理方法、系统、计算机设备和存储介质 |
CN113630263B (zh) * | 2020-05-08 | 2023-04-14 | 亚信科技(中国)有限公司 | 一种业务数据的管理方法及装置 |
CN111782938B (zh) * | 2020-05-29 | 2021-02-09 | 广西博士海意信息科技有限公司 | 一种信息查询推送方法、装置及计算机设备 |
CN115829189B (zh) * | 2023-02-08 | 2023-05-05 | 安徽深迪科技有限公司 | 一种智能工厂大数据的可视化调度方法及装置 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6889358B1 (en) * | 1998-01-08 | 2005-05-03 | Lucent Technologies Inc. | Concurrency control in materialized views of a database |
BR0213863A (pt) * | 2001-11-01 | 2004-12-21 | Verisign Inc | Processo e sistema para atualizar um banco de dados remoto |
US7269588B1 (en) * | 2003-09-24 | 2007-09-11 | Oracle International Corporation | Neighborhood locking technique for increasing concurrency among transactions |
CN101615203B (zh) * | 2009-07-23 | 2012-04-04 | 中兴通讯股份有限公司 | 并发控制方法及装置 |
-
2016
- 2016-07-29 CN CN201610620620.4A patent/CN106250487B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN106250487A (zh) | 2016-12-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106250487B (zh) | 一种数据库并发控制方法及装置 | |
CN110309161B (zh) | 一种数据同步方法、装置及服务器 | |
US9594619B2 (en) | Robust hardware fault management system, method and framework for enterprise devices | |
US10656981B2 (en) | Anomaly detection using sequences of system calls | |
CN111782669B (zh) | 一种分布式锁的实现方法、装置及电子设备 | |
US8448175B2 (en) | Deadlock detection in a parallel program | |
CN111416839B (zh) | 集群环境定时任务处理方法、系统、装置及存储介质 | |
US5301311A (en) | Control method for preventing incorrect reset of common resource and multicomputer system executing the method | |
US10616068B2 (en) | Identification of networking component application programming interfaces | |
EP2946287B1 (en) | Dynamic firmware updating | |
US20220222266A1 (en) | Monitoring and alerting platform for extract, transform, and load jobs | |
US9870314B1 (en) | Update testing by build introspection | |
CN110764894A (zh) | 一种定时任务管理方法、装置、设备及存储介质 | |
CN107463390B (zh) | 一种软件升级方法及升级服务器 | |
CN113315750B (zh) | 一种Kafka消息发布方法、装置及存储介质 | |
US10521327B2 (en) | Non-coupled software lockstep | |
CN110674153B (zh) | 一种数据一致性检测方法、装置及电子设备 | |
CN110955460A (zh) | 一种服务进程启动方法、装置、电子设备和存储介质 | |
CN113127883B (zh) | 一种平台固件保护恢复的锁定方法、装置、设备及介质 | |
CN115309421A (zh) | 单点系统的静态变量同步方法、装置、设备及存储介质 | |
US8656410B1 (en) | Conversion of lightweight object to a heavyweight object | |
CN112099879A (zh) | 配置信息管理方法、装置、计算机设备及存储介质 | |
EP3218826A1 (en) | System for cross-host, multi-thread session alignment | |
CN116775171B (zh) | 一种架构切换方法、装置、电子设备及存储介质 | |
CN112528198B (zh) | 一种基于前端的细节权限控制方法、系统、设备及介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Address after: 310052 Binjiang District Changhe Road, Zhejiang, China, No. 466, No. Applicant after: Xinhua three Technology Co., Ltd. Address before: 310053 Hangzhou science and Technology Industrial Park, high tech Industrial Development Zone, Zhejiang Province, No. six and road, No. 310 Applicant before: Huasan Communication Technology Co., Ltd. |
|
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |