CN109376165A - 内存数据库锁的实现方法和装置及计算机可读存储介质 - Google Patents
内存数据库锁的实现方法和装置及计算机可读存储介质 Download PDFInfo
- Publication number
- CN109376165A CN109376165A CN201811351483.4A CN201811351483A CN109376165A CN 109376165 A CN109376165 A CN 109376165A CN 201811351483 A CN201811351483 A CN 201811351483A CN 109376165 A CN109376165 A CN 109376165A
- Authority
- CN
- China
- Prior art keywords
- lock
- memory database
- affairs
- value
- area
- 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
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明适用于数据库技术领域,提供了内存数据库锁的实现方法、装置及计算机可读存储介质,该方法包括:接收针对内存数据库的事务处理请求;所述事务处理请求包括待处理的事务的信息;基于所述事务的信息获取所述内存数据库中的所述事务所对应的元素的锁区的值,并根据所述锁区的值确定所述元素的持有锁的状况;其中,所述元素包括索引总节点和行数据;基于所述持有锁的状况及所述事务包含的针对所述元素的操作类型,对所述元素加读锁或加写锁;基于上述方法,本发明实施例可实现内存数据库中高并发的事务处理,适合对单笔延时和整体吞吐率要求较高的内存数据库。
Description
技术领域
本发明属于数据库技术领域,尤其涉及内存数据库锁的实现方法、装置及计算机可读存储介质。
背景技术
事务是查询并可能更新内存数据库中各种数据的程序执行单元,是恢复和并发控制的基本单位。在处理并发事务时,常采用基于锁的并发控制技术,在基于锁的管理机制中,根据锁的粒度不同,锁分为行锁、表锁和数据库级别锁等。
目前,对内存数据库加行锁,在处理并发事务时实现复杂,不能满足对延时性能有苛刻要求的应用领域。而对内存数据库加数据库级别锁或表锁,虽然在处理并发事务时,实现较为简单,但是在并发度上不高,系统的吞吐率不高。
因此,急迫需要开发实现简单、并发度高的内存数据库的锁系统。
发明内容
有鉴于此,本发明实施例提供了内存数据库锁的实现方法和装置及计算机可读存储介质,以解决现有技术中内存数据库在处理并发事务时,并发度不高,系统的吞吐率不高的问题。
本发明实施例的第一方面提供了内存数据库锁的实现方法,包括:接收针对内存数据库的事务处理请求;所述事务处理请求包括待处理的事务的信息;
基于所述事务的信息获取所述内存数据库中的所述事务所对应的元素的锁区的值,并根据所述锁区的值确定所述元素的持有锁的状况;其中,所述元素包括索引总节点和行数据;
基于所述持有锁的状况及所述事务包含的针对所述元素的操作类型,对所述元素加读锁或加写锁。
本发明实施例的第二方面提供了内存数据库锁的实现装置,包括:
接收事务单元,用于接收针对内存数据库的事务处理请求;所述事务处理请求包括待处理的事务的信息;
持有锁确定单元,用于基于所述事务的信息获取所述内存数据库中的所述事务所对应的元素的锁区的值,并根据所述锁区的值确定所述元素的持有锁的状况;其中,所述元素包括索引总节点和行数据;
加锁单元,用于基于所述持有锁的状况及所述事务包含的针对所述元素的操作类型,对所述元素加读锁或加写锁。
本发明实施例的第三方面提供了内存数据库锁的实现装置,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现内存数据库锁的实现方法的步骤。
本发明实施例的第四方面提供了计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述内存数据库锁的实现方法的步骤。
本发明实施例与现有技术相比存在的有益效果是:本发明实施例通过设置锁区记录元素持有锁的状况;对事务对应的元素加锁、解锁,可实现内存数据库中高并发的事务处理,单笔延时低、整体吞吐率高。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明提供的内存数据库锁的实现方法第一实施例的流程示意图;
图2是本发明提供的内存数据库锁的实现方法第二实施例的流程示意图;
图3是本发明提供的内存数据库锁的实现方法第三实施例的流程示意图;
图4是本发明提供的内存数据库锁的实现方法第四实施例的流程示意图;
图5是本发明提供的内存数据库锁的实现方法第五实施例流程示意图;
图6是本发明提供的内存数据库锁的实现装置的第一实施例的结构示意图;
图7是本发明提供的内存数据库锁的实现装置的第二实施例的结构示意图;
图8是本发明提供的内存数据库锁的实现装置的第三实施例的结构示意图;
图9是本发明提供的内存数据库锁的实现装置的第四实施例的结构示意图;
图10是本发明提供的一种内存数据库锁的实现装置的结构示意图。
具体实施方式
以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本发明实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本发明。在其它情况中,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本发明的描述。
为了说明本发明所述的技术方案,下面通过具体实施例来进行说明。
本发明实施例公开了内存数据库锁的实现方法、装置和计算机可读介质。请参阅图1,图1示出了本发明第一实施例提供的内存数据库锁的实现方法的流程示意图,内存数据库锁的实现方法的执行主体是服务器,具体的:
S101,接收针对内存数据库的事务处理请求;所述事务处理请求包括待处理的事务的信息;
在本实施例中,内存数据库的载体为服务器,事务处理请求可以由客户端直接发送指令到内存数据库中执行;也可以是通过服务器触发事务处理请求,服务器根据该指令生成并执行相应的内存数据库事务。事务处理请求可以是针对内存数据库中的数据进行数据查询或数据更新的操作。数据更新为数据增加、数据删除或数据修改等插入性的操作。
例如,假设在一个股票交易市场中,王先生做出了将账户A中的股票卖出100股B公司股票的操作,则该股票交易市场对应的内存数据库接收到了“将账户A中的股票卖出100股B公司股票”的指令,该指令对应的内存数据库的事务为“将账户A中的B公司股票减少100股”。服务器根据该指令生成并执行内存数据库中的事务。
S102,基于所述事务的信息获取所述内存数据库中的所述事务所对应的元素的锁区的值,并根据所述锁区的值确定所述元素的持有锁的状况。
在本实施例中,在内存数据库中设置锁区,锁区是内存数据库中的一段内存,锁区是用于记录元素持有锁的状况,元素的持有锁的状况包括元素持有读锁、持有写锁或未持有锁。
元素包括索引总节点和行数据;索引可以是哈希(Hash)索引,T树(T-Tree)索引或多路搜索树(B-Tree)索引等;索引在内存数据库中设置索引总节点,通过索引总节点,对索引进行访问、处理。
事务和该事务所对应的元素的锁区,预设对应关系;在S101接收针对内存数据库的事务处理请求后,基于该事务和该事务所对应的元素的锁区的预设对应关系,确定该事务所对应的元素的锁区的值,进一步判断该元素持有锁的状况。
S103,基于所述持有锁的状况及所述事务包含的针对所述元素的操作类型,对所述元素加读锁或加写锁。
为了保证内存数据库中数据的一致性,通过步骤S102确定元素持有锁的状况,将元素加读锁或加写锁;
在对元素加读锁或加写锁的过程中,可以结合操作系统提供的原子操作函数,通过自旋锁方式完成加读锁或加写锁的操作,也可以通过操作系统提供的信号量方式实现,加锁简单快捷。通过自旋锁方式加读锁或加写锁,不需进行进程/线程间的上下文切换,加锁效率更高。
操作系统可以是Windows操作系统、Linux操作系统,但不限于上述操作系统。操作系统提供的原子操作函数可以是Windows操作系统下的Windows应用程序接口(Application Programming Interface,API)函数(例如InterlockedExchangeAdd,InterlockedCompareExchange,InterlockedExchange或_InterlockedAdd等)。
通过自旋锁加读锁的一种实现方式为:
基于事务和该事务所对应的元素的锁区的预设对应关系,获取内存数据库中的该事务所对应的元素的锁区的值,确定该元素未持有锁,调用原子操作函数对元素加读锁;
通过自旋锁加读锁的另一种实现方式为:
基于第一事务和该第一事务所对应的元素的锁区的预设对应关系,获取内存数据库中的第一事务所对应的元素的锁区的值,确定该元素已持有读锁,调用原子操作函数对元素加读锁;该元素已持有读锁,说明已有至少一个事务处理请求,如第二事务、第三事务等;在接收针对内存数据库的第一事务处理请求时,对该元素继续加读锁,实现第一事务和第二事务、第三事务等并发事务的控制,内存数据库的并发度高、吞吐率高,加锁过程简单快速。第一事务和第二事务、第三事务均为数据查询操作。
通过自旋锁加写锁的一种实现方式为:
基于该事务和该事务所对应的元素的锁区的预设对应关系,获取内存数据库中的该事务所对应的元素的锁区的值,确定该元素未持有锁,调用原子操作函数对元素第一次加写锁,加写锁失败,加锁时间未超时,释放中央处理单元(Central Processing Unit,CPU),调用原子操作函数对该元素第二次加写锁,获取内存数据库中的该事务所对应的元素的锁区的值,若确定该元素持有写锁,加写锁成功;若确定该元素未持有锁,加写锁失败,加锁时间超时,加写锁失败。
本发明实施例通过锁区记录元素持有锁的状况;对事务对应的元素加锁,可实现内存数据库中高并发的事务处理,单笔延时低、整体吞吐率高,且保证内存数据库中数据的一致性。
请参阅图2,图2示出了本发明第二实施例提供的内存数据库锁的实现方法的流程示意图。基于图1实施例,本实施例提供的内存数据库锁的实现方法中,S102包括S1021~S1022;
S1021,根据所述事务的信息获取所述内存数据库中所述事务所对应的元素的元素ID,并根据所述元素ID获取所述元素的锁区的值;
元素为内存数据库中的一段内存,通过元素ID获得元素在内存中起始地址,可以访问内存数据库中的元素和元素对应的锁区。
S1022,分析所述锁区的最低一个比特位的值,确定所述元素的持有锁的状况;
对锁区的最低一个比特位的值作出约定,最低一个比特位的值和元素的持有锁的状况相关联,分析最低一个比特位的值,可判断元素的持有锁的状况。锁区的最低一个比特位的值约定情况为:
若锁区的最低一个比特位的值为1,则确定该元素持有写锁;
若锁区的值的最低一个比特位的值为2,则确定该元素持有读锁;
若锁区的值的最低一个比特位的值为0,则确定该元素没有持有读锁或写锁。
请参阅图3,图3示出了本发明第三实施例提供的内存数据库锁的实现方法的流程示意图。基于图1实施例,本实施例提供的内存数据库锁的实现方法中,S103包括S1031~S1032,具体的:
S1031,当所述元素被所述事务的第一线程对应的操作类型加读锁时,若所述事务的第二线程包含与读相关的操作类型,则对所述元素加读锁;
事务的第一线程对应的操作类型为数据查询,对元素加读锁;第二线程为数据查询,可对该元素加读锁,执行数据查询操作。事务的多个线程可以同时进行数据查询操作,实现事务的多线程并发控制,并保证内存数据库的数据的一致性。
S1032,当所述元素被所述事务的第一线程对应的操作类型加写锁时,所述事务的第二线程不对所述元素加写锁或加读锁,直到所述元素被第一线程解锁;
事务的第一线程对应的操作类型为数据更新,对元素加写锁;第二线程为数据查询,元素被第一线程解锁后,可对元素加读锁,执行数据查询操作。
事务的第一线程对应的操作类型为数据更新,对元素加写锁;第二线程为数据更新,元素被第一线程解锁后,可对元素加写锁,执行数据更新操作。数据更新,只允许一个数据更新操作进行,保证内存数据库中的数据的一致性。
请参阅图4,图4示出了本发明第四实施例提供的内存数据库锁的实现方法的流程示意图。本实施例与图1~图3对应的实施例的区别在于,步骤S101之前还包括S201,S202~S204与上述实施例的S101~S103相同。S201具体的:
S201,在内存数据库的每个元素前加锁区;
每个元素前加锁区,锁区记录该元素的持有锁状况;行数据和索引都有元素id,通过元素id可直接得到元素在内存中的起始地址,从而可访问内存数据库中的所有元素和每个元素对应的锁区,完成元素的加锁,解锁处理。元素包括索引总结点和行数据。索引总节点(即表示该索引的一个内存结构),通过该节点,即可按照用户要求,通过对索引的访问、处理达到对索引增、删、改、查的目的。
请参阅图5,图5示出了本发明第五实施例提供的内存数据库锁的实现方法的流程示意图。本实施例与图1~图3对应的实施例的区别在于,步骤S103之后还包括S504~S505,S501~S503与上述实施例的S101~S103相同。具体的:
S504,接收结束所述事务的指令;
S505,通过事务管理器所记录的所述元素的加锁信息,解除所述元素对应的锁。
事务管理器通过记录事务所对应的元素的持有锁的状况,对事务进行锁管理,从而满足事务的ACID特性,所述ACID为内存数据库中事务正确执行的四个基本要素,包含:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)。事务管理器同时对数据查询或数据更新操作进行记录,在内存数据库遇到突发情况,导致断电或内存数据库异常时,事务管理器可保证内存数据库中的数据的一致性。
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
本发明实施例中,还提供了内存数据库锁的实现装置,内存数据库锁的实现装置包括的各单元用于执行图1对应的实施例中的各步骤。具体请参阅图1对应的实施例中的相关描述。
图6是本发明提供的内存数据库锁的实现装置的第一实施例的结构示意图。如图6所示,该实施例的内存数据库锁的实现装置2包括:
接收事务单元21,用于接收针对内存数据库的事务处理请求;该事务处理请求包括待处理的事务的信息;
持有锁确定单元22,用于基于该事务的信息获取内存数据库中的事务所对应的元素的锁区的值,并根据锁区的值确定元素的持有锁的状况;其中,元素包括索引总节点和行数据;
加锁单元23,基于持有锁的状况及事务包含的针对所述元素的操作类型,对元素加读锁或加写锁。
图7是本发明提供的内存数据库锁的实现装置的第二实施例的结构示意图。基于图6,内存数据库锁的实现装置还包括:
锁区单元20,用于在内存数据库的每个元素前增加锁区。
图8是本发明提供的内存数据库锁的实现装置的第三实施例的结构示意图。基于图6,其中加锁单元23包括加读锁单元231和加写锁单元232;
加读锁单元,用于当所述元素被所述事务的第一线程对应的操作类型加读锁时,若所述事务的第二线程包含与读相关的操作类型,则对所述元素加读锁;
加写锁单元,用于当所述元素被所述事务的第一线程对应的操作类型加写锁时,若所述事务的第二线程不对所述元素加写锁或读锁,直到所述元素被第一线程解锁。
图9是本发明提供的内存数据库锁的实现装置的第四实施例的结构示意图。基于图6,内存数据库锁的实现装置还包括:
结束事务单元24,用于接收结束所述事务的指令;
解锁单元25,用于通过事务管理器所记录的元素的加锁信息,解除元素对应的锁。
图10是本发明一实施例提供的内存数据库锁的实现装置的示意图。如图10所示,内存数据库锁的实现装置6可以是桌上型计算机、笔记本、掌上电脑及云端服务器等设备。该内存数据库锁的实现装置6包括:处理器60、存储器61以及存储在所述存储器61中并可在所述处理器60上运行的计算机程序62,例如内存数据库锁的实现程序。所述处理器60执行所述计算机程序62时实现上述各个内存数据库锁的实现方法实施例中的步骤,例如图1所示的步骤S101至S103。或者,所述处理器60执行所述计算机程序62时实现上述各装置实施例中各模块/单元的功能,例如图6所示模块21至23的功能。
示例性的,所述计算机程序62可以被分割成一个或多个模块/单元,所述一个或者多个模块/单元被存储在所述存储器61中,并由所述处理器60执行,以完成本发明。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序62在所述内存数据库锁的实现装置6中的执行过程。例如,所述计算机程序62可以被分割成接收事务单元、锁区单元、加锁单元,各单元具体功能如下:
接收事务单元,用于接收针对内存数据库的事务处理请求;事务处理请求包括待处理的事务的信息;
锁区单元,用于基于事务的信息获取内存数据库中的事务所对应的元素的锁区的值,并根据锁区的值确定元素的持有锁的状况;其中,元素包括索引总节点和行数据;
加锁单元,用于基于持有锁的状况及事务包含的针对元素的操作类型,对元素加读锁或加写锁。
所述内存数据库锁的实现装置6可包括,但不仅限于,处理器60、存储器61。本领域技术人员可以理解,图6仅仅是所述内存数据库锁的实现装置6的示例,并不构成对所述内存数据库锁的实现装置6的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述内存数据库锁的实现装置6还可以包括输入输出设备、网络接入设备、总线等。
所称处理器60可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
所述存储器61可以是所述内存数据库锁的实现装置6的内部存储单元,例如所述内存数据库锁的实现装置6的硬盘或内存。所述存储器61也可以是所述所述内存数据库锁的实现装置6的外部存储设备,例如所述终端设备上配备的插接式硬盘,智能存储卡(SmartMedia Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。进一步地,所述存储器61还可以既包括所述内存数据库锁的实现装置6的内部存储单元也包括外部存储设备。所述存储器61用于存储所述计算机程序以及所述终端设备所需的其他程序和数据。所述存储器61还可以用于暂时地存储已经输出或者将要输出的数据。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。上述系统中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
在本发明所提供的实施例中,应该理解到,所揭露的装置/终端设备和方法,可以通过其它的方式实现。例如,以上所描述的装置/终端设备实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
以上所述实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围,均应包含在本发明的保护范围之内。
Claims (10)
1.内存数据库锁的实现方法,其特征在于,包括:
接收针对内存数据库的事务处理请求;所述事务处理请求包括待处理的事务的信息;
基于所述事务的信息获取所述内存数据库中的所述事务所对应的元素的锁区的值,并根据所述锁区的值确定所述元素的持有锁的状况;其中,所述元素包括索引总节点和行数据;
基于所述持有锁的状况及所述事务包含的针对所述元素的操作类型,对所述元素加读锁或加写锁。
2.根据权利要求1所述的内存数据库锁的实现方法,其特征在于,所述接收针对内存数据库的事务处理请求之前,还包括:
在所述内存数据库的每个元素前增加锁区。
3.根据权利要求1所述的内存数据库锁的实现方法,其特征在于,所述基于所述事务的信息获取所述内存数据库中的所述事务所对应的元素的锁区的值,并根据所述锁区的值确定所述元素的持有锁的状况,包括:
根据所述事务的信息获取所述内存数据库中的所述事务所对应的元素的元素ID,并根据所述元素ID获取所述元素的锁区的值;
分析所述锁区的最低一个比特位的值,确定所述元素的持有锁的状况;
其中,若所述锁区的最低一个比特位的值为1,则确定所述元素持有写锁;
若所述锁区的值的最低一个比特位的值为2,则确定所述元素持有读锁;
若所述锁区的值的最低一个比特位的值为0,则确定所述元素没有持有读锁或写锁。
4.根据权利要求1所述的内存数据库锁的实现方法,其特征在于,所述基于所述持有锁的状况及所述事务包含的针对所述元素的操作类型,对所述元素加读锁或加写锁,包括:
当所述元素被所述事务的第一线程对应的操作类型加读锁时,若所述事务的第二线程包含与读相关的操作类型,则对所述元素加读锁;
当所述元素被所述事务的第一线程对应的操作类型加写锁时,所述事务的第二线程不对所述元素加写锁或加读锁,直到所述元素被所述第一线程解锁。
5.根据权利要求1所述的内存数据库锁的实现方法,其特征在于,所述基于所述持有锁的状况及所述事务包含的针对所述元素的操作类型,对所述元素加读锁或加写锁之后,还包括:
接收结束所述事务的指令;
通过事务管理器所记录的所述元素的加锁信息,解除所述元素对应的锁。
6.内存数据库锁的实现装置,其特征在于,包括:
接收事务单元,用于接收针对内存数据库的事务处理请求;所述事务处理请求包括待处理的事务的信息;
持有锁确定单元,用于基于所述事务的信息获取所述内存数据库中的所述事务所对应的元素的锁区的值,并根据所述锁区的值确定所述元素的持有锁的状况;其中,所述元素包括索引总节点和行数据;
加锁单元,用于基于所述持有锁的状况及所述事务包含的针对所述元素的操作类型,对所述元素加读锁或加写锁。
7.根据权利要求6所述的内存数据库锁的实现装置,其特征在于,还包括:锁区单元,用于在所述内存数据库的每个元素前增加锁区。
8.根据权利要求6所述的内存数据库锁的实现装置,其特征在于,还包括:
结束事务单元,用于接收结束所述事务的指令;
解锁单元,用于通过事务管理器所记录的所述元素的加锁信息,解除所述元素对应的锁。
9.内存数据库锁的实现装置,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至5任一项所述方法的步骤。
10.计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至5任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811351483.4A CN109376165A (zh) | 2018-11-14 | 2018-11-14 | 内存数据库锁的实现方法和装置及计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811351483.4A CN109376165A (zh) | 2018-11-14 | 2018-11-14 | 内存数据库锁的实现方法和装置及计算机可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109376165A true CN109376165A (zh) | 2019-02-22 |
Family
ID=65384592
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811351483.4A Pending CN109376165A (zh) | 2018-11-14 | 2018-11-14 | 内存数据库锁的实现方法和装置及计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109376165A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110413628A (zh) * | 2019-08-02 | 2019-11-05 | 北京字节跳动网络技术有限公司 | 数据处理方法、装置、设备及存储介质 |
CN112632031A (zh) * | 2020-12-08 | 2021-04-09 | 北京思特奇信息技术股份有限公司 | 分布式内存数据库长连接使用的实现方法及系统、电子设备、存储介质 |
CN114679465A (zh) * | 2022-03-28 | 2022-06-28 | 北京火山引擎科技有限公司 | 资源操作方法、装置、电子设备及存储介质 |
CN115543970A (zh) * | 2022-11-29 | 2022-12-30 | 本原数据(北京)信息技术有限公司 | 数据页处理方法、数据页处理装置、电子设备及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1740978A (zh) * | 2004-08-23 | 2006-03-01 | 华为技术有限公司 | 实现共享内存数据库的方法及内存数据库系统 |
CN1808389A (zh) * | 2006-02-20 | 2006-07-26 | 南京联创科技股份有限公司 | 帐务后台内存数据库中共享内存的自治锁方法 |
CN101615203A (zh) * | 2009-07-23 | 2009-12-30 | 中兴通讯股份有限公司 | 并发控制方法及装置 |
CN103336789A (zh) * | 2013-06-06 | 2013-10-02 | 华为技术有限公司 | 一种数据库系统的锁操作方法及设备 |
-
2018
- 2018-11-14 CN CN201811351483.4A patent/CN109376165A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1740978A (zh) * | 2004-08-23 | 2006-03-01 | 华为技术有限公司 | 实现共享内存数据库的方法及内存数据库系统 |
CN100353325C (zh) * | 2004-08-23 | 2007-12-05 | 华为技术有限公司 | 实现共享内存数据库的方法及内存数据库系统 |
CN1808389A (zh) * | 2006-02-20 | 2006-07-26 | 南京联创科技股份有限公司 | 帐务后台内存数据库中共享内存的自治锁方法 |
CN101615203A (zh) * | 2009-07-23 | 2009-12-30 | 中兴通讯股份有限公司 | 并发控制方法及装置 |
CN103336789A (zh) * | 2013-06-06 | 2013-10-02 | 华为技术有限公司 | 一种数据库系统的锁操作方法及设备 |
Non-Patent Citations (1)
Title |
---|
VENICE: "oracle ITL(事务槽)的理解", 《CSDN博客》 * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110413628A (zh) * | 2019-08-02 | 2019-11-05 | 北京字节跳动网络技术有限公司 | 数据处理方法、装置、设备及存储介质 |
CN112632031A (zh) * | 2020-12-08 | 2021-04-09 | 北京思特奇信息技术股份有限公司 | 分布式内存数据库长连接使用的实现方法及系统、电子设备、存储介质 |
CN114679465A (zh) * | 2022-03-28 | 2022-06-28 | 北京火山引擎科技有限公司 | 资源操作方法、装置、电子设备及存储介质 |
CN115543970A (zh) * | 2022-11-29 | 2022-12-30 | 本原数据(北京)信息技术有限公司 | 数据页处理方法、数据页处理装置、电子设备及存储介质 |
CN115543970B (zh) * | 2022-11-29 | 2023-03-03 | 本原数据(北京)信息技术有限公司 | 数据页处理方法、数据页处理装置、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109376165A (zh) | 内存数据库锁的实现方法和装置及计算机可读存储介质 | |
CN109101528A (zh) | 数据处理方法、数据处理装置及电子设备 | |
CN107113341B (zh) | 用于数据划分的分布式关系数据库管理系统中事务的高吞吐量处理的系统 | |
EP2797014B1 (en) | Database update execution according to power management schemes | |
US20160283331A1 (en) | Pooling work across multiple transactions for reducing contention in operational analytics systems | |
US8438144B2 (en) | Transactionally consistent database replay in an environment with connection pooling | |
US9411533B2 (en) | Snapshots and versioning of transactional storage class memory | |
CN107665255B (zh) | 键值数据库数据变更的方法、装置、设备及存储介质 | |
CN103544153A (zh) | 一种基于数据库的数据更新方法和系统 | |
CN112867999B (zh) | 基于版本的表锁定 | |
CN110490724A (zh) | 账户数据的存储方法和装置 | |
CN113076304A (zh) | 一种分布式版本管理方法、装置和系统 | |
US9473565B2 (en) | Data transmission for transaction processing in a networked environment | |
CN109298888B (zh) | 队列的数据存取方法及装置 | |
CN113010325B (zh) | 一种读写锁的实现方法、装置及电子设备 | |
CN112000670B (zh) | 一种多线程程序数据统一管理方法、系统及电子设备 | |
CN111984379B (zh) | 读写事务控制方法、系统、终端设备及存储介质 | |
CN107391539B (zh) | 事务处理方法、服务器和存储介质 | |
CN109446258A (zh) | 一种分布式数据存储方法及系统 | |
US10447607B2 (en) | System and method for dequeue optimization using conditional iteration | |
US8229946B1 (en) | Business rules application parallel processing system | |
US9652766B1 (en) | Managing data stored in memory locations having size limitations | |
CN106775450B (zh) | 一种混合存储系统中的数据分布方法 | |
CN107291371B (zh) | 一种读写锁的实现方法及装置 | |
CN109977104A (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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190222 |