CN107229632A - 一种避免线程并发访问数据库的方法和装置 - Google Patents

一种避免线程并发访问数据库的方法和装置 Download PDF

Info

Publication number
CN107229632A
CN107229632A CN201610171969.4A CN201610171969A CN107229632A CN 107229632 A CN107229632 A CN 107229632A CN 201610171969 A CN201610171969 A CN 201610171969A CN 107229632 A CN107229632 A CN 107229632A
Authority
CN
China
Prior art keywords
mutual exclusion
exclusion lock
thread
pond
lock
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.)
Pending
Application number
CN201610171969.4A
Other languages
English (en)
Inventor
吴甲城
刘旭华
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Advanced New Technologies Co Ltd
Advantageous New Technologies Co Ltd
Original Assignee
Alibaba Group Holding Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Alibaba Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Priority to CN201610171969.4A priority Critical patent/CN107229632A/zh
Publication of CN107229632A publication Critical patent/CN107229632A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • G06F16/24532Query optimisation of parallel queries
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/526Mutual exclusion algorithms

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请公开了一种避免线程并发访问数据库的方法和装置,属于计算机技术领域。所述方法包括:当预设业务程序的第一线程和第二线程同时访问预设数据库时,获取所述预设业务程序的互斥锁池;其中,所述互斥锁池中存储有将所述预设业务程序的指定要素进行遍历组合得到的多种互斥锁;判断所述第一线程的互斥锁和第二线程的互斥锁是否同时位于所述互斥锁池中;若是,则判定所述第一线程和第二线程不能同时访问所述预设数据库。利用本申请实施例,可以实现避免不同操作的线程并发访问同一数据库。

Description

一种避免线程并发访问数据库的方法和装置
技术领域
本申请涉及计算机技术领域,具体涉及一种避免线程并发访问数据库的方法和装置。
背景技术
为了提高操作系统在单位时间内的处理效率,常常会使用并发的方法,并发是指在操作系统中,由多个线程在同一时间段内同时运行一个业务程序的处理过程。当多个线程在同时运行一个业务程序的处理过程中,多个线程中某几个线程需要同时访问同一数据库进行相同操作(比如对同一数据进行加减操作)时,可能会引起冲突。为了避免上述冲突,引入了互斥锁的概念,通过互斥锁来保证在任一时刻,进行相同操作的某几个线程中只有一个线程访问该数据库。
现有技术中,对数据库访问的线程的互斥锁是将数据库的唯一性索引作为要素得到的,唯一索引具有唯一性,由相同索引作为要素得到的互斥锁才可以互斥,比如互斥锁1的要素是a、b和c,互斥锁2的要素是a、b和c,此时由于所述互斥锁1和互斥锁2的要素相同(都是a、b、c),因此互斥,所述互斥锁1和互斥锁2对应的线程不能同时访问同一数据库。然而,对于有些业务程序,不但需要避免相同操作的线程并发访问同一数据库,而且也需要避免不同操作的线程并发访问同一数据库,比如互斥锁1的要素是a、b和c,互斥锁2的要素是a、d和e,此时由于互斥锁1和互斥锁2的要素不一致,因此不互斥,所述互斥锁1和互斥锁2对应的线程可以同时访问同一数据库。
综上所述,现有技术中存在无法避免不同操作的线程并发访问同一数据库的问题。
发明内容
为了解决现有技术中存在无法避免不同操作的线程并发访问同一数据库的问题,本申请提供了一种避免线程并发访问数据库的方法和装置具体是这样实现的:
一种避免线程并发访问数据库的方法,所述方法包括:
当预设业务程序的第一线程和第二线程同时访问预设数据库时,获取所述预设业务程序的互斥锁池;其中,所述互斥锁池中存储有将所述预设业务程序的指定要素进行遍历组合得到的多种互斥锁;
判断所述第一线程的互斥锁和第二线程的互斥锁是否同时位于所述互斥锁池中;
若是,则判定所述第一线程和第二线程不能同时访问所述预设数据库。
一种避免线程并发访问数据库的方法,所述方法包括:
当预设业务程序的第一线程访问预设数据库时,获取所述预设业务程序的互斥锁池,以及所述互斥锁池对应的适配互斥锁;其中,所述互斥锁池中存储有将所述预设业务程序的指定要素进行遍历组合得到的多种互斥锁;
若所述第一线程的互斥锁位于所述互斥锁池中,则将所述第一线程的互斥锁转换为所述互斥锁池对应的适配互斥锁,并将所述第一线程的适配互斥锁插入所述预设数据库中;
当所述预设业务程序的第二线程访问所述预设数据库时,判断所述第二线程的互斥锁是否位于所述互斥锁池中;
若是,则将所述第二线程的互斥锁转换为所述互斥锁池对应的适配互斥锁,并将所述第二线程的所述适配互斥锁与所述预设数据库中已插入的所述适配互斥锁进行比较;
若判定所述第二线程的所述适配互斥锁与所述预设数据库中的所述适配互斥锁互斥,则所述第二线程不能访问所述预设数据库。
一种避免线程并发访问数据库的装置,所述装置包括:
第一获取模块,用于当预设业务程序的第一线程和第二线程同时访问预设数据库时,获取所述预设业务程序的互斥锁池;其中,所述互斥锁池中存储有将所述预设业务程序的指定要素进行遍历组合得到的多种互斥锁;
判断模块,用于判断所述第一线程的互斥锁和第二线程的互斥锁是否同时位于所述互斥锁池中;
处理模块,用于在所述第一线程的互斥锁和第二线程的互斥锁同时位于所述互斥锁池中时,判定所述第一线程和第二线程不能同时访问所述预设数据库。
一种避免线程并发访问数据库的装置,所述装置包括:
第一获取模块,用于当预设业务程序的第一线程访问预设数据库时,获取所述预设业务程序的互斥锁池,以及所述互斥锁池对应的适配互斥锁;其中,所述互斥锁池中存储有将所述预设业务程序的指定要素进行遍历组合得到的多种互斥锁;
第一转换模块,用于若所述第一线程的互斥锁位于所述互斥锁池中,则将所述第一线程的互斥锁转换为所述互斥锁池对应的适配互斥锁,并将所述第一线程的适配互斥锁插入所述预设数据库中;
判断模块,用于当所述预设业务程序的第二线程访问所述预设数据库时,判断所述第二线程的互斥锁是否位于所述互斥锁池中;
第二转换模块,用于在所述第二线程的互斥锁位于所述互斥锁池中时,将所述第二线程的互斥锁转换为所述互斥锁池对应的适配互斥锁;
处理模块,用于将所述第二线程的所述适配互斥锁与所述预设数据库中已插入的所述适配互斥锁进行比较,判定所述第二线程的所述适配互斥锁与所述预设数据库中的所述适配互斥锁互斥时,所述第二线程不能访问所述预设数据库。
与现有技术相比,本申请可以获得包括以下技术效果:
1)在第一线程和第二线程同时访问预设数据库时,只要所述第一线程的互斥锁和第二线程的互斥锁同时位于所述互斥锁池中,即使所述第一线程的互斥锁和第二线程的互斥锁不相同,也可以判断所述第一线程和第二线程不能同时访问所述预设数据库,如此实现避免不同操作的线程并发访问同一数据库。
2)将第一线程的互斥锁位于互斥锁池时可以将其转换为所述互斥锁池对应的适配互斥锁,并将第一线程的适配互斥锁插入预设数据库中;在第二线程访问所述预设数据库时,如果所述第二线程的互斥锁也位于所述互斥锁池中,也将其转化为所述互斥锁池对应的适配互斥锁。如此,由于第二线程的适配互斥锁与所述预设数据库中插入的适配互斥锁相同,就可以判断所述第二线程不能访问所述预设数据库。这样,即使第二线程的互斥锁与第一线程的互斥锁不相同,也可以实现避免不同操作的线程并发访问同一数据库。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1是本申请一实施例提供的一种避免线程并发访问数据库的方法流程图;
图2是本申请一实施例提供的一种避免线程并发访问数据库的方法流程图;
图3是本申请实施例的一种互斥锁池的示意图;
图4是是本申请一实施例提供的一种避免线程并发访问数据库的方法流程图;
图5是本申请实施例的第三种避免线程并发访问数据库的装置结构示意图;
图6是本申请实施例的第三种避免线程并发访问数据库的装置结构示意图;
图7是本申请实施例的第三种避免线程并发访问数据库的装置结构示意图;
图8是本申请实施例的第三种避免线程并发访问数据库的装置结构示意图。
具体实施方式
以下将配合附图及实施例来详细说明本申请的实施方式,藉此对本申请如何应用技术手段来解决技术问题并达成技术功效的实现过程能充分理解并据以实施。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RaM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RaM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRaM)、静态随机存取存储器(SRaM)、动态随机存取存储器(DRaM)、其他类型的随机存取存储器(RaM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
如在说明书及权利要求当中使用了某些词汇来指称特定组件。本领域技术人员应可理解,硬件制造商可能会用不同名词来称呼同一个组件。本说明书及权利要求并不以名称的差异来作为区分组件的方式,而是以组件在功能上的差异来作为区分的准则。如在通篇说明书及权利要求当中所提及的“包含”为一开放式用语,故应解释成“包含但不限定于”。“大致”是指在可接收的误差范围内,本领域技术人员能够在一定误差范围内解决所述技术问题,基本达到所述技术效果。此外,“耦接”一词在此包含任何直接及间接的电性耦接手段。因此,若文中描述一第一装置耦接于一第二装置,则代表所述第一装置可直接电性耦接于所述第二装置,或通过其他装置或耦接手段间接地电性耦接至所述第二装置。说明书后续描述为实施本发明的较佳实施方式,然所述描述乃以说明本发明的一般原则为目的,并非用以限定本发明的范围。本发明的保护范围当视所附权利要求所界定者为准。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的商品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种商品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的商品或者系统中还存在另外的相同要素。
实施例描述
下面以一实施例对本申请方法的实现作进一步说明。如图1所示,为本申请实施例的一种避免线程并发访问数据库的方法流程图,该方法包括:
S101:当预设业务程序的第一线程和第二线程同时访问预设数据库时,获取所述预设业务程序的互斥锁池。
本实施例中,所述预设业务程序可以是需要实现避免不同操作的线程并发访问同一数据库的任何业务程序。
所述第一线程和第二线程可以是不同操作的线程。
所述互斥锁池中存储有将预设业务程序的指定要素进行遍历组合得到的多种互斥锁。互斥锁池是在执行本步骤之前预先生成,具体生成过程参见图2,在图2对应的内容进行了详细描述。
参见图2,在本实施例的一优选实施例中,在步骤S101当预设业务程序的第一线程和第二线程同时访问预设数据库时,获取所述预设业务程序的互斥锁池之前,还包括如下步骤:
S105:获取预设业务程序的指定要素。
例如:预设业务程序的全部要素为:a,b,c,d。设置预设业务程序的指定要素是预设业务程序的全部要素,即此处预设业务程序的指定要素为:a,b,c,d。
S106:将指定要素进行遍历组合,每一种组合的要素设置一个互斥锁,得到多种互斥锁。
例如:预设业务程序的指定要素为:a,b,c,d,将指定要素进行遍历组合得到:a,b,c,d,(a,b),(a,c),(a,d),(b,c),(b,d),(c,d),(a,b,c),(a,b,d),(b,c,d),(a,b,c,d)。每一种组合的要素设置一个互斥锁,得到多种互斥锁为:互斥锁a,互斥锁b,互斥锁c,互斥锁d,互斥锁(a,b),互斥锁(a,c),互斥锁(a,d),互斥锁(b,c),互斥锁(b,d),互斥锁(c,d),互斥锁(a,b,c),互斥锁(a,b,d),互斥锁(b,c,d),互斥锁(a,b,c,d)。
S107:将多种互斥锁存储在互斥锁池中。
具体地,参见图3,将多种互斥锁存储在互斥锁池中得到互斥锁池。
通过本实施例,将预设业务程序的指定要素进行遍历组合,每一种组合的要素设置一个互斥锁,得到多种互斥锁,将多种互斥锁存储在互斥锁池中得到互斥锁池,可以将任何线程的要素作为指定要素,将预设业务程序的任何线程的互斥锁都存储在互斥锁池中,可以实现避免预设业务程序的任何线程并发访问同一数据库。
S102:判断所述第一线程的互斥锁和第二线程的互斥锁是否同时位于所述互斥锁池中。
判断所述第一线程的互斥锁和第二线程的互斥锁是否同时位于所述互斥锁池中。如果所述第一线程的互斥锁和第二线程的互斥锁同时位于所述互斥锁池中,则执行步骤S103。
S103:若是,则判定所述第一线程和第二线程不能同时访问所述预设数据库。
如果所述第一线程的互斥锁和第二线程的互斥锁同时位于所述互斥锁池中,则判定所述第一线程和第二线程不能同时访问所述预设数据库。
需要说明的是,当第二线程之后有第三线程、第四线程等访问预设数据库时,与第二线程的处理过程类似,第三线程、第四线程也不能访问预设数据库。
通过本实施例,在第一线程和第二线程同时访问预设数据库时,只要所述第一线程的互斥锁和第二线程的互斥锁同时位于所述互斥锁池中,即使所述第一线程的互斥锁和第二线程的互斥锁不相同,也可以判断所述第一线程和第二线程不能同时访问所述预设数据库,如此实现避免不同操作的线程并发访问同一数据库。
如图4所示,为本申请实施例的一种避免线程并发访问数据库的方法流程图,该方法包括:
S201:当预设业务程序的第一线程访问预设数据库时,获取所述预设业务程序的互斥锁池,以及所述互斥锁池对应的适配互斥锁。
本实施例与上述实施例不同之处在于,第一线程和第二线程并不是同时访问预设数据库的,而是第一线程先访问预设数据库,然后第二线程再访问预设数据库时,并且第一线程没有结束访问预设数据库,这样就会出现不同操作的线程并发访问预设数据库的情况。
所述当预设业务程序的第一线程访问预设数据库时,获取所述预设业务程序的互斥锁池与上述实施例中步骤S101相同,此处不再赘述。
所述适配互斥锁可以是指包括预设业务程序的指定要素的互斥锁,或包括预设业务程序的要素之外的其他要素的互斥锁。预设业务程序的指定要素可以是预设业务程序的全部要素、预设业务程序的部分要素等。参照上述实施例中步骤106所述的例子,适配互斥锁可以是包括预设业务程序的指定要素的互斥锁(如互斥锁(a,b,c,d)、互斥锁c、互斥锁(a,b)等),适配互斥锁还可以是包括预设业务程序的要素之外的其他要素的互斥锁(如互斥锁t)。
S202:若所述第一线程的互斥锁位于所述互斥锁池中,则将所述第一线程的互斥锁转换为所述互斥锁池对应的适配互斥锁,并将所述第一线程的适配互斥锁插入所述预设数据库中。
具体地,如果所述第一线程的互斥锁位于所述互斥锁池中,则获取预设业务程序的互斥锁池对应的适配互斥锁;将所述第一线程的互斥锁转换为所述互斥锁池对应的适配互斥锁;将所述第一线程的适配互斥锁插入所述预设数据库中。
S203:当所述预设业务程序的第二线程访问所述预设数据库时,判断所述第二线程的互斥锁是否位于所述互斥锁池中。
当所述预设业务程序的第二线程访问所述预设数据库时,由于第一线程还在访问所述预设数据库,所以需要判断第二线程的互斥锁和已插入所述预设数据库中适配互斥锁是否互斥。当然在判断之前,还需要判断所述第二线程的互斥锁是否位于所述互斥锁池中;如果所述第二线程的互斥锁不位于所述互斥锁池中,则显然所述第二线程的互斥锁与所述预设数据库中适配互斥锁不互斥,不影响第二线程的访问;但是,如果所述第二线程的互斥锁位于所述互斥锁池中,则执行步骤S204。
S204:若是,则将所述第二线程的互斥锁转换为所述互斥锁池对应的适配互斥锁,并将所述第二线程的所述适配互斥锁与所述预设数据库中已插入的所述适配互斥锁进行比较。
如果所述第二线程的互斥锁位于所述互斥锁池中,将所述第二线程的互斥锁转换为所述互斥锁池对应的适配互斥锁。进而将所述第二线程的所述适配互斥锁与所述预设数据库中已插入的所述适配互斥锁进行比较。
S205:若判定所述第二线程的所述适配互斥锁与所述预设数据库中的所述适配互斥锁互斥,则所述第二线程不能访问所述预设数据库。
如果判定所述第二线程的所述适配互斥锁与所述预设数据库中的所述适配互斥锁互斥,则所述第二线程不能访问所述预设数据库。
通过本实施例,将第一线程的互斥锁位于互斥锁池时可以将其转换为所述互斥锁池对应的适配互斥锁,并将第一线程的适配互斥锁插入预设数据库中;在第二线程访问所述预设数据库时,如果所述第二线程的互斥锁也位于所述互斥锁池中,也将其转化为所述互斥锁池对应的适配互斥锁。如此,由于第二线程的适配互斥锁与所述预设数据库中插入的适配互斥锁相同,就可以判断所述第二线程不能访问所述预设数据库。这样,即使第二线程的互斥锁与第一线程的互斥锁不相同,也可以实现避免不同操作的线程并发访问同一数据库。
与上述方法流程对应的,本申请的实施例还提供了一种数值输入装置。该装置可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为逻辑意义上的装置,是通过服务器的中央处理器(CentralProcess Unit,CPU)将对应的计算机程序指令读取到内存中运行形成的。
如图5所示,是本申请实施例的一种避免线程并发访问数据库的装置结构图,该装置包括:
第一获取模块301,用于当预设业务程序的第一线程和第二线程同时访问预设数据库时,获取所述预设业务程序的互斥锁池;其中,所述互斥锁池中存储有将所述预设业务程序的指定要素进行遍历组合得到的多种互斥锁;
判断模块302,用于判断所述第一线程的互斥锁和第二线程的互斥锁是否同时位于所述互斥锁池中;
处理模块303,用于在所述第一线程的互斥锁和第二线程的互斥锁同时位于所述互斥锁池中时,判定所述第一线程和第二线程不能同时访问所述预设数据库。
通过本实施例,在第一线程和第二线程同时访问预设数据库时,只要所述第一线程的互斥锁和第二线程的互斥锁同时位于所述互斥锁池中,即使所述第一线程的互斥锁和第二线程的互斥锁不相同,也可以判断所述第一线程和第二线程不能同时访问所述预设数据库,如此实现避免不同操作的线程并发访问同一数据库。
进一步地,参见图6所示,在所述第一获取模块301之前该装置还可以包括:
第二获取模块304,用于当预设业务程序的第一线程访问预设数据库时,获取预设业务程序的互斥锁池,以及互斥锁池对应的适配互斥锁之前获取预设业务程序的指定要素;
设置模块305,用于将指定要素进行遍历组合,每一种组合的要素设置一个互斥锁,得到多种互斥锁;
配置模块306,用于将多种互斥锁存储在互斥锁池中。
通过本实施例,将预设业务程序的指定要素进行遍历组合,每一种组合的要素设置一个互斥锁,得到多种互斥锁,将多种互斥锁存储在互斥锁池中得到互斥锁池,可以将任何线程的要素作为指定要素,将预设业务程序的任何线程的互斥锁都存储在互斥锁池中,可以实现避免预设业务程序的任何线程并发访问同一数据库。
如图7所示,是本申请实施例的一种避免线程并发访问数据库的装置结构图,该装置包括:
第一获取模块401,用于当预设业务程序的第一线程访问预设数据库时,获取所述预设业务程序的互斥锁池,以及所述互斥锁池对应的适配互斥锁;其中,所述互斥锁池中存储有将所述预设业务程序的指定要素进行遍历组合得到的多种互斥锁;
本实施例中,所述适配互斥锁包括所述预设业务程序的指定要素的互斥锁;或者,所述预设业务程序的要素之外的其他要素的互斥锁。
第一转换模块402,用于若所述第一线程的互斥锁位于所述互斥锁池中,则将所述第一线程的互斥锁转换为所述互斥锁池对应的适配互斥锁,并将所述第一线程的适配互斥锁插入所述预设数据库中;
判断模块403,用于当所述预设业务程序的第二线程访问所述预设数据库时,判断所述第二线程的互斥锁是否位于所述互斥锁池中;
第二转换模块404,用于在所述第二线程的互斥锁位于所述互斥锁池中时,将所述第二线程的互斥锁转换为所述互斥锁池对应的适配互斥锁;
处理模块405,用于将所述第二线程的所述适配互斥锁与所述预设数据库中已插入的所述适配互斥锁进行比较,判定所述第二线程的所述适配互斥锁与所述预设数据库中的所述适配互斥锁互斥时,所述第二线程不能访问所述预设数据库。
通过本实施例,将第一线程的互斥锁位于互斥锁池时可以将其转换为所述互斥锁池对应的适配互斥锁,并将第一线程的适配互斥锁插入预设数据库中;在第二线程访问所述预设数据库时,如果所述第二线程的互斥锁也位于所述互斥锁池中,也将其转化为所述互斥锁池对应的适配互斥锁。如此,由于第二线程的适配互斥锁与所述预设数据库中插入的适配互斥锁相同,就可以判断所述第二线程不能访问所述预设数据库。这样,即使第二线程的互斥锁与第一线程的互斥锁不相同,也可以实现避免不同操作的线程并发访问同一数据库。
进一步地,参见图8所示,在所述第一获取模块401之前该装置还可以包括:
第二获取模块404,用于当预设业务程序的第一线程访问预设数据库时,获取预设业务程序的互斥锁池,以及互斥锁池对应的适配互斥锁之前获取预设业务程序的指定要素;
设置模块405,用于将指定要素进行遍历组合,每一种组合的要素设置一个互斥锁,得到多种互斥锁;
配置模块406,用于将多种互斥锁存储在互斥锁池中。
通过本实施例,将预设业务程序的指定要素进行遍历组合,每一种组合的要素设置一个互斥锁,得到多种互斥锁,将多种互斥锁存储在互斥锁池中得到互斥锁池,可以将任何线程的要素作为指定要素,将预设业务程序的任何线程的互斥锁都存储在互斥锁池中,可以实现避免预设业务程序的任何线程并发访问同一数据库。
上述说明示出并描述了本申请的若干优选实施例,但如前所述,应当理解本申请并非局限于本文所披露的形式,不应看作是对其他实施例的排除,而可用于各种其他组合、修改和环境,并能够在本文所述发明构想范围内,通过上述教导或相关领域的技术或知识进行改动。而本领域人员所进行的改动和变化不脱离本申请的精神和范围,则都应在本申请所附权利要求的保护范围内。

Claims (10)

1.一种避免线程并发访问数据库的方法,其特征在于,所述方法包括:
当预设业务程序的第一线程和第二线程同时访问预设数据库时,获取所述预设业务程序的互斥锁池;其中,所述互斥锁池中存储有将所述预设业务程序的指定要素进行遍历组合得到的多种互斥锁;
判断所述第一线程的互斥锁和第二线程的互斥锁是否同时位于所述互斥锁池中;
若是,则判定所述第一线程和第二线程不能同时访问所述预设数据库。
2.如权利要求1所述的方法,其特征在于,当所述预设业务程序的第一线程访问所述预设数据库时,获取所述预设业务程序的互斥锁池,以及所述互斥锁池对应的适配互斥锁之前,还包括:
获取预设业务程序的指定要素;
将所述指定要素进行遍历组合,每一种组合的要素设置一个互斥锁,得到多种互斥锁;
将所述多种互斥锁存储在所述互斥锁池中。
3.一种避免线程并发访问数据库的方法,其特征在于,所述方法包括:
当预设业务程序的第一线程访问预设数据库时,获取所述预设业务程序的互斥锁池,以及所述互斥锁池对应的适配互斥锁;其中,所述互斥锁池中存储有将所述预设业务程序的指定要素进行遍历组合得到的多种互斥锁;
若所述第一线程的互斥锁位于所述互斥锁池中,则将所述第一线程的互斥锁转换为所述互斥锁池对应的适配互斥锁,并将所述第一线程的适配互斥锁插入所述预设数据库中;
当所述预设业务程序的第二线程访问所述预设数据库时,判断所述第二线程的互斥锁是否位于所述互斥锁池中;
若是,则将所述第二线程的互斥锁转换为所述互斥锁池对应的适配互斥锁,并将所述第二线程的所述适配互斥锁与所述预设数据库中已插入的所述适配互斥锁进行比较;
若判定所述第二线程的所述适配互斥锁与所述预设数据库中的所述适配互斥锁互斥,则所述第二线程不能访问所述预设数据库。
4.如权利要求3所述的方法,其特征在于,当所述预设业务程序的第一线程访问所述预设数据库时,获取所述预设业务程序的互斥锁池,以及所述互斥锁池对应的适配互斥锁之前,还包括:
获取预设业务程序的指定要素;
将所述指定要素进行遍历组合,每一种组合的要素设置一个互斥锁,得到多种互斥锁;
将所述多种互斥锁存储在所述互斥锁池中,并为所述互斥锁池配置一个所述适配互斥锁。
5.如权利要求3或4所述的方法,其特征在于,所述适配互斥锁包括所述预设业务程序的指定要素的互斥锁;
或者,所述预设业务程序的要素之外的其他要素的互斥锁。
6.一种避免线程并发访问数据库的装置,其特征在于,所述装置包括:
第一获取模块,用于当预设业务程序的第一线程和第二线程同时访问预设数据库时,获取所述预设业务程序的互斥锁池;其中,所述互斥锁池中存储有将所述预设业务程序的指定要素进行遍历组合得到的多种互斥锁;
判断模块,用于判断所述第一线程的互斥锁和第二线程的互斥锁是否同时位于所述互斥锁池中;
处理模块,用于在所述第一线程的互斥锁和第二线程的互斥锁同时位于所述互斥锁池中时,判定所述第一线程和第二线程不能同时访问所述预设数据库。
7.如权利要求6所述的装置,其特征在于,在所述第一获取模块之前,还包括:
第二获取模块,用于当预设业务程序的第一线程访问预设数据库时,获取预设业务程序的互斥锁池,以及互斥锁池对应的适配互斥锁之前获取预设业务程序的指定要素;
设置模块,用于将指定要素进行遍历组合,每一种组合的要素设置一个互斥锁,得到多种互斥锁;
配置模块,用于将多种互斥锁存储在互斥锁池中。
8.一种避免线程并发访问数据库的装置,其特征在于,所述装置包括:
第一获取模块,用于当预设业务程序的第一线程访问预设数据库时,获取所述预设业务程序的互斥锁池,以及所述互斥锁池对应的适配互斥锁;其中,所述互斥锁池中存储有将所述预设业务程序的指定要素进行遍历组合得到的多种互斥锁;
第一转换模块,用于若所述第一线程的互斥锁位于所述互斥锁池中,则将所述第一线程的互斥锁转换为所述互斥锁池对应的适配互斥锁,并将所述第一线程的适配互斥锁插入所述预设数据库中;
判断模块,用于当所述预设业务程序的第二线程访问所述预设数据库时,判断所述第二线程的互斥锁是否位于所述互斥锁池中;
第二转换模块,用于在所述第二线程的互斥锁位于所述互斥锁池中时,将所述第二线程的互斥锁转换为所述互斥锁池对应的适配互斥锁;
处理模块,用于将所述第二线程的所述适配互斥锁与所述预设数据库中已插入的所述适配互斥锁进行比较,判定所述第二线程的所述适配互斥锁与所述预设数据库中的所述适配互斥锁互斥时,所述第二线程不能访问所述预设数据库。
9.如权利要求8所述的装置,其特征在于,在所述第一获取模块之前,还包括:
第二获取模块,用于当预设业务程序的第一线程访问预设数据库时,获取预设业务程序的互斥锁池,以及互斥锁池对应的适配互斥锁之前获取预设业务程序的指定要素;
设置模块,用于将指定要素进行遍历组合,每一种组合的要素设置一个互斥锁,得到多种互斥锁;
配置模块,用于将多种互斥锁存储在互斥锁池中,并为所述互斥锁池配置一个所述适配互斥锁。
10.如权利要求8或9所述的装置,其特征在于,所述适配互斥锁包括所述预设业务程序的指定要素的互斥锁;
或者,所述预设业务程序的要素之外的其他要素的互斥锁。
CN201610171969.4A 2016-03-24 2016-03-24 一种避免线程并发访问数据库的方法和装置 Pending CN107229632A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610171969.4A CN107229632A (zh) 2016-03-24 2016-03-24 一种避免线程并发访问数据库的方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610171969.4A CN107229632A (zh) 2016-03-24 2016-03-24 一种避免线程并发访问数据库的方法和装置

Publications (1)

Publication Number Publication Date
CN107229632A true CN107229632A (zh) 2017-10-03

Family

ID=59932185

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610171969.4A Pending CN107229632A (zh) 2016-03-24 2016-03-24 一种避免线程并发访问数据库的方法和装置

Country Status (1)

Country Link
CN (1) CN107229632A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110046028A (zh) * 2018-11-30 2019-07-23 阿里巴巴集团控股有限公司 数据处理方法、装置及服务器
CN115086328A (zh) * 2022-04-30 2022-09-20 济南浪潮数据技术有限公司 一种元数据服务业务处理方法、装置、设备及介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1199632A1 (en) * 2000-10-20 2002-04-24 Sun Microsystems, Inc. Method and apparatus for resource access synchronization
US6556994B1 (en) * 1999-07-29 2003-04-29 International Business Machines Corporation Method and system for improving concurrency through early release of unnecessary locks
US20040019892A1 (en) * 2002-07-24 2004-01-29 Sandhya E. Lock management thread pools for distributed data systems
CN103207809A (zh) * 2012-01-13 2013-07-17 金蝶软件(中国)有限公司 清除互斥锁的方法及系统
CN103914565A (zh) * 2014-04-21 2014-07-09 北京搜狐新媒体信息技术有限公司 一种向数据库插入数据的方法及装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6556994B1 (en) * 1999-07-29 2003-04-29 International Business Machines Corporation Method and system for improving concurrency through early release of unnecessary locks
EP1199632A1 (en) * 2000-10-20 2002-04-24 Sun Microsystems, Inc. Method and apparatus for resource access synchronization
US20040019892A1 (en) * 2002-07-24 2004-01-29 Sandhya E. Lock management thread pools for distributed data systems
CN103207809A (zh) * 2012-01-13 2013-07-17 金蝶软件(中国)有限公司 清除互斥锁的方法及系统
CN103914565A (zh) * 2014-04-21 2014-07-09 北京搜狐新媒体信息技术有限公司 一种向数据库插入数据的方法及装置

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
PRADEEP TAPADIYA: "《COM+编程》", 30 November 2002, 中国电力出版社 *
罗斌: "《Lenix嵌入式操作系统》", 31 July 2014, 北京航空航天大学出版社 *
胡茂生: "《技术经济分析理论与方法》", 31 July 2009, 北京冶金工业出版社 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110046028A (zh) * 2018-11-30 2019-07-23 阿里巴巴集团控股有限公司 数据处理方法、装置及服务器
CN115086328A (zh) * 2022-04-30 2022-09-20 济南浪潮数据技术有限公司 一种元数据服务业务处理方法、装置、设备及介质

Similar Documents

Publication Publication Date Title
US10198467B2 (en) Policy framework user interface
Dewhurst Individuation without representation
CN107506181A (zh) 业务处理、数据处理方法、装置以及电子设备
CN111885082B (zh) 一种web应用包处理方法、装置及设备
CN107391526A (zh) 一种基于区块链的数据处理方法及设备
US20160352747A1 (en) System and method providing automatic pushdown hierarchical filters
US8176097B2 (en) Maintaining data coherency within related multi-perspective user interfaces via session-less queries
CN108345511A (zh) 一种应用数据校验方法、装置及电子设备
US20180107760A1 (en) Query suggestions using ontology partitions
Lellmann et al. Proof search in nested sequent calculi
CN108268289A (zh) web应用的参数配置方法、装置及系统
CN107229632A (zh) 一种避免线程并发访问数据库的方法和装置
CN107391535A (zh) 在文档应用中搜索文档的方法及装置
CN110019111A (zh) 数据处理方法、装置、存储介质以及处理器
US9213849B2 (en) Hierarchical access control administration preview
CN106294423A (zh) 数据库分表的写入方法及装置
CN111008524A (zh) 语言翻译的处理方法和装置
CN109145621A (zh) 文档管理方法及装置
CN106919640A (zh) 一种业务处理方法和装置
US9965533B2 (en) Reverse application programming interface (API) endpoint creation process and standardized schema
CN109582776B (zh) 模型的生成方法及装置、电子设备及存储介质
CN106294700A (zh) 一种日志的存储与读取方法及装置
CN107562703A (zh) 字典树重构方法及系统
CN106919581A (zh) 一种浏览器的防护方法及装置
CN108681554A (zh) 一种利用正则表达式的匹配方法、装置及设备

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
TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20200921

Address after: Cayman Enterprise Centre, 27 Hospital Road, George Town, Grand Cayman, British Islands

Applicant after: Innovative advanced technology Co.,Ltd.

Address before: Cayman Enterprise Centre, 27 Hospital Road, George Town, Grand Cayman, British Islands

Applicant before: Advanced innovation technology Co.,Ltd.

Effective date of registration: 20200921

Address after: Cayman Enterprise Centre, 27 Hospital Road, George Town, Grand Cayman, British Islands

Applicant after: Advanced innovation technology Co.,Ltd.

Address before: A four-storey 847 mailbox in Grand Cayman Capital Building, British Cayman Islands

Applicant before: Alibaba Group Holding Ltd.

RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20171003