CN109388645B - 指令执行方法、指令执行装置及存储介质 - Google Patents
指令执行方法、指令执行装置及存储介质 Download PDFInfo
- Publication number
- CN109388645B CN109388645B CN201710683828.5A CN201710683828A CN109388645B CN 109388645 B CN109388645 B CN 109388645B CN 201710683828 A CN201710683828 A CN 201710683828A CN 109388645 B CN109388645 B CN 109388645B
- Authority
- CN
- China
- Prior art keywords
- data operation
- instruction
- data
- information
- operation object
- 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
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种指令执行方法,其包括:接收数据操作指令,并获取数据操作指令对应的数据操作对象;判断数据操作对象的信息是否设置在预设的场景锁注册表中;如数据操作对象的信息设置在场景锁注册表中,则将数据操作指令设置到等待队列;如数据操作对象的信息未设置在场景锁注册表中,则将数据操作对象的信息设置到场景锁注册表中,以创建对应的场景锁;并执行数据操作指令;返回数据操作指令的执行结果;并在场景锁注册表中删除对应的数据操作对象的信息。本发明还提供一种指令执行装置及存储介质,本发明提高了对应数据库系统的内存资源的有效使用率,并提高了数据操作指令的处理效率。
Description
技术领域
本发明涉及数据处理领域,特别是涉及一种指令执行方法、指令执行装置及存储介质。
背景技术
现在的数据库系统,如PostgreSQL、MySQL、Oracle等主流数据库系统,对于SQL处理操作,如数据更新操作等,都支持使用封锁并发访问控制机制来消除多个数据处理指令并发操作带来的数据不一致的问题。即现有的多数数据库系统均使用封锁机制中的行级锁对指定的数据项进行锁定,以避免数据不一致的问题。
如对上述数据更新操作使用行级锁的封锁机制,即数据库系统需要在每个被操作的数据项上记载所请求的行级锁、已施加的行级锁、等待施加的行级锁及其属主等信息;还需要在一个会话中记录本会话的事务中所有的行级锁信息,以便对行级锁进行查找。当数据更新指令的并发数量很高时,上述信息需要耗费大量内存资源。
在数据更新指令的并发数量很高时,数据库系统内会生成的大量的行级锁,而后续的行级锁生成操作,数据库系统需要遍历所有的已施加的行级锁,以查看是否存在同样的行级锁,存在则停止加锁操作。同时数据库系统还需要确定该行级锁的加锁操作,是否会导致与之前施加的行级锁形成操作环,即需要耗费资源进行死锁检测。因此在数据更新指令并发数量较大时,数据库系统的内存资源消耗会非常大、CPU消耗会显著增加,导致数据处理指令的处理效率降低。
发明内容
本发明实施例提供一种提高对应数据库系统的内存资源的有效使用率,且提高数据操作指令的处理效率的指令执行方法、指令执行装置及存储介质;以解决现有的指令执行方法以及指令执行装置对应的数据库系统的内存资源的有效使用率较低,且数据操作指令的处理效率较为低下的技术问题。
本发明实施例提供一种指令执行方法,其包括:
接收数据操作指令,并获取所述数据操作指令对应的数据操作对象;
判断所述数据操作对象的信息是否设置在预设的场景锁注册表中;
如所述数据操作对象的信息设置在所述场景锁注册表中,则将所述数据操作指令设置到等待队列;
如所述数据操作对象的信息未设置在所述场景锁注册表中,则将所述数据操作对象的信息设置到场景锁注册表中,以创建对应的场景锁;并执行所述数据操作指令;以及
返回所述数据操作指令的执行结果;并在所述场景锁注册表中删除对应的数据操作对象的信息。
本发明实施例还提供一种指令执行装置,其包括:
数据操作对象获取模块,用于接收数据操作指令,并获取所述数据操作指令对应的数据操作对象;
判断模块,用于判断所述数据操作对象的信息是否设置在预设的场景锁注册表中;
第一设置模块,用于如所述数据操作对象的信息设置在所述场景锁注册表中,则将所述数据操作指令设置到等待队列;
第二设置模块,用于如所述数据操作对象的信息未设置在所述场景锁注册表中,则将所述数据操作对象的信息设置到场景锁注册表中,以创建对应的场景锁;
指令执行模块,用于执行所述数据操作指令;以及
设置删除模块,用于返回所述数据操作指令的执行结果;并在所述场景锁注册表中删除对应的数据操作对象的信息。
在本发明所述的指令执行装置中,所述数据操作对象为元组对象、表对象、视图对象、指令对象、以及数据库参数及事件对象中至少一个。
在本发明所述的指令执行装置中,所述场景锁注册表为具有数据操作对象的优先级顺序的位图表或数组表,或不具有数据操作对象的优先级顺序的哈希表。
本发明实施例还提供一种存储介质,其内存储有处理器可执行指令,该处理器通过执行上述指令提供上述的指令执行方法。
相较于现有技术,本发明的命令执行方法、命令执行装置及存储介质通过设置场景锁注册表对数据操作指令进行执行控制,减少了数据操作命令并发操作的数量,从而提高了对应数据库系统的内存资源的有效使用率,并提高了数据操作指令的处理效率;解决了现有的指令执行方法以及指令执行装置对应的数据库系统的内存资源的有效使用率较低、CPU消耗过度,且数据操作指令的处理效率较为低下的技术问题。
附图说明
图1为本发明的指令执行方法的第一实施例的流程图;
图2为本发明的指令执行方法的第二实施例的流程图;
图3为本发明的指令执行方法的第二实施例的步骤S203的流程图;
图4为本发明的指令执行装置的第一实施例的结构示意图;
图5为本发明的指令执行装置的第二实施例的结构示意图;
图6为本发明的指令执行装置的第二实施例的判断模块的结构示意图;
图7为本发明的指令执行方法以及指令执行装置的具体实施例的指令执行流程图;
图8为本发明的指令执行装置所在的电子设备的工作环境结构示意图。
具体实施方式
请参照图式,其中相同的组件符号代表相同的组件,本发明的原理是以实施在一适当的运算环境中来举例说明。以下的说明是基于所例示的本发明具体实施例,其不应被视为限制本发明未在此详述的其它具体实施例。
在以下的说明中,本发明的具体实施例将参考由一部或多部计算机所执行之作业的步骤及符号来说明,除非另有述明。因此,其将可了解到这些步骤及操作,其中有数次提到为由计算机执行,包括了由代表了以一结构化型式中的数据之电子信号的计算机处理单元所操纵。此操纵转换该数据或将其维持在该计算机之内存系统中的位置处,其可重新配置或另外以本领域技术人员所熟知的方式来改变该计算机之运作。该数据所维持的数据结构为该内存之实体位置,其具有由该数据格式所定义的特定特性。但是,本发明原理以上述文字来说明,其并不代表为一种限制,本领域技术人员将可了解到以下所述的多种步骤及操作亦可实施在硬件当中。
本发明的指令执行方法及指令执行装置可设置在任何的电子设备中,用于接收数据操作指令,并对数据操作指令进行执行控制。该电子设备包括但不限于可穿戴设备、头戴设备、医疗健康平台、个人计算机、服务器计算机、手持式或膝上型设备、移动设备(比如移动电话、个人数字助理(PDA)、媒体播放器等等)、多处理器系统、消费型电子设备、小型计算机、大型计算机、包括上述任意系统或设备的分布式计算环境,等等。该电子设备优选为具有数据库的服务器计算机。本发明的指令执行方法及指令执行装置通过设置场景锁注册表对数据操作指令进行控制,减少了数据操作指令并发操作的数量,从而提高了对应数据库系统的内存资源的有效使用率,并提高了数据操作指令的处理效率;因此可有效的解决现有的指令执行方法以及指令执行装置对应的数据库系统的内存资源的有效使用率较低,且数据操作指令的处理效率较为低下的技术问题。
请参照图1,图1为本发明的指令执行方法的第一实施例的流程图。本实施例的指令执行方法可使用上述的电子设备进行实施,本实施例的指令执行方法包括:
步骤S101,接收数据操作指令,并获取数据操作指令对应的数据操作对象;
步骤S102,判断数据操作对象的信息是否设置在预设的场景锁注册表中,如数据操作对象的信息设置在预设的场景锁注册表中,则转到步骤S103;如数据操作对象的信息未设置在预设的场景锁注册表中,则转到步骤S104;
步骤S103,将数据操作指令设置到等待队列;
步骤S104,将数据操作对象的信息设置到场景锁注册表中,以创建对应的场景锁;并执行数据操作指令;
步骤S105,返回数据操作指令的执行结果;并在场景锁注册表中删除对应的数据操作对象的信息。
下面详细说明本优选实施例的指令执行方法的各步骤的具体流程。
在步骤S101中,设置在数据库系统中的指令执行装置接收用户的数据操作指令。这里的数据操作指令是指对数据库系统中的数据操作对象进行更新、查询等操作的指令(如SQL操作指令等)。这里的数据操作对象可为元组对象、表对象、视图对象、指令对象以及数据库参数及事件对象中的至少一个或多个。
其中元组对象是指数据库系统中的具体数据,如数据库系统中记录的活动商品的商品数量等。
表对象是指数据库系统中用于存储数据的数据结构,如可通过使用DDL(DataDefinition Language,数据库定义语言)对表对象进行变更。
位图对象也是数据库系统中用于存储数据的另一种数据结构。
指令对象是指用于对数据库系统中的存储数据进行数据处理的指令,如SQL(结构化查询语言(Structured Query Language)指令等。
数据库参数及事件对象是指数据库系统自身的固有参数,如数据库系统的数据缓冲区大小、数据库系统对某个功能(如死锁检测功能)的禁止以及启动等。
随后指令执行装置根据接收的数据操作指令获取对应的数据操作对象。随后转到步骤S102。
在步骤S102中,指令执行装置获取预设的场景锁注册表,这里的场景锁注册表是指用于记录正在进行指令操作的数据操作对象对应的场景锁信息的注册表。该场景锁注册表可为位图表、数组表或哈希表等。
随后指令执行装置判断步骤S101获取的数据操作对象的信息是否已经设置在预设的场景锁注册表中。如数据操作对象的信息已经设置在场景锁注册表中,则转到步骤S103;如数据操作对象的信息未设置在场景锁注册表中,则转到步骤S104。
在步骤S103中,由于数据操作对象的信息已经设置在场景锁注册表中,则说明该数据操作对象正在进行指令操作,因此指令执行装置将该数据操作指令设置到等待队列中。
在步骤S104中,如数据操作对象的信息未设置在场景锁注册表中,则说明可根据该数据操作指令对该数据操作对象进行指令操作。为了避免其他数据操作指令对该指令操作的影响,这里指令执行装置将数据操作对象的信息设置到场景锁注册表中,以创建对应的场景锁;使得指令执行装置接收到其他相关数据操作指令时,可以查找到该场景锁,避免多个数据操作指令对同一数据操作对象同时进行指令操作。
随后指令执行装置执行步骤S101接收的数据操作指令。如该数据操作指令为数据更新指令,则具体的,指令执行装置可获取数据更新指令对应的数据操作对象;随后指令执行装置对数据操作对象增加行级锁,以避免对同一数据操作对象的并发操作;然后指令执行装置根据数据更新指令,对数据操作对象进行更新操作;最后指令执行装置返回更新操作的执行结果。
由于执行数据更新指令之前场景锁的设置,可有效的减少数据操作指令并发操作带来的负面影响。例如,UPDATE命令在对使用封锁并发访问控制技术的数据库系统中,大量的并发使得行级锁被创建,而且触发死锁检测操作,而行级锁多致使死锁检测的量急剧增加,从而降低数据库系统运行的效率,此时,适当限制并发,能够有效减少死锁检测对系统资源的消耗,提高了数据库系统在执行SQL操作指令时CPU、内存资源的有效使用率以及数据操作指令的处理效率。随后转到步骤S105。
在步骤S105中,指令执行装置返回步骤S104的数据操作指令对应的指令操作的执行结果,同时在场景锁注册表中删除对应的数据操作对象的信息,以便其他数据操作指令继续通过场景锁对该数据操作对象进行指令操作。
这样即完成了本实施例的指令执行方法的数据库数据的数据操作指令的执行过程。
本实施例的指令执行方法通过设置场景锁注册表对数据操作指令进行执行控制,避免了无效的并发操作的数量,从而提高了对应数据库系统的内存资源的有效使用率,并提高了数据操作指令的处理效率。
请参照图2,图2为本发明的指令执行方法的第二实施例的流程图。本实施例的指令执行方法可使用上述的电子设备进行实施,本实施例的指令执行方法包括:
步骤S201,创建用于记录数据操作对象的信息的场景锁注册表;
步骤S202,接收外部的数据操作指令或从等待队列中读取数据操作指令,并获取数据操作指令对应的数据操作对象;
步骤S203,判断数据操作对象的信息是否设置在预设的场景锁注册表中,如数据操作对象的信息设置在预设的场景锁注册表中,则转到步骤S204;如数据操作对象的信息未设置在预设的场景锁注册表中,则转到步骤S205;
步骤S204,将数据操作指令设置到等待队列;
步骤S205,按预设的数据操作对象的优先级顺序,将数据操作对象的信息设置到场景锁注册表中,以创建对应的场景锁;并执行数据操作指令;
步骤S206,返回数据操作指令的执行结果;并在场景锁注册表中删除对应的数据操作对象的信息;
步骤S207,对数据操作对象的信息的删除操作进行操作统计,以便获取数据操作对象的指令操作热度。
下面详细说明本实施例的指令执行方法的各步骤的具体流程。
在步骤S201中,指令执行装置创建用于记录数据操作对象的信息的场景锁注册表,该场景锁注册表可为位图表、数组表或哈希表。其中位图表和数组表还可表示场景锁注册表中存储的数据操作对象的优先级,如数据操作对象A的优先级高于数据操作对象B的优先级,则指令执行装置在场景锁注册表中遍历数据操作对象的信息时,可以更快的遍历到数据操作对象A的信息。当然这里的场景锁注册表也可不存储数据操作对象的优先级(如使用哈希表作为场景锁注册表),或者通过另外设置的优先级文本对数据操作对象的优先级进行记录。
如场景锁注册表采用哈希表,则元组对象的key(键值)可为一个逻辑上的四元组,如{databaseID,schemaID,tableID,rowID};表对象的key(键值)可为rowID值为Null的四元组。随后转到步骤S202。
在步骤S202中,指令执行装置从外部接收用户的数据操作指令或从数据操作指令的等待队列中读取数据操作指令。这里的数据操作指令是指对数据库系统中的数据操作对象进行更新、查询等操作的指令。这里的数据操作对象可为元组对象、表对象、视图对象、指令对象以及数据库参数及事件对象中的至少一个或多个。
随后指令执行装置根据接收或读取的数据操作指令获取对应的数据操作对象。随后转到步骤S203。
在步骤S203中,指令执行装置获取预设的场景锁注册表。随后指令执行装置判断步骤S202获取的数据操作对象的信息是否已经设置在预设的场景锁注册表中。
具体请参照图3,图3为本发明的指令执行方法的第二实施例的步骤S203的流程图。该步骤S203包括:
步骤S301,指令执行装置按数据操作对象的优先级顺序,遍历场景锁注册表。为了提高场景锁注册表的遍历效率,这里按数据操作对象的优先级顺序,对遍历场景锁进行遍历,即优先级越高的数据操作对象可以越快被遍历到,从而可更快的确定将对应的数据操作指令设置到等待队列,以对下一条数据操作指令的数据操作对象进行遍历操作。
步骤S302,指令执行装置根据步骤S301中遍历的实时结果,判断步骤S202获取的数据操作对象的信息是否已经设置在预设的场景锁注册表中。如数据操作对象的信息已经设置在场景锁注册表中,则转到步骤S204;如数据操作对象的信息未设置在场景锁注册表中,则转到步骤S205。
在步骤S204中,由于数据操作对象的信息已经设置在场景锁注册表中,则说明该数据操作对象正在进行指令操作,因此指令执行装置将该数据操作指令设置到等待队列中。
在步骤S205中,如数据操作对象的信息未设置在场景锁注册表中,则说明可根据该数据操作指令对该数据操作对象进行指令操作。为了避免其他数据操作指令对该指令操作的影响,这里指令执行装置将数据操作对象的信息设置到场景锁注册表中,以创建对应的场景锁;使得指令执行装置接收到其他相关数据操作指令时,可以查找到该场景锁,避免多个数据操作指令对同一数据操作对象同时进行指令操作。
优选的,这里指令执行装置可按预设的数据操作对象的优先级顺序,将数据操作对象的信息设置到场景锁注册表中。以便后续指令执行装置可以更加高效的对场景锁注册表进行遍历操作。即优先级越高的数据操作对象设置在场景锁注册表的前端以便更快的被遍历到,从而根据数据操作对象的指令执行频率(优先级)缩短指令执行装置的遍历操作时间。
这里和步骤S301中的数据操作对象的优先级顺序可分开设置,如步骤S301设置了按数据操作对象的优先级顺序,遍历场景锁注册表;则本步骤不必按预设的数据操作对象的优先级顺序,将数据操作对象的信息设置到场景锁注册表中。如步骤S301未按数据操作对象的优先级顺序,遍历场景锁注册表;则在本步骤中可按预设的数据操作对象的优先级顺序,将数据操作对象的信息设置到场景锁注册表中。当然为了保证优先级顺序的可靠性,也可在两个步骤中以数据操作对象的优先级顺序进行遍历以及设置。
随后指令执行装置执行步骤S202接收或读取的数据操作指令。如该数据操作指令为数据更新指令,则具体的,指令执行装置可获取数据更新指令对应的数据操作对象;随后指令执行装置对数据操作对象增加行级锁,以避免对同一数据操作对象的并发操作;然后指令执行装置根据数据更新指令,对数据操作对象进行更新操作;最后指令执行装置返回更新操作的执行结果,并释放行级锁。随后转到步骤S206。
在步骤S206中,指令执行装置返回步骤S205的数据操作指令对应的指令操作的执行结果,同时在场景锁注册表中删除对应的数据操作对象的信息,以便其他数据操作指令继续通过场景锁对该数据操作对象进行指令操作。随后转到步骤S207。
在步骤S207中,指令执行装置对步骤S206中的数据操作对象的信息的删除操作进行操作统计,以便获取数据操作对象的指令操作热度。从而用户可根据数据操作对象的指令操作热度对数据操作对象的优先级进行修正,如指令操作热度越高的数据操作对象,其优先级应设置的越高,从而可节约指令执行装置在场景锁注册表中对该数据操作对象的遍历操作时间。
这样即完成了本实施例的指令执行方法的数据库数据的数据操作指令的执行过程。
在第一优选实施例的基础上,本优选实施例的指令执行方法通过数据操作对象的优先级顺序的设置,提高了数据操作对象在场景锁注册表的遍历效率,即提高了对相应数据操作指令的处理效率。同时通过对数据操作对象的指令操作热度的统计对数据操作对象的优先级顺序进行修正,进一步提高了数据操作指令的处理效率。
本发明还提供一种指令执行装置,请参照图4,图4为本发明的指令执行装置的第一实施例的结构示意图。本实施例的指令执行装置可使用上述的指令执行方法的第一实施例进行实施。本实施例的指令执行装置40包括数据操作对象获取模块41、判断模块42、第一设置模块43、第二设置模块44、指令执行模块45以及设置删除模块46。
数据操作对象获取模块41用于接收数据操作指令,并获取数据操作指令对应的数据操作对象;判断模块42用于判断数据操作对象的信息是否设置在预设的场景锁注册表中;第一设置模块43用于如数据操作对象的信息设置在场景锁注册表中,则将数据操作指令设置到等待队列;第二设置模块44用于如数据操作对象的信息未设置在场景锁注册表中,则将数据操作对象的信息设置到场景锁注册表中,以创建对应的场景锁;指令执行模块45用于执行数据操作指令;设置删除模块46用于返回数据操作指令的执行结果;并在场景锁注册表中删除对应的数据操作对象的信息。
本优选实施例的指令执行装置40使用时,首先数据操作对象获取模块41接收用户的数据操作指令。这里的数据操作指令是指对数据库系统中的数据操作对象进行更新、查询等操作的指令。这里的数据操作对象可为元组对象、表对象、视图对象、指令对象以及数据库参数及事件对象中的至少一个或多个。
其中元组对象是指数据库系统中的具体数据,如数据库系统中记录的活动商品的商品数量等。
表对象是指数据库系统中用于存储数据的数据结构,如可通过使用DDL(DataDefinition Language,数据库定义语言)对表对象进行变更。
位图对象也是数据库系统中用于存储数据的另一种数据结构。
指令对象是指用于对数据库系统中的存储数据进行数据处理的指令,如SQL(结构化查询语言(Structured Query Language)指令等。
数据库参数及事件对象是指数据库系统自身的固有参数,如数据库系统的数据缓冲区大小、数据库系统对某个功能(如死锁检测功能)的禁止以及启动等。
随后数据操作对象获取模块41根据接收的数据操作指令获取对应的数据操作对象。
然后判断模块42获取预设的场景锁注册表,这里的场景锁注册表是指用于记录正在进行指令操作的数据操作对象对应的场景锁信息的注册表。该场景锁注册表可为位图表、数组表或哈希表等。
随后判断模块42判断数据操作对象获取模块41获取的数据操作对象的信息是否已经设置在预设的场景锁注册表中。
如数据操作对象的信息已经设置在场景锁注册表中,则说明该数据操作对象正在进行指令操作,因此第一设置模块43将该数据操作指令设置到等待队列中。
如数据操作对象的信息未设置在场景锁注册表中,则说明可根据该数据操作指令对该数据操作对象进行指令操作。为了避免其他数据操作指令对该数据指令操作的影响,这里第二设置模块44将数据操作对象的信息设置到场景锁注册表中,以创建对应的场景锁;使得指令执行装置40接收到其他相关数据操作指令时,可以查找到该场景锁,避免多个数据操作指令对同一数据操作对象同时进行指令操作。
随后指令执行模块45执行数据操作指令。如该数据操作指令为数据更新指令,则具体的,指令执行模块可获取数据更新指令对应的数据操作对象;随后指令执行模块45对数据操作对象增加行级锁,以避免对同一数据操作对象的并发操作;然后指令执行模块45根据数据更新指令,对数据操作对象进行更新操作;最后指令执行模块45返回更新操作的执行结果,并释放行级锁。
由于执行数据操作指令之前场景锁的设置,可有效的减少数据操作指令在行级锁创建时的并发量,从而降低了行级锁之间形成操作环而导致的检测死锁的发生概率,提高了数据库系统在执行数据操作指令时内存资源的有效使用率以及数据操作指令的处理效率。
最后设置删除模块46返回数据操作指令对应的指令操作的执行结果,同时在场景锁注册表中删除对应的数据操作对象的信息,以便其他数据操作指令继续通过场景锁对该数据操作对象进行指令操作。
这样即完成了本实施例的指令执行装置40的数据库数据的数据操作指令的执行过程。
本实施例的指令执行装置通过设置场景锁注册表对数据操作指令进行执行控制,避免了无效的并发操作的数量,从而提高了对应数据库系统的内存资源的有效使用率,并提高了数据操作指令的处理效率。
请参照图5,图5为本发明的指令执行装置的第二实施例的结构示意图。本实施例的指令执行装置可使用上述的指令执行方法的第一实施例进行实施。本实施例的指令执行装置50包括场景锁注册表创建模块51、数据操作对象获取模块52、判断模块53、第一设置模块54、第二设置模块55、指令执行模块56、设置删除模块57以及操作统计模块58。
场景锁注册表创建模块51用于创建用于记录数据操作对象的信息的场景锁注册表;数据操作对象获取模块52用于接收外部的数据操作指令或从等待队列中读取数据操作指令;判断模块53用于判断数据操作对象的信息是否设置在预设的场景锁注册表中;第一设置模块54用于如数据操作对象的信息设置在场景锁注册表中,则将数据操作指令设置到等待队列;第二设置模块55用于如数据操作对象的信息未设置在场景锁注册表中,则将数据操作对象的信息设置到场景锁注册表中,以创建对应的场景锁;指令执行模块56用于执行数据操作指令;设置删除模块57用于返回数据操作指令的执行结果;并在场景锁注册表中删除对应的数据操作对象的信息;操作统计模块58用于对数据操作对象的信息的删除操作进行操作统计,以便获取数据操作对象的指令操作热度。
请参照图6,图6为本发明的指令执行装置的第二实施例的判断模块的结构示意图。判断模块53包括遍历单元61以及判断单元62。遍历单元61用于按数据操作对象的优先级顺序,遍历场景锁注册表;判断单元62用于根据遍历的实时结果,判断数据操作对象的信息是否设置在预设的场景锁注册表中。
本优选实施例的指令执行装置50使用时,首先场景锁注册表创建模块51创建用于记录数据操作对象的信息的场景锁注册表,该场景锁注册表可为位图表、数组表或哈希表。其中位图表和数组表还可表示场景锁注册表中存储的数据操作对象的。当然这里的场景锁注册表也可不存储数据操作对象的优先级(如使用哈希表作为场景锁注册表),或者通过另外设置的优先级文本对数据操作对象的优先级进行记录。
随后数据操作对象获取模块52从外部接收用户的数据操作指令或从数据操作指令的等待队列中读取数据操作指令。这里的数据操作指令是指对数据库系统中的数据操作对象进行更新、查询等操作的指令。这里的数据操作对象可为元组对象、表对象、视图对象、指令对象以及数据库参数及事件对象中的至少一个或多个。
然后数据操作对象获取模块52根据接收或读取的数据操作指令获取对应的数据操作对象。
随后判断模块53获取预设的场景锁注册表。随后判断模块53判断获取的数据操作对象的信息是否已经设置在预设的场景锁注册表中。
具体流程包括:
判断模块53的遍历单元61按数据操作对象的优先级顺序,遍历场景锁注册表。为了提高场景锁注册表的遍历效率,这里按数据操作对象的优先级顺序,对遍历场景锁进行遍历,即优先级越高的数据操作对象可以越快被遍历到,从而可更快的确定将对应的数据操作指令设置到等待队列,以对下一条数据操作指令的数据操作对象进行遍历操作。
判断模块53的判断单元62根据遍历单元遍历的实时结果,判断数据操作对象获取模块获取的数据操作对象的信息是否已经设置在预设的场景锁注册表中。
如数据操作对象的信息已经设置在场景锁注册表中,则说明该数据操作对象正在进行指令操作,因此第一设置模块54将该数据操作指令设置到等待队列中。
如数据操作对象的信息未设置在场景锁注册表中,则说明可根据该数据操作指令对该数据操作对象进行指令操作。为了避免其他数据操作指令对该指令操作的影响,这里第二设置模块55将数据操作对象的信息设置到场景锁注册表中,以创建对应的场景锁;使得指令执行装置接收到其他相关数据操作指令时,可以查找到该场景锁,避免多个数据操作指令对同一数据操作对象同时进行指令操作。
优选的,这里第二设置模块55可按预设的数据操作对象的优先级顺序,将数据操作对象的信息设置到场景锁注册表中。以便后续指令执行装置可以更加高效的对场景锁注册表进行遍历操作。即优先级越高的数据操作对象设置在场景锁注册表的前端以便更快的被遍历到,从而根据数据操作对象的指令执行频率(优先级)缩短指令执行装置的遍历操作时间。
随后指令执行模块56执行数据操作对象获取模块52接收或读取的数据操作指令。如该数据操作指令为数据更新指令,则具体的,指令执行模块56可获取数据更新指令对应的数据操作对象;随后指令执行模块56对数据操作对象增加行级锁,以避免对同一数据操作对象的并发操作;然后指令执行模块56根据数据更新指令,对数据操作对象进行更新操作;最后指令执行模块56返回更新操作的执行结果,并释放行级锁。
然后设置删除模块57返回数据操作指令对应的指令操作的执行结果,同时在场景锁注册表中删除对应的数据操作对象的信息,以便其他数据操作指令继续通过场景锁对该数据操作对象进行指令操作。
最后操作统计模块58对数据操作对象的信息的删除操作进行操作统计,以便获取数据操作对象的指令操作热度。从而用户可根据数据操作对象的指令操作热度对数据操作对象的优先级进行修正,如指令操作热度越高的数据操作对象,其优先级应设置的越高,从而可节约指令执行装置在场景锁注册表中对该数据操作对象的遍历操作时间。
这样即完成了本实施例的指令执行装置50的数据库数据的数据操作指令的执行过程。
在第一优选实施例的基础上,本优选实施例的指令执行装置通过数据操作对象的优先级顺序的设置,提高了数据操作对象在场景锁注册表的遍历效率,即提高了对相应数据操作指令的处理效率。同时通过对数据操作对象的指令操作热度的统计对数据操作对象的优先级顺序进行修正,进一步提高了数据操作指令的处理效率。
下面通过一具体实施例说明本发明的指令执行方法及指令执行装置的具体工作原理。请参照图7,图7为本发明的指令执行方法以及指令执行装置的具体实施例的指令执行流程图。本具体实施例的指令执行装置设置在数据库系统中,以提高数据库系统的内存资源的有效使用率,以及对应的数据操作指令的处理效率。该数据操作指令的执行流程包括:
步骤S701,接收数据操作指令,并获取数据操作指令对应的数据操作对象。其中表1为某个秒杀活动商品表。该数据操作对象可为如对表1中的商品数量(元组对象),表1中表格式的展示形式(表对象或视图对象),数据操作指令的指令语句类型(指令对象)以及数据库系统的系统固有参数(数据库参数及事件对象)。
商品名称 | 商品编号 | 商品价格 | 商品数量 |
电视机 | 101 | 2000.00 | 100 |
旅游券 | 203 | 100.00 | 2000 |
冲锋衣 | 508 | 500.00 | 300 |
步骤S702,基于数据操作对象的优先级顺序,对场景锁注册表进行遍历操作,以判断上述数据操作对象的信息是否设置在预设的场景锁注册表中,如数据操作对象的信息设置在预设的场景锁注册表中,则转到步骤S703;如数据操作对象的信息未设置在预设的场景锁注册表中,则转到步骤S704;
步骤S703,将数据操作指令设置到等待队列。
步骤S704,将数据操作对象的信息设置到场景锁注册表中,以创建对应的场景锁,并执行数据操作指令。如允许数据更新指令对相应的数据操作对象增加行级锁。
步骤S705,指令执行装置返回数据操作指令对应的指令操作的执行结果,如更新操作执行完毕、更新操作执行异常或死锁检测中更新操作被选为受害者等。
这时指令执行装置在场景锁注册表中删除对应的数据操作对象的信息。如在场景锁注册表中,将对应的数据操作对象的信息设置为初始值,以取消该数据操作对象在场景锁注册表中的注册。
这样即完成了本具体实施例的指令执行方法及指令执行装置的数据库数据的数据操作指令的执行过程。
在本具体实施例中,不同类型的数据操作对象可设置相应的优先级,从而可在场景锁注册表中对不同的数据操作对象进行排队,进而优化后续场景锁注册表的遍历操作的操作效率。本发明将所有可能接收指令操作的数据元素均可设置为数据操作对象,且均可进行优先级的设置操作,进一步提高了本发明的指令执行方法及指令执行装置的数据操作指令的处理效率。
同时还可对场景锁注册表中的数据操作对象的信息的删除操作进行操作统计,以统计哪些数据操作对象为指令操作的热点,从而提高优先级设置的准确性。
为了进一步提高指令执行装置对场景锁注册表的遍历效率,该场景锁注册表可通过设置“scene_lock_size”参数来控制场景锁注册表的大小,如将该参数设置为0,则表示关闭场景锁的功能。该参数的最大值可设为10000,表示最大可以注册10000个不同的数据操作对象。
本发明的指令执行方法、指令执行装置及存储介质通过设置场景锁注册表对数据操作指令进行执行控制,减少了数据操作指令并发操作的数量,从而提高了对应数据库系统的内存资源的有效使用率,并提高了数据操作指令的处理效率;解决了现有的指令执行方法以及指令执行装置对应的数据库系统的内存资源的有效使用率较低,且数据操作指令的处理效率较为低下的技术问题。
如本申请所使用的术语“组件”、“模块”、“系统”、“接口”、“进程”等等一般地旨在指计算机相关实体:硬件、硬件和软件的组合、软件或执行中的软件。例如,组件可以是但不限于是运行在处理器上的进程、处理器、对象、可执行应用、执行的线程、程序和/或计算机。通过图示,运行在控制器上的应用和该控制器二者都可以是组件。一个或多个组件可以有在于执行的进程和/或线程内,并且组件可以位于一个计算机上和/或分布在两个或更多计算机之间。
图8和随后的讨论提供了对实现本发明所述的指令执行装置所在的电子设备的工作环境的简短、概括的描述。图8的工作环境仅仅是适当的工作环境的一个实例并且不旨在建议关于工作环境的用途或功能的范围的任何限制。实例电子设备812包括但不限于可穿戴设备、头戴设备、医疗健康平台、个人计算机、服务器计算机、手持式或膝上型设备、移动设备(比如移动电话、个人数字助理(PDA)、媒体播放器等等)、多处理器系统、消费型电子设备、小型计算机、大型计算机、包括上述任意系统或设备的分布式计算环境,等等。
尽管没有要求,但是在“计算机可读指令”被一个或多个电子设备执行的通用背景下描述实施例。计算机可读指令可以经由计算机可读介质来分布(下文讨论)。计算机可读指令可以实现为程序模块,比如执行特定任务或实现特定抽象数据类型的功能、对象、应用编程接口(API)、数据结构等等。典型地,该计算机可读指令的功能可以在各种环境中随意组合或分布。
图8图示了包括本发明的指令执行装置中的一个或多个实施例的电子设备812的实例。在一种配置中,电子设备812包括至少一个处理单元816和存储器818。根据电子设备的确切配置和类型,存储器818可以是易失性的(比如RAM)、非易失性的(比如ROM、闪存等)或二者的某种组合。该配置在图8中由虚线814图示。
在其他实施例中,电子设备812可以包括附加特征和/或功能。例如,设备812还可以包括附加的存储装置(例如可移除和/或不可移除的),其包括但不限于磁存储装置、光存储装置等等。这种附加存储装置在图8中由存储装置820图示。在一个实施例中,用于实现本文所提供的一个或多个实施例的计算机可读指令可以在存储装置820中。存储装置820还可以存储用于实现操作系统、应用程序等的其他计算机可读指令。计算机可读指令可以载入存储器818中由例如处理单元816执行。
本文所使用的术语“计算机可读介质”包括计算机存储介质。计算机存储介质包括以用于存储诸如计算机可读指令或其他数据之类的信息的任何方法或技术实现的易失性和非易失性、可移除和不可移除介质。存储器818和存储装置820是计算机存储介质的实例。计算机存储介质包括但不限于RAM、ROM、EEPROM、闪存或其他存储器技术、CD-ROM、数字通用盘(DVD)或其他光存储装置、盒式磁带、磁带、磁盘存储装置或其他磁存储设备、或可以用于存储期望信息并可以被电子设备812访问的任何其他介质。任意这样的计算机存储介质可以是电子设备812的一部分。
电子设备812还可以包括允许电子设备812与其他设备通信的通信连接826。通信连接826可以包括但不限于调制解调器、网络接口卡(NIC)、集成网络接口、射频发射器/接收器、红外端口、USB连接或用于将电子设备812连接到其他电子设备的其他接口。通信连接826可以包括有线连接或无线连接。通信连接826可以发射和/或接收通信媒体。
术语“计算机可读介质”可以包括通信介质。通信介质典型地包含计算机可读指令或诸如载波或其他传输机构之类的“己调制数据信号”中的其他数据,并且包括任何信息递送介质。术语“己调制数据信号”可以包括这样的信号:该信号特性中的一个或多个按照将信息编码到信号中的方式来设置或改变。
电子设备812可以包括输入设备824,比如键盘、鼠标、笔、语音输入设备、触摸输入设备、红外相机、视频输入设备和/或任何其他输入设备。设备812中也可以包括输出设备822,比如一个或多个显示器、扬声器、打印机和/或任意其他输出设备。输入设备824和输出设备822可以经由有线连接、无线连接或其任意组合连接到电子设备812。在一个实施例中,来自另一个电子设备的输入设备或输出设备可以被用作电子设备812的输入设备824或输出设备822。
电子设备812的组件可以通过各种互连(比如总线)连接。这样的互连可以包括外围组件互连(PCI)(比如快速PCI)、通用串行总线(USB)、火线(IEEE1394)、光学总线结构等等。在另一个实施例中,电子设备812的组件可以通过网络互连。例如,存储器818可以由位于不同物理位置中的、通过网络互连的多个物理存储器单元构成。
本领域技术人员将认识到,用于存储计算机可读指令的存储设备可以跨越网络分布。例如,可经由网络828访问的电子设备830可以存储用于实现本发明所提供的一个或多个实施例的计算机可读指令。电子设备812可以访问电子设备830并且下载计算机可读指令的一部分或所有以供执行。可替代地,电子设备812可以按需要下载多条计算机可读指令,或者一些指令可以在电子设备812处执行并且一些指令可以在电子设备830处执行。
本文提供了实施例的各种操作。在一个实施例中,所述的一个或多个操作可以构成一个或多个计算机可读介质上存储的计算机可读指令,其在被电子设备执行时将使得计算设备执行所述操作。描述一些或所有操作的顺序不应当被解释为暗示这些操作必需是顺序相关的。本领域技术人员将理解具有本说明书的益处的可替代的排序。而且,应当理解,不是所有操作必需在本文所提供的每个实施例中存在。
而且,尽管已经相对于一个或多个实现方式示出并描述了本公开,但是本领域技术人员基于对本说明书和附图的阅读和理解将会想到等价变型和修改。本公开包括所有这样的修改和变型,并且仅由所附权利要求的范围限制。特别地关于由上述组件(例如元件、资源等)执行的各种功能,用于描述这样的组件的术语旨在对应于执行所述组件的指定功能(例如其在功能上是等价的)的任意组件(除非另外指示),即使在结构上与执行本文所示的本公开的示范性实现方式中的功能的公开结构不等同。此外,尽管本公开的特定特征已经相对于若干实现方式中的仅一个被公开,但是这种特征可以与如可以对给定或特定应用而言是期望和有利的其他实现方式的一个或多个其他特征组合。而且,就术语“包括”、“具有”、“含有”或其变形被用在具体实施方式或权利要求中而言,这样的术语旨在以与术语“包含”相似的方式包括。
本发明实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。上述提到的存储介质可以是只读存储器,磁盘或光盘等。上述的各装置或系统,可以执行相应方法实施例中的方法。
综上所述,虽然本发明已以实施例揭露如上,实施例前的序号仅为描述方便而使用,对本发明各实施例的顺序不造成限制。并且,上述实施例并非用以限制本发明,本领域的普通技术人员,在不脱离本发明的精神和范围内,均可作各种更动与润饰,因此本发明的保护范围以权利要求界定的范围为准。
Claims (11)
1.一种指令执行方法,其特征在于,包括:
接收数据操作指令,并获取所述数据操作指令对应的数据操作对象;
判断所述数据操作对象的信息是否设置在预设的场景锁注册表中,所述场景锁注册表用于记录正在进行指令操作的数据操作对象对应的场景锁信息;
如所述数据操作对象的信息设置在所述场景锁注册表中,则将所述数据操作指令设置到等待队列;
如所述数据操作对象的信息未设置在所述场景锁注册表中,则按预设的数据操作对象的优先级顺序,将所述数据操作对象的信息设置到场景锁注册表中,以创建对应的场景锁;并执行所述数据操作指令;以及
返回所述数据操作指令的执行结果;并在所述场景锁注册表中删除对应的数据操作对象的信息;
对所述数据操作对象的信息的删除操作进行操作统计,以便获取所述数据操作对象的指令操作热度,根据所述指令操作热度对数据操作对象的优先级进行修正。
2.根据权利要求1所述的指令执行方法,其特征在于,所述指令执行方法还包括步骤:
创建用于记录所述数据操作对象的信息的场景锁注册表。
3.根据权利要求1所述的指令执行方法,其特征在于,所述判断所述数据操作对象的信息是否设置在预设的场景锁注册表中的步骤包括:
按所述数据操作对象的优先级顺序,遍历所述场景锁注册表;以及
根据遍历的实时结果,判断所述数据操作对象的信息是否设置在预设的场景锁注册表中。
4.根据权利要求1所述的指令执行方法,其特征在于,所述数据操作对象为元组对象、表对象、视图对象、指令对象、以及数据库参数及事件对象中至少一个。
5.根据权利要求1所述的指令执行方法,其特征在于,所述场景锁注册表为具有数据操作对象的优先级顺序的位图表或数组表,或不具有数据操作对象的优先级顺序的哈希表。
6.根据权利要求1所述的指令执行方法,其特征在于,所述接收数据操作指令的步骤包括:
接收外部的数据操作指令或从所述等待队列中读取数据操作指令。
7.一种指令执行装置,其特征在于,包括:
数据操作对象获取模块,用于接收数据操作指令,并获取所述数据操作指令对应的数据操作对象;
判断模块,用于判断所述数据操作对象的信息是否设置在预设的场景锁注册表中,所述场景锁注册表用于记录正在进行指令操作的数据操作对象对应的场景锁信息;
第一设置模块,用于如所述数据操作对象的信息设置在所述场景锁注册表中,则将所述数据操作指令设置到等待队列;
第二设置模块,用于如所述数据操作对象的信息未设置在所述场景锁注册表中,则按预设的数据操作对象的优先级顺序,将所述数据操作对象的信息设置到场景锁注册表中,以创建对应的场景锁;
指令执行模块,用于执行所述数据操作指令;以及
设置删除模块,用于返回所述数据操作指令的执行结果;并在所述场景锁注册表中删除对应的数据操作对象的信息,对所述数据操作对象的信息的删除操作进行操作统计,以便获取所述数据操作对象的指令操作热度,根据所述指令操作热度对数据操作对象的优先级进行修正。
8.根据权利要求7所述的指令执行装置,其特征在于,所述指令执行装置还包括:
场景锁注册表创建模块,用于创建用于记录所述数据操作对象的信息的场景锁注册表。
9.根据权利要求7所述的指令执行装置,其特征在于,所述判断模块包括:
遍历单元,用于按所述数据操作对象的优先级顺序,遍历所述场景锁注册表;以及
判断单元,用于根据遍历的实时结果,判断所述数据操作对象的信息是否设置在预设的场景锁注册表中。
10.根据权利要求7所述的指令执行装置,其特征在于,所述数据操作对象获取模块用于接收外部的数据操作指令或从所述等待队列中读取数据操作指令。
11.一种存储介质,其内存储有处理器可执行指令,该处理器通过执行所述指令提供如权利要求1-6中任一的指令执行方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710683828.5A CN109388645B (zh) | 2017-08-11 | 2017-08-11 | 指令执行方法、指令执行装置及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710683828.5A CN109388645B (zh) | 2017-08-11 | 2017-08-11 | 指令执行方法、指令执行装置及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109388645A CN109388645A (zh) | 2019-02-26 |
CN109388645B true CN109388645B (zh) | 2023-02-24 |
Family
ID=65414544
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710683828.5A Active CN109388645B (zh) | 2017-08-11 | 2017-08-11 | 指令执行方法、指令执行装置及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109388645B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111261206B (zh) * | 2020-01-17 | 2022-03-08 | 苏州浪潮智能科技有限公司 | 一种读写方法、装置和电子设备及可读存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101615203A (zh) * | 2009-07-23 | 2009-12-30 | 中兴通讯股份有限公司 | 并发控制方法及装置 |
CN104252386A (zh) * | 2013-06-26 | 2014-12-31 | 阿里巴巴集团控股有限公司 | 数据更新的加锁方法和设备 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9690818B2 (en) * | 2009-12-01 | 2017-06-27 | Sybase, Inc. | On demand locking of retained resources in a distributed shared disk cluster environment |
US9632569B2 (en) * | 2014-08-05 | 2017-04-25 | Qualcomm Incorporated | Directed event signaling for multiprocessor systems |
US9898350B2 (en) * | 2015-03-20 | 2018-02-20 | EMC IP Holding Company LLC | Techniques for synchronizing operations performed on objects |
CN106022064B (zh) * | 2016-05-30 | 2017-11-14 | 广东欧珀移动通信有限公司 | 一种解锁控制方法及移动终端 |
-
2017
- 2017-08-11 CN CN201710683828.5A patent/CN109388645B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101615203A (zh) * | 2009-07-23 | 2009-12-30 | 中兴通讯股份有限公司 | 并发控制方法及装置 |
CN104252386A (zh) * | 2013-06-26 | 2014-12-31 | 阿里巴巴集团控股有限公司 | 数据更新的加锁方法和设备 |
Non-Patent Citations (1)
Title |
---|
"基于多版本的内存数据库系统";赵艳梅等;《计算机与数字工程》;20111020;第19-21+55页 * |
Also Published As
Publication number | Publication date |
---|---|
CN109388645A (zh) | 2019-02-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11238039B2 (en) | Materializing internal computations in-memory to improve query performance | |
US9916352B2 (en) | Caching external data sources for SQL processing | |
CN107851123B (zh) | 在存储器中虚拟列单元内具体化表达式以加速分析查询 | |
US20190129894A1 (en) | Database Transaction Processing Method, Client, and Server | |
US9910891B2 (en) | Deferring data record changes using query rewriting | |
US9298768B2 (en) | System and method for the parallel execution of database queries over CPUs and multi core processors | |
US9953050B2 (en) | Garbage collection of versions driving the garbage collection of multi-version concurrency control timestamps | |
US10635668B2 (en) | Intelligently utilizing non-matching weighted indexes | |
US20160147447A1 (en) | N-bit Compressed Versioned Column Data Array for In-Memory Columnar Stores | |
US20160125022A1 (en) | Efficient maintenance of column store indexes on memory-optimized tables | |
US10007548B2 (en) | Transaction system | |
US9846714B2 (en) | Database device | |
US20170329852A1 (en) | Page query method and data processing node in oltp cluster database | |
US7933928B2 (en) | Method and mechanism for loading XML documents into memory | |
US20240126706A1 (en) | Local page writes via pre-staging buffers for resilient buffer pool extensions | |
US11216412B2 (en) | Intelligent merging for efficient updates in columnar databases | |
US10997158B2 (en) | Techniques for updating big data tables using snapshot isolation | |
CN109388645B (zh) | 指令执行方法、指令执行装置及存储介质 | |
CN113010535A (zh) | 缓存数据的更新方法、装置、设备和存储介质 | |
KR102280443B1 (ko) | 셀렉트 쿼리 처리 시 네트워크 비용 절감을 위해 멀티 캐시를 구비한 클라우드 데이터베이스 시스템 | |
JP2016194826A (ja) | データベースの処理制御方法、処理制御プロラム及びデータベースサーバ | |
US11709808B1 (en) | Schema evolution for the serialization of non-primary key columnar data into row-organized byte sequences | |
US20230237186A1 (en) | Access Control Framework For Graph Entities | |
CN116257519A (zh) | 一种数据读写的方法、装置、计算机设备及存储介质 | |
CN113051441A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |