CN116303661B - 一种分布式数据库中针对序列的处理方法、装置及系统 - Google Patents

一种分布式数据库中针对序列的处理方法、装置及系统 Download PDF

Info

Publication number
CN116303661B
CN116303661B CN202310041225.0A CN202310041225A CN116303661B CN 116303661 B CN116303661 B CN 116303661B CN 202310041225 A CN202310041225 A CN 202310041225A CN 116303661 B CN116303661 B CN 116303661B
Authority
CN
China
Prior art keywords
sequence
value
cache
sequence object
request
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
Application number
CN202310041225.0A
Other languages
English (en)
Other versions
CN116303661A (zh
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.)
Beijing Great Opensource Software Co ltd
Original Assignee
Beijing Great Opensource Software Co 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 Beijing Great Opensource Software Co ltd filed Critical Beijing Great Opensource Software Co ltd
Priority to CN202310041225.0A priority Critical patent/CN116303661B/zh
Publication of CN116303661A publication Critical patent/CN116303661A/zh
Application granted granted Critical
Publication of CN116303661B publication Critical patent/CN116303661B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/2458Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
    • G06F16/2474Sequence data queries, e.g. querying versioned data
    • 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
    • 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/2455Query execution
    • G06F16/24552Database cache management
    • 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/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • 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
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

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

Abstract

本发明公开了分布式数据库中针对序列的处理方法、装置及系统,其中处理方法包括:接收序列值获取请求;对序列对象元数据进行存储及缓存处理;对序列对象值进行存取及持久化处理;对序列对象值进行缓存、预分配及缓存加速处理;对本地序列进行缓存并发访问控制处理;以及全局保序控制处理,以及对序列对象版本进行检查。本方案可以提高分布式数据库系统生成序列值的效率,并且在严格模式下,保证分布式数据库系统生成全局保序的序列值。

Description

一种分布式数据库中针对序列的处理方法、装置及系统
技术领域
本发明涉及分布式数据库技术领域,具体涉及一种分布式数据库中针对序列的处理方法、装置及系统。
背景技术
在传统数据库系统中,经常用到自增列或序列对象。此类数据库系统中对象一般是有序、单调递增、无重复值生成。通常,此类数据库对象用于为应用系统提供全局唯一的ID标识,用于生成用户id,订单id等,是数据库系统中用途最广泛的特性之一。
随着移动互联网的推广,各种数据呈指数级增长,传统的单机数据库已经无法满足当今日益增长的数据量的存储需求,分布式数据库系统慢慢开始替代单机系统。在一个分布式数据库系统中,各个计算节点均承载应用的业务请求。在此前提下,各个计算节点需要支持生成全局唯一的序列值。
由于分布式数据库系统承载的业务系统通常请求量较大,在分布式数据库系统中需要考虑生成序列值的性能开销。如果处理序列请求时需要在多个计算节点间进行一次消息同步,则可能无法满足业务需求。因此,需要根据分布式数据库的特点结合应用业务对序列值附加属性的要求进行合理设计,在满足需求的前提下降低序列值获取的响应延迟、提高分布式数据库系统中并发生成序列值的iops(每秒进行读写(I/O)操作的次数)。
发明内容
本发明提供一种分布式数据库中针对序列的处理方法、装置及系统,以解决现有技术中存在的上述问题。
本发明提供一种分布式数据库中针对序列的处理方法,该处理方法包括:
S100,接收序列值获取请求;
S200,对序列对象元数据进行存储及缓存处理;
S300,对序列对象值进行存取及持久化处理;
S400,对序列对象值进行缓存、预分配及缓存加速处理;
S500,对本地序列进行缓存并发访问控制处理;以及全局保序控制处理,以及对序列对象版本进行检查。
优选的,所述S100包括:
S101,序列值获取请求包含在SQL语句中,根据需返回的行数确定需要的序列值个数;
S102,当单并发获取单个序列值时,不考虑并发问题;
S103,当本地多并发获取序列值时,按请求的目标序列对象进行分组;如存在对某个序列对象的多个并发请求,对该序列上的多个并发请求做互斥、排队等待处理;
S104,当分布式数据库系统的多个节点同时接收序列值获取请求时,各个节点生成的序列值是全局唯一,当创建序列对象时设置了保序属性时,各个节点按照全局单调递增保序。
优选的,所述S200包括:
S201,每个计算节点包含一份记录序列对象的元数据定义和对应的元数据定义缓存;序列对象在创建时通过分布式数据库内部的同步机制将序列对象的DDL定义同步到各个计算节点;其它计算节点收到创建序列的消息后,以slave角色在内部执行一次序列对象创建,并保存一份该对象的定义,同时加载到序列对象缓存;
S202,序列对象缓存用于语句的解析,参与判断语句中的序列值请求是否合法并提供访问加速;请求访问数据库序列对象时,直接检查该对象是否存在于序列对象缓存中;
S203,分布式数据库的计算节点在启动时,访问序列对象的持久化元数据记录,并将其加载到数据库对象缓存;在计算节点提供服务期间,序列对象缓存内某个序列的生命周期与该序列对象的生命周期一致,直至删除序列对象。
优选的,所述S300包括:
S301,序列对象的当前值存储并持久化在后端存储节点;访问或修改序列当前值时,通过元数据路由信息定位到后端存储节点;
S302,根据访问请求的类型对存储序列当前值的持久化内容加共享读锁或互斥写锁的同步原语;访问请求的类型包括:读取或修改;
S303,后端存储节点支持以序列对象为粒度、多个计算节点对此持久化记录的并发访问控制;实现方式包括:读写锁、数据库表内记录的行锁。
优选的,所述S400包括:
S401,序列值缓存与序列对象相对应,每个序列对象均对应一条序列值缓存记录;两者缓存储在各个计算节点的数据库实例的内存;
S402,序列值缓存采用预分配的方式从序列的合法值区间中设置一段独占的数值空间供当前节点独占使用;一旦某段数值空间被设置并赋给某个计算节点,则其他计算节点无法再使用该数值空间;若计算节点的数据库实例关闭或异常崩溃,序列值缓存中剩余未使用的预分配数值将被丢弃;
S403,计算节点的序列值缓存中记录预分配数值区间、数值区间中尚未使用的值以及辅助判断状态的标记;状态标记为STATUS_READY,直接检查预分配数值区间是否有可用值;如果有可用值,则直接使用该值作为本次序列请求的返回值并对应修改数值区间中尚未使用的值;如果无可用值,则预分配一段新的数值区间。
优选的,所述S500中对本地序列进行缓存并发访问控制处理包括:
S501,计算节点的序列对象缓存使用读写锁实现缓存对象的保护并提供并发访问控制;当创建、删除序列对象时,获取写锁并对缓存内的条目进行增删;SQL语句parse阶段查询、获取序列值、修改序列对象操作时只对序列对象缓存使用读锁;
S502,每个序列对象的缓存条目内部包含一个互斥锁,用于获取序列值、修改序列对象的并发控制;通过二级加锁模式减少锁等待,提高并发处理能力。
所述S500中全局保序控制处理包括:
S503,全局保序作为序列的属性在创建序列时被指定;
S504,当指定全局属性后,预分配数值区间时被强制分配一个可用数值,该数值被消费掉,新的序列请求到来时,重新进行一次预分配流程并强制读最新的当前值的操作;
所述S500中对序列对象版本进行检查包括:
S505,序列对象在创建时,为其分配一个初始版本号,默认值为0;
S506,每次修改该序列的属性成功后,对其版本号+1;当需要检查序列版本时,访问序列对象时记录序列当前的版本;在下次访问时,检查当前序列对象版本号是否与上次访问的版本号一致。
本发明还提供一种分布式数据库中针对序列的处理系统,该处理系统包括:
序列操作语法解析模块,用于解析创建、删除、修改序列的SQL语句;解析获取序列的SQL请求;解析数据库序列的运维语句;
序列操作执行模块,用于对分布式数据库系统的主要逻辑进行控制;
序列对象元数据管理模块,用于序列对象元数据信息的持久化和加载;在计算节点数据库实例启动期间,读取所有的序列对象持久化信息,加载到序列对象缓存;保证序列对象元数据信息和序列对象缓存的一致性;在计算节点数据库实例运行期间,为创建、修改、删除序列对象提供元数据信息的持久化接口;
序列对象MDL锁模块,用于query、dml语句和ddl语句间、ddl和ddl语句间的并发访问控制;
存储节点连接管理及访问模块,用于承载计算节点和存储节点间的通讯请求;内部记录存储节点的路由信息,按照特定的通信协议进行通讯;
存储节点序列当前值持久化存储模块,用于持久化序列对象的当前值。
优选的,所述序列操作执行模块包括:
创建请求子模块,用于输入语句是序列的创建请求时,访问本地的序列对象缓存,检查是否已存在同名序列或同名表对象;若存在同名对象时,则拒绝创建序列并返回错误信息;若不存在同名对象时,检查通过,通过对象MDL锁模块对序列对象名加互斥锁、保证对同名对象操作的互斥;通过序列对象元数据管理模块选择一个后端存储节点存储当前值;持久化序列对象元数据信息;以及添加序列对象到本地缓存;
获取请求子模块,用于输入语句是序列值的获取请求时,在语法解析模块已经校验过请求的合法性;直接访问序列缓存,并按照分布式数据库中针对序列的处理方法生成序列值。
优选的,所述序列操作执行模块还包括:
删除请求子模块,用于输入语句是序列的删除请求时,访问本地的序列对象缓存;检查是否已存在同名序列对象;若请求删除的序列对象不存在,则拒绝删除请求并返回错误信息;若请求删除的序列对象存在,检查通过,通过对象MDL锁模块对序列对象加互斥锁,保证对同名对象操作的互斥;通过序列对象元数据管理模块删除该序列在计算节点及后端存储节点的持久化信息,同时从本地缓存中删除该序列的信息;
修改请求子模块,用于输入语句是序列的修改请求时,访问本地的序列对象缓存,检查是否已存在同名序列对象;若请求修改的序列对象不存在,则拒绝修改请求并返回错误信息;若请求修改的序列对象存在,检查通过,通过对象MDL锁模块对序列对象加互斥锁,保证对同名对象操作的互斥;执行对该序列对象的修改,同时更新修序列缓存信息和持久化信息。
本发明还提供一种分布式数据库中针对序列的处理装置,该处理装置包括:处理器;以及存储器,用于存储可执行指令;其中,所述可执行指令被执行时,使得所述处理器执行分布式数据库中针对序列的处理方法。
与现有技术相比,本发明具有以下优点:
本发明提供一种分布式数据库中针对序列的处理方法、装置及系统,其中处理方法包括:接收序列值获取请求;对序列对象元数据进行存储及缓存处理;对序列对象值进行存取及持久化处理;对序列对象值进行缓存、预分配及缓存加速处理;对本地序列进行缓存并发访问控制处理;以及全局保序控制处理,以及对序列对象版本进行检查。本方案可以提高分布式数据库系统生成序列值的效率,并且在严格模式下,保证分布式数据库系统生成全局保序的序列值
本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。
附图说明
附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例一起用于解释本发明,并不构成对本发明的限制。在附图中:
图1为本发明实施例中一种分布式数据库中针对序列的处理方法的流程图;
图2为本发明实施例中序列对象缓存的示意图;
图3为本发明实施例中一种分布式数据库中针对序列的处理系统的结构示意图
图4为本发明实施例中创建序列的示意图;
图5为本发明实施例中删除序列的示意图;
图6为本发明实施例中修改序列的示意图;
图7为本发明实施例中非保序获取序列值方法的流程图。
具体实施方式
以下结合附图对本发明的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明。
本发明实施例提供了一种分布式数据库中针对序列的处理方法,请参照图1,该处理方法包括:
S100,接收序列值获取请求;
S200,对序列对象元数据进行存储及缓存处理;
S300,对序列对象值进行存取及持久化处理;
S400,对序列对象值进行缓存、预分配及缓存加速处理;
S500,对本地序列进行缓存并发访问控制处理;以及全局保序控制处理,以及对序列对象版本进行检查。
上述技术方案的工作原理为:本实施例采用的方案是接收序列值获取请求;对序列对象元数据进行存储及缓存处理;对序列对象值进行存取及持久化处理;对序列对象值进行缓存、预分配及缓存加速处理;对本地序列进行缓存并发访问控制处理;以及全局保序控制处理,以及对序列对象版本进行检查。
需要说明的是,接收独立或并发的序列获取请求,根据系统序列缓存状态判断、让序列获取请求进行等待或响应序列请求;在宽松模式下的本地序列缓存值预分配逻辑;全局序列请求并发控制处理;严格模式下的序列全局保序处理;序列对象的参数控制。结合所述方法,基于分布式数据库架构成支持序列的并发获取、分布式多节点获取、支持全局保序、支持宽松模式下缓存模式加速的系统。
另外,宽松模式下,计算节点与存储节点针对序列分配的交互次数的计算公式如下:
RTs=[REQs-(cache_num-1)]/cache_num+1
其中,RTs表示计算节点与存储节点针对序列分配的交互次数,REQs表示数据库系统中接收到的序列值分配请求,cache_num表示序列创建时预分配缓存可缓存序列值的个数。
其中,序列值获取请求根据并发度包含以下几类:单并发获取序列值、本地多并发获取序列值、分布式多节点并发获取序列值。根据请求获取的序列值数目可以划分为以下几类:单个序列值获取、批量序列值获取。
所述的分布式数据库系统指的是计算、存储分离的分布式数据库系统。包含计算节点和存储节点两种类型:一个或多个计算节点对外承载用户的连接和业务语句请求;对内,将用户的请求转换为对内部存储节点的访问。一个多个存储节点用于持久化用户数据、同时实现多副本及高可用。
另外,本实施例中的本地序列缓存的“本地”指的是单个计算节点。分布式多节点并发获取指的是多个计算节点同时请求序列值。
上述技术方案的有益效果为:采用本实施例提供的方案可以提高分布式数据库系统生成序列值的效率,并且在严格模式下,保证分布式数据库系统生成全局保序的序列值。
在另一实施例中,所述S100包括:
S101,序列值获取请求包含在SQL语句中,根据需返回的行数确定需要的序列值个数;
S102,当单并发获取单个序列值时,不考虑并发问题;
S103,当本地多并发获取序列值时,按请求的目标序列对象进行分组;如存在对某个序列对象的多个并发请求,对该序列上的多个并发请求做互斥、排队等待处理;
S104,当分布式数据库系统的多个节点同时接收序列值获取请求时,各个节点生成的序列值是全局唯一,当创建序列对象时设置了保序属性时,各个节点按照全局单调递增保序。
上述技术方案的工作原理为:本实施例采用的方案是接收序列值获取请求的过程如下:序列值获取请求包含在SQL语句中,根据需返回的行数确定需要的序列值个数;当单并发获取单个序列值时,不考虑并发问题;当本地多并发获取序列值时,按请求的目标序列对象进行分组;如存在对某个序列对象的多个并发请求,对该序列上的多个并发请求做互斥、排队等待处理;当分布式数据库系统的多个节点同时接收序列值获取请求时,各个节点生成的序列值是全局唯一,当创建序列对象时设置了保序属性时,各个节点按照全局单调递增保序。
上述技术方案的有益效果为:采用本实施例提供的方案当分布式系统的多个节点同时接收序列请求时,各个节点生成的序列值保证全局唯一但不保证全局单调递增保序。仅当创建序列对象时声明了“保序”属性,各个节点才保证序列的单调递增及全局保序。
在另一实施例中,所述S200包括:
S201,每个计算节点包含一份记录序列对象的元数据定义和对应的元数据定义缓存;序列对象在创建时通过分布式数据库内部的同步机制将序列对象的DDL定义同步到各个计算节点;其它计算节点收到创建序列的消息后,以slave角色在内部执行一次序列对象创建,并保存一份该对象的定义,同时加载到序列对象缓存;
S202,序列对象缓存用于语句的解析,参与判断语句中的序列值请求是否合法并提供访问加速;请求访问数据库序列对象时,直接检查该对象是否存在于序列对象缓存中;
S203,分布式数据库的计算节点在启动时,访问序列对象的持久化元数据记录,并将其加载到数据库对象缓存;在计算节点提供服务期间,序列对象缓存内某个序列的生命周期与该序列对象的生命周期一致,直至删除序列对象。
上述技术方案的工作原理为:本实施例采用的方案是对象元数据信息包含如下内容:序列值有效区间、序列起始值、序列增长步长及方向、获取序列值时是否在有效区间循环使用、是否强制在分布式多节点同时获取时保证全局保序、无需保序时在序列值缓存中预分配的数值区间大小。序列对象的当前值不包含在对象元数据信息,序列对象元数据只记录序列当前值的持久化位置,为访问或修改当前值提供路由。
在另一实施例中,所述S300包括:
S301,序列对象的当前值存储并持久化在后端存储节点;访问或修改序列当前值时,通过元数据路由信息定位到后端存储节点;
S302,根据访问请求的类型对存储序列当前值的持久化内容加共享读锁或互斥写锁的同步原语;访问请求的类型包括:读取或修改;
S303,后端存储节点支持以序列对象为粒度、多个计算节点对此持久化记录的并发访问控制;实现方式包括:读写锁、数据库表内记录的行锁。
上述技术方案的工作原理为:本实施例采用的方案是序列对象的当前值存储在后端存储节点,序列对象元数据只记录序列当前值的持久化位置,为访问或修改当前值提供路由。访问或修改序列当前值时,首先通过元数据路由信息定位到后端存储节点。定位到后端存储节点后,根据访问请求的类型(读取/修改)对存储序列当前值的持久化内容加“共享读锁/互斥写锁”的同步原语。后端存储节点支持以序列对象为粒度、多个计算节点对此持久化记录的并发访问控制。实现方式包括但不限于:读写锁、数据库表内记录的行锁。
在另一实施例中,所述S400包括:
S401,序列值缓存与序列对象相对应,每个序列对象均对应一条序列值缓存记录;两者缓存储在各个计算节点的数据库实例的内存;
S402,序列值缓存采用预分配的方式从序列的合法值区间中设置一段独占的数值空间供当前节点独占使用;一旦某段数值空间被设置并赋给某个计算节点,则其他计算节点无法再使用该数值空间;若计算节点的数据库实例关闭或异常崩溃,序列值缓存中剩余未使用的预分配数值将被丢弃;
S403,计算节点的序列值缓存中记录预分配数值区间、数值区间中尚未使用的值以及辅助判断状态的标记;状态标记为STATUS_READY,直接检查预分配数值区间是否有可用值;如果有可用值,则直接使用该值作为本次序列请求的返回值并对应修改数值区间中尚未使用的值;如果无可用值,则预分配一段新的数值区间。
上述技术方案的工作原理为:本实施例采用的方案是序列值缓存与序列对序列相对应,每个序列对象均对应一条序列值缓存记录。所述两者缓存储在各个计算节点的数据库实例的内存。序列值缓存采用预分配的方式从序列的合法值区间中开辟一段独占的数值空间供当前节点独占使用。一旦某段数值空间被开辟并赋给某个计算节点,则其他计算节点无法再使用该数值空间。若计算节点的数据库实例关闭或异常崩溃,序列值缓存中剩余未使用的预分配数值会被丢弃。计算节点的序列值缓存中记录预分配数值区间、数值区间中尚未使用的值以及辅助判断状态的标记。当状态标记为STATUS_READY,可直接检查预分配数值区间是否有可用值;如果有可用值,则直接使用该值作为本次序列请求的返回值并对应修改数值区间中尚未使用的值;如果无可用值,则预分配一段新的数值区间。多个计算节点同时请求预分配数值区间时,该预分配机制通过上文中序列对象当前值在后端存储节点的持久化方法为各个计算节点分配互相无交集的数值区间,实现全局唯一性但不提供全局保序。在上述预分配机制的作用下,序列值缓存可减少分配次数,减少与后端存储节点的交互。为需要生成大量序列值且无需全局保序的场景提供性能可观的加速。
预分配逻辑特征:由计算节点发起,发起前提是计算节点的本地序列数值缓存记录没有可用值。读取序列值在存储节点的路由信息,以“互斥写锁”的方式对持久化的当前值进行访问。读取到的持久化的当前值后,根据预分配数值区间的大小、序列增长步长及方向、序列值区间等信息计算出可分配的数值区间。将分配出数值区间后的序列的新的当前值更新到存储节点并撤销“互斥写锁”,同时修改本地序列值缓存的预分配数值区间,完成本次预分配。
具体的,预分配流程如下:
根据序列对象元数据信息中的路由信息定位后端存储节点。对存储序列当前值的记录执行加锁原语,锁定该记录并读取当前值。
读取到当前值后,根据预分配值的个数和增长步长计算新的当前值。以当前值为100、增长步长为2、预分配20个序列值为例:新的当前值=当前值+(增长步长*预分配个数),即100+(2*20),计算得到新的当前值为140。
将新的当前值持久化到后端存储节点,并对存储当前值的记录执行解锁原语。
将序列值范围为[100,140)的区段更新到预分配值缓存,完成预分配流程。
预分配流程完毕后,从预分配值缓存中取一个最小的可用序列值作为生成的序列值、然后将该值从预分配值缓存中删除。
另外,请参照图2,从部署位置看,该缓存结构位于计算节点的数据库实例中,每个计算节点的数据库实例部署一份该缓存。该缓存的生命周期与计算节点的数据库实例保持一致,由计算节点数据库实例负责管理。
从结构层次上看,序列对象的缓存分为两层:
第一层是根据序列对象名查找序列内存对象的数据结构,通常为log2(n)查找复杂度。本专利说明中不限制该数据结构的类型,在下文及实例图中以map作为例子举例。第一层次的数据结构受当前数据库实例上的序列缓存全局读写锁保护:任何对该数据结构的只读访问至少要持有序列缓存全局读写锁的读锁;任何对该数据结构的修改必须持有序列全局读写锁的写锁。该数据结构提供查找的key值是序列对象名,以[schema_name.sequence_name]作为唯一标识符。该数据结构查找方法返回的内容是序列对象在内存中的指针,可能通过该指针寻址访问到该序列对象缓存。
第二层是各个相互独立的序列缓存对象,内部主要由三个部分构成。第一部分是序列对象的元数据定义信息,包含创建序列时指定的最小值、最大值、起始值、序列增长步长及增长方向、是否循环使用、可预分配值的个数、是否全局保序等。第二部分是保存预分配值区间的缓存,用于序列值的生成及缓存加速。当没有全局保序要求时,各个计算节点数据库实例可每次预分配多个序列值;下次响应序列值生成请求时,直接从缓存中取未使用的值。第三部分是该序列对象的互斥锁,提供对该缓存对象的互斥。通过该互斥锁,预分配序列值或从预分配值缓存中取数据时可以仅对第一层的数据结构加读锁,这样降低了序列缓存全局读写锁的竞争。
从流程上看,序列对象缓存包含两个数据流程:
第一个数据流程主要涉及序列对象元数据信息的读加载、写持久化。为保证序列对象缓存和序列元数据信息的一致,计算节点的数据库实例在启动期间需要遍历该计算节点上的序列对象元数据信息,并将其全量数据导入到序列对象缓存。当用户请求创建、删除、修改序列对象时,除修改序列缓存的第一层数据结构及序列内存对象外,相应的元数据信息修改也会同步持久化写入到当前缓存所在的计算节点数据库实例。
第二个数据流程涉主要涉及预分配序列值时,序列对象当前值的变更及持久化。需要注意,序列对象当前值持久化在后端存储节点。
上述技术方案的有益效果为:采用本实施例提供的方案为提高分布式数据库系统中并发获取序列值的吞吐量,本实施例引入了序列对象值缓存和预分配逻辑,实现本地缓存加速。
在另一实施例中,所述S500中对本地序列进行缓存并发访问控制处理包括:
S501,计算节点的序列对象缓存使用读写锁实现缓存对象的保护并提供并发访问控制;当创建、删除序列对象时,获取写锁并对缓存内的条目进行增删;SQL语句parse阶段查询、获取序列值、修改序列对象操作时只对序列对象缓存使用读锁;
S502,每个序列对象的缓存条目内部包含一个互斥锁,用于获取序列值、修改序列对象的并发控制;通过二级加锁模式减少锁等待,提高并发处理能力。
所述S500中全局保序控制处理包括:
S503,全局保序作为序列的属性在创建序列时被指定;
S504,当指定全局属性后,预分配数值区间时被强制分配一个可用数值,该数值被消费掉,新的序列请求到来时,重新进行一次预分配流程并强制读最新的当前值的操作;
所述S500中对序列对象版本进行检查包括:
S505,序列对象在创建时,为其分配一个初始版本号,默认值为0;
S506,每次修改该序列的属性成功后,对其版本号+1;当需要检查序列版本时,访问序列对象时记录序列当前的版本;在下次访问时,检查当前序列对象版本号是否与上次访问的版本号一致。
上述技术方案的工作原理为:本实施例采用的方案是为优化高并发下序列请求的锁竞争:计算节点的序列对象缓存使用读写锁实现缓存对象的保护并提供并发访问控制。只有创建、删除序列对象时,才获取写锁并对缓存内的条目进行增删。SQL语句parse阶段查询、获取序列值、修改序列对象等操作只对序列对象缓存使用读锁。每个序列对象的缓存条目内部包含一个互斥锁,用于获取序列值、修改序列对象的并发控制。在正常的生产系统中,通过二级加锁模式:“global_read_lock->seq_item_mutex”减少锁等待提高并发处理能力。
当序列对象需要在分布式数据库系统中的多个计算节点全局保序时,通过该方式实现全局保序:全局保序作为序列的属性在创建序列时被指定。当指定全局属性后,预分配数值区间时被强制分配一个可用数值,然后该数值马上被消费掉。新的序列请求到来时,会再走一次预分配流程并强制读最新的当前值。弊端是序列的生成速度会变慢。此方式实现全局保序也可大幅提高代码复用度。
序列对象版本控制:序列对象缓存在创建或初次加载至内存时,为其分配一个初始版本号,默认值为0。每次修改该序列的属性成功后(执行alter squence语句),对其版本号+1。在需要检查序列版本的场景中,访问序列对象时记录序列当前的版本;在下次访问时,检查当前序列对象版本号是否与上次访问的版本号一致。
在另一实施例中,本实施例提供一种分布式数据库中针对序列的处理系统,请参照图3,该处理系统包括:
序列操作语法解析模块,用于解析创建、删除、修改序列的SQL语句;解析获取序列的SQL请求;解析数据库序列的运维语句;
序列操作执行模块,用于对分布式数据库系统的主要逻辑进行控制;
序列对象元数据管理模块,用于序列对象元数据信息的持久化和加载;在计算节点数据库实例启动期间,读取所有的序列对象持久化信息,加载到序列对象缓存;保证序列对象元数据信息和序列对象缓存的一致性;在计算节点数据库实例运行期间,为创建、修改、删除序列对象提供元数据信息的持久化接口;
序列对象MDL锁模块,用于query、dml语句和ddl语句间、ddl和ddl语句间的并发访问控制;
存储节点连接管理及访问模块,用于承载计算节点和存储节点间的通讯请求;内部记录存储节点的路由信息,按照特定的通信协议进行通讯;
存储节点序列当前值持久化存储模块,用于持久化序列对象的当前值。
上述技术方案的工作原理为:本实施例采用的方案是序列操作语法解析模块归属于数据库系统中的语法解析模块。主要负责:解析创建、删除、修改序列的SQL语句;解析获取序列的SQL请求;解析数据库序列的运维语句(如展示所有序列及序列当前值等)。该模块在解析获取序列值的SQL语句时,需要访问计算节点本地的序列对象缓存以确定语句中出现的标识符是否标识序列对象。
序列操作执行模块是当前分布式数据库系统中的主要逻辑控制模块,承载本申请中大部分方法的控制逻辑;
输入语句是序列的创建请求时,该模块先访问本地的序列对象缓存、检查是否已存在同名序列或同名表对象。若存在同名对象时,则拒绝创建序列并返回错误信息。检查通过后,该模块通过对象MDL锁模块对序列对象名加互斥锁、保证对同名对象操作的互斥。接着通过序列对象元数据管理模块:选择一个后端存储节点存储当前值(初始值为无效值);持久化序列对象元数据信息;添加序列对象到本地缓存。输入语句是序列的删除请求时,该模块先访问本地的序列对象缓存、检查是否已存在同名序列对象。若请求删除的序列对象不存在,则拒绝删除请求并返回错误信息。检查通过后,通过对象MDL锁模块对序列对象加互斥锁,保证对同名对象操作的互斥。接着通过序列对象元数据管理模块删除该序列在计算节点及后端存储节点的持久化信息,同时从本地缓存中删除该序列的信息。输入语句是序列的修改请求时,该模块先访问本地的序列对象缓存、检查是否已存在同名序列对象。若请求修改的序列对象不存在,则绝句修改请求并返回错误信息。检查通过后,通过对象MDL锁模块对序列对象加互斥锁,保证对同名对象操作的互斥。接着执行对该序列对象的修改,同时更修序列缓存信息和持久化信息。输入语句是序列值的获取请求时,在语法解析模块已经校验过请求的合法性。此处直接访问序列缓存,并按照本专利说明所述方法生成序列值。
另外,序列对象元数据管理负责序列对象元数据信息的持久化和加载。在计算节点数据库实例启动期间,该模块读取所有的序列对象持久化信息,加载到序列对象缓存。保证序列对象元数据信息和序列对象缓存的一致性。在计算节点数据库实例运行期间,该模块为创建、修改、删除序列对象提供元数据信息的持久化接口。
序列对象MDL锁模块属于数据库系统中的一个必备模块,在本系统中需要支持对序列对象加MDL锁。数据库系统中使用DDL语句修改对象时需要获取metadata lock,简称为MDL。MDL锁主要用于query、dml语句和ddl语句间、ddl和ddl语句间的并发访问控制。一般地,dml和query语句会请求对数据库对象名加共享锁,而ddl会加排他锁。序列对象的创建、删除、修改语句属于ddl,对序列的请求属于dml。执行这几种操作时需要依托MDL锁模块进行合理的加锁、释放锁。
存储节点连接管理及访问模块用于承载计算节点和存储节点间的通讯请求。内部记录存储节点的路由信息,按照特定的通信协议进行通讯。
存储节点序列当前值持久化存储模块与上述的序列对象元数据管理中的元数据信息持久化类似,区别是该模块仅持久化序列对象的当前值。
综上,通过本实施例提供的系统可针对性地满足用户对序列的差异化需求。对只需要生成全局唯一值、不关心序列值全局保序的用户,可通过预分配缓存加速满足高并发请求。对要求序列值全局严格保序的用户,可牺牲部分性能实现分布式全局严格保序。
在另一实施例中,所述序列操作执行模块包括:
创建请求子模块,用于输入语句是序列的创建请求时,访问本地的序列对象缓存,检查是否已存在同名序列或同名表对象;若存在同名对象时,则拒绝创建序列并返回错误信息;若不存在同名对象时,检查通过,通过对象MDL锁模块对序列对象名加互斥锁、保证对同名对象操作的互斥;通过序列对象元数据管理模块选择一个后端存储节点存储当前值;持久化序列对象元数据信息;以及添加序列对象到本地缓存。
具体的,请参照图4,用户请求创建序列时,首先会在当前计算节点的数据库实例上请求MDL独占锁。MDL独占锁请求成功后,该数据库实例上其它尝试对同名对象的访问都将被阻塞。
获取MDL独占锁成功后,会检查当前用户是否有创建序列对象的权限。如果当前用户无权限则直接报错返回。
权限校验通过后,接着进行合法性检查:在当前计算节点的数据库实例中检查是否有同名序列或同名的其它对象。若存在同名的其它类型对象且和序列对象不相容、或存在同名的序列对象,则报错返回。其中,检查其它类型的对象需要查询数据库实例的元数据字典缓存。检查同名序列对象时,查询当前计算节点数据库实例上的序列对象缓存。查询序列对象缓存时,需要持有序列缓存全局读锁。
合法性检查通过后,进入序列对象的创建阶段:首先需要将持有的序列缓存全局读锁升级为全局写锁,保护其用于查询的数据结构不被其它线程修改、同时保证其它线程不会读取数据结构变更过程中的不完整数据。
获取到序列缓存全局写锁后,根据需创建的序列对象的元数据信息向序列缓存中添加新的序列对象,同时写入两条持久化记录:第一条持久化记录写入位置是当前计算节点的数据库实例,用于存储该序列对象的元数据信息,包含序列最小值、最大值、序列步长及增长方向、是否全局保序、缓存预分配个数等属性。除这部分通用属性外,元数据信息还记录第二条持久化记录所在存储节点的路由信息。第二条持久化记录存储在后端存储节点,记录中不含序列对象的属性信息,仅记录该序列的当前值。由于是新建的序列,初始化值固定为一个特定值作为Invalid标记,表示该序列对象还未产生任何序列值。上述两条持久化记录写入成功后,序列对象创建成功。
序列对象创建成功后,需要同步到分布式数据库系统中的其它计算节点。具体的同步流程不在本专利说明中体现。需要注意的是:其它计算节点同步序列创建操作时,仅向本地序列缓存添加该序列对象、且仅写入本地序列对象元数据持久化记录,共用后端存储节点已创建好的序列当前值记录。
获取请求子模块,用于输入语句是序列值的获取请求时,在语法解析模块已经校验过请求的合法性;直接访问序列缓存,并按照分布式数据库中针对序列的处理方法生成序列值。
在另一实施例中,所述序列操作执行模块还包括:
删除请求子模块,用于输入语句是序列的删除请求时,访问本地的序列对象缓存;检查是否已存在同名序列对象;若请求删除的序列对象不存在,则拒绝删除请求并返回错误信息;若请求删除的序列对象存在,检查通过,通过对象MDL锁模块对序列对象加互斥锁,保证对同名对象操作的互斥;通过序列对象元数据管理模块删除该序列在计算节点及后端存储节点的持久化信息,同时从本地缓存中删除该序列的信息。
具体的,请参照图5,用户请求删除序列时,首先会在当前计算节点的数据库实例上请求MDL独占锁。MDL独占锁请求成功后,该数据库实例上其它尝试对同名对象的访问都将被阻塞。
获取MDL独占锁成功后,会检查当前用户是否有删除序列对象的权限。如果当前用户无权限则直接报错返回。
权限校验通过后,接着进行合法性检查:在当前计算节点的数据库实例中检查是否有同名序列存在。若不存在同名序列,则直接报错返回。查询序列对象缓存时,需要持有序列缓存全局读锁。
合法性检查通过后,进入序列对象的删除阶段:首先需要将持有的序列缓存全局读锁升级为全局写锁,保护其用于查询的数据结构不被其它线程修改、同时保证其它线程不会读取数据结构变更过程中的不完整数据。
获取到序列缓存全局写锁后,根据目标序列对象名称从序列缓存中删除序列对象,同时删除当前计算节点实例和后端存储节点的两条持久化记录。上述两条持久化记录删除成功后,序列对象删除操作成功。
序列对象删除完毕后,需要同步到分布式数据库系统中的其它计算节点。需要注意的是:其它计算节点同步序列删除操作时,仅删除本地序列缓中的目标序列对象、同时删除本地序列对象元数据持久记录。此时后端存储节点共用的序列当前值记录已处于删除状态。
修改请求子模块,用于输入语句是序列的修改请求时,访问本地的序列对象缓存,检查是否已存在同名序列对象;若请求修改的序列对象不存在,则拒绝修改请求并返回错误信息;若请求修改的序列对象存在,检查通过,通过对象MDL锁模块对序列对象加互斥锁,保证对同名对象操作的互斥;执行对该序列对象的修改,同时更新修序列缓存信息和持久化信息。
具体的,请参照图6,用户请求修改序列时,首先会在当前计算节点的数据库实例上请求MDL独占锁。MDL独占锁请求成功后,该数据库实例上其它尝试对同名对象的访问都将被阻塞。
获取MDL独占锁成功后,会检查当前用户是否有修改序列对象的权限。如果当前用户无权限则直接报错返回。
权限校验通过后,接着进行合法性检查:在当前计算节点的数据库实例中检查是否有同名序列存在。若不存在同名序列,则直接报错返回。查询序列对象缓存时,需要持有序列缓存全局读锁。
合法性检查通过后,进入序列对象的修改阶段:首先需要将持有的序列缓存全局读锁升级为全局写锁,保护其用于查询的数据结构不被其它线程修改、同时保证其它线程不会读取数据结构变更过程中的不完整数据。
获取到序列缓存全局写锁后,按目标序列对象名称从序列缓存中定位该序列对象,然后根据目标序列的变动更新序列对象,同时更新当前计算节点实例和后端存储节点的两条持久化记录。其中:更新后端存储节点的持久化记录时将序列当前值置为创建序列时的Invalid标记值,同时清空序列缓存对象的预分配值。
序列对象修改完毕后,需要同步到分布式数据库系统中的其它计算节点。需要注意的是:其它计算节点同步序列修改操作时,仅修改本地序列缓中的目标序列对象、同时修改本地序列对象元数据持久记录。此时后端存储节点共用的序列当前值记录已处于invalid标记值。
在另一实施例中,提供非保序获取序列值方法,请参照图7,当前计算节点的数据库实例上存在多个会话请求同一序列对象的序列值时,通过序列内存对象中的互斥锁保证当前只有一个会话独占该序列对象。
获取序列对象的互斥锁后,进入生成序列值的逻辑:首先检查序列对象在本地的预分配值缓存中是否有可用值。存在可用值时,直接使用该值作为生成的序列值、然后将该值从预分配值缓存中删除。若本地预分配值缓存中没有可用值,则执行一次预分配逻辑。
在另一实施例中,本实施例还提供一种分布式数据库中针对序列的处理装置,该处理装置包括:处理器;以及存储器,用于存储可执行指令;其中,所述可执行指令被执行时,使得所述处理器执行本申请实施例中分布式数据库中针对序列的处理方法。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

Claims (9)

1.一种分布式数据库中针对序列的处理方法,其特征在于,包括:
S100,接收序列值获取请求;
S200,对序列对象元数据进行存储及缓存处理;
S300,对序列对象值进行存取及持久化处理;
S400,对序列对象值进行缓存、预分配及缓存加速处理;
S500,对本地序列进行缓存并发访问控制处理;以及全局保序控制处理,以及对序列对象版本进行检查;
所述S500中对本地序列进行缓存并发访问控制处理包括:
S501,计算节点的序列对象缓存使用读写锁实现缓存对象的保护并提供并发访问控制;当创建、删除序列对象时,获取写锁并对缓存内的条目进行增删;SQL语句parse阶段查询、获取序列值、修改序列对象操作时只对序列对象缓存使用读锁;
S502,每个序列对象的缓存条目内部包含一个互斥锁,用于获取序列值、修改序列对象的并发控制;通过二级加锁模式减少锁等待,提高并发处理能力;
所述S500中全局保序控制处理包括:
S503,全局保序作为序列的属性在创建序列时被指定;
S504,当指定全局属性后,预分配数值区间时被强制分配一个可用数值,该数值被消费掉,新的序列请求到来时,重新进行一次预分配流程并强制读最新的当前值的操作;
所述S500中对序列对象版本进行检查包括:
S505,序列对象在创建时,为其分配一个初始版本号,默认值为0;
S506,每次修改该序列的属性成功后,对其版本号+1;当需要检查序列版本时,访问序列对象时记录序列当前的版本;在下次访问时,检查当前序列对象版本号是否与上次访问的版本号一致。
2.根据权利要求1所述的分布式数据库中针对序列的处理方法,其特征在于,所述S100包括:
S101,序列值获取请求包含在SQL语句中,根据需返回的行数确定需要的序列值个数;
S102,当单并发获取单个序列值时,不考虑并发问题;
S103,当本地多并发获取序列值时,按请求的目标序列对象进行分组;如存在对某个序列对象的多个并发请求,对该序列上的多个并发请求做互斥、排队等待处理;
S104,当分布式数据库系统的多个节点同时接收序列值获取请求时,各个节点生成的序列值是全局唯一,当创建序列对象时设置了保序属性时,各个节点按照全局单调递增保序。
3.根据权利要求1所述的分布式数据库中针对序列的处理方法,其特征在于,所述S200包括:
S201,每个计算节点包含一份记录序列对象的元数据定义和对应的元数据定义缓存;序列对象在创建时通过分布式数据库内部的同步机制将序列对象的DDL定义同步到各个计算节点;其它计算节点收到创建序列的消息后,以slave角色在内部执行一次序列对象创建,并保存一份该对象的定义,同时加载到序列对象缓存;
S202,序列对象缓存用于语句的解析,参与判断语句中的序列值请求是否合法并提供访问加速;请求访问数据库序列对象时,直接检查该对象是否存在于序列对象缓存中;
S203,分布式数据库的计算节点在启动时,访问序列对象的持久化元数据记录,并将其加载到数据库对象缓存;在计算节点提供服务期间,序列对象缓存内某个序列的生命周期与该序列对象的生命周期一致,直至删除序列对象。
4.根据权利要求1所述的分布式数据库中针对序列的处理方法,其特征在于,所述S300包括:
S301,序列对象的当前值存储并持久化在后端存储节点;访问或修改序列当前值时,通过元数据路由信息定位到后端存储节点;
S302,根据访问请求的类型对存储序列当前值的持久化内容加共享读锁或互斥写锁的同步原语;访问请求的类型包括:读取或修改;
S303,后端存储节点支持以序列对象为粒度、多个计算节点对此持久化记录的并发访问控制;实现方式包括:读写锁、数据库表内记录的行锁。
5.根据权利要求1所述的分布式数据库中针对序列的处理方法,其特征在于,所述S400包括:
S401,序列值缓存与序列对象相对应,每个序列对象均对应一条序列值缓存记录;两者缓存储在各个计算节点的数据库实例的内存;
S402,序列值缓存采用预分配的方式从序列的合法值区间中设置一段独占的数值空间供当前节点独占使用;一旦某段数值空间被设置并赋给某个计算节点,则其他计算节点无法再使用该数值空间;若计算节点的数据库实例关闭或异常崩溃,序列值缓存中剩余未使用的预分配数值将被丢弃;
S403,计算节点的序列值缓存中记录预分配数值区间、数值区间中尚未使用的值以及辅助判断状态的标记;状态标记为STATUS_READY,直接检查预分配数值区间是否有可用值;如果有可用值,则直接使用该值作为本次序列请求的返回值并对应修改数值区间中尚未使用的值;如果无可用值,则预分配一段新的数值区间。
6.一种分布式数据库中针对序列的处理系统,其特征在于,包括:
序列操作语法解析模块,用于解析创建、删除、修改序列的SQL语句;解析获取序列的SQL请求;解析数据库序列的运维语句;
序列操作执行模块,用于对分布式数据库系统的主要逻辑进行控制;
序列对象元数据管理模块,用于序列对象元数据信息的持久化和加载;在计算节点数据库实例启动期间,读取所有的序列对象持久化信息,加载到序列对象缓存;保证序列对象元数据信息和序列对象缓存的一致性;在计算节点数据库实例运行期间,为创建、修改、删除序列对象提供元数据信息的持久化接口;
序列对象MDL锁模块,用于query、dml语句和ddl语句间、ddl和ddl语句间的并发访问控制;
存储节点连接管理及访问模块,用于承载计算节点和存储节点间的通讯请求;内部记录存储节点的路由信息,按照特定的通信协议进行通讯;
存储节点序列当前值持久化存储模块,用于持久化序列对象的当前值。
7.根据权利要求6所述的分布式数据库中针对序列的处理系统,其特征在于,所述序列操作执行模块包括:
创建请求子模块,用于输入语句是序列的创建请求时,访问本地的序列对象缓存,检查是否已存在同名序列或同名表对象;若存在同名对象时,则拒绝创建序列并返回错误信息;若不存在同名对象时,检查通过,通过对象MDL锁模块对序列对象名加互斥锁、保证对同名对象操作的互斥;通过序列对象元数据管理模块选择一个后端存储节点存储当前值;持久化序列对象元数据信息;以及添加序列对象到本地缓存;
获取请求子模块,用于输入语句是序列值的获取请求时,在语法解析模块已经校验过请求的合法性;直接访问序列缓存,并按照分布式数据库中针对序列的处理方法生成序列值。
8.根据权利要求6所述的分布式数据库中针对序列的处理系统,其特征在于,所述序列操作执行模块还包括:
删除请求子模块,用于输入语句是序列的删除请求时,访问本地的序列对象缓存;检查是否已存在同名序列对象;若请求删除的序列对象不存在,则拒绝删除请求并返回错误信息;若请求删除的序列对象存在,检查通过,通过对象MDL锁模块对序列对象加互斥锁,保证对同名对象操作的互斥;通过序列对象元数据管理模块删除该序列在计算节点及后端存储节点的持久化信息,同时从本地缓存中删除该序列的信息;
修改请求子模块,用于输入语句是序列的修改请求时,访问本地的序列对象缓存,检查是否已存在同名序列对象;若请求修改的序列对象不存在,则拒绝修改请求并返回错误信息;若请求修改的序列对象存在,检查通过,通过对象MDL锁模块对序列对象加互斥锁,保证对同名对象操作的互斥;执行对该序列对象的修改,同时更新修序列缓存信息和持久化信息。
9.一种分布式数据库中针对序列的处理装置,其特征在于,包括:处理器;以及
存储器,用于存储可执行指令;其中,所述可执行指令被执行时,使得所述
处理器执行权利要求1至5所述的分布式数据库中针对序列的处理方法。
CN202310041225.0A 2023-01-12 2023-01-12 一种分布式数据库中针对序列的处理方法、装置及系统 Active CN116303661B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310041225.0A CN116303661B (zh) 2023-01-12 2023-01-12 一种分布式数据库中针对序列的处理方法、装置及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310041225.0A CN116303661B (zh) 2023-01-12 2023-01-12 一种分布式数据库中针对序列的处理方法、装置及系统

Publications (2)

Publication Number Publication Date
CN116303661A CN116303661A (zh) 2023-06-23
CN116303661B true CN116303661B (zh) 2023-09-12

Family

ID=86782422

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310041225.0A Active CN116303661B (zh) 2023-01-12 2023-01-12 一种分布式数据库中针对序列的处理方法、装置及系统

Country Status (1)

Country Link
CN (1) CN116303661B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117519945A (zh) * 2023-12-07 2024-02-06 北京优炫软件股份有限公司 一种数据库资源调度方法、装置及系统

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111427966A (zh) * 2020-06-10 2020-07-17 腾讯科技(深圳)有限公司 数据库事务处理方法、装置及服务器
CN111752945A (zh) * 2020-05-29 2020-10-09 南京南瑞继保电气有限公司 一种基于容器和层次模型的时序数据库数据交互方法和系统
CN111796772A (zh) * 2020-07-07 2020-10-20 西北工业大学 缓存的管理方法、缓存节点及分布式存储系统
CN113392126A (zh) * 2021-08-17 2021-09-14 北京易鲸捷信息技术有限公司 基于分布式数据库的执行计划缓存及读取方法
WO2022002044A1 (zh) * 2020-06-29 2022-01-06 中兴通讯股份有限公司 分布式数据库的处理方法及装置、网络设备和计算机可读存储介质

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10585873B2 (en) * 2017-05-08 2020-03-10 Sap Se Atomic processing of compound database transactions that modify a metadata entity

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111752945A (zh) * 2020-05-29 2020-10-09 南京南瑞继保电气有限公司 一种基于容器和层次模型的时序数据库数据交互方法和系统
CN111427966A (zh) * 2020-06-10 2020-07-17 腾讯科技(深圳)有限公司 数据库事务处理方法、装置及服务器
WO2022002044A1 (zh) * 2020-06-29 2022-01-06 中兴通讯股份有限公司 分布式数据库的处理方法及装置、网络设备和计算机可读存储介质
CN111796772A (zh) * 2020-07-07 2020-10-20 西北工业大学 缓存的管理方法、缓存节点及分布式存储系统
CN113392126A (zh) * 2021-08-17 2021-09-14 北京易鲸捷信息技术有限公司 基于分布式数据库的执行计划缓存及读取方法

Also Published As

Publication number Publication date
CN116303661A (zh) 2023-06-23

Similar Documents

Publication Publication Date Title
US11086560B2 (en) Data storage access method, device and apparatus for persistent memory
US10803047B2 (en) Accessing data entities
US10248655B2 (en) File storage system, cache appliance, and method
US6598058B2 (en) Method and apparatus for cross-node sharing of cached dynamic SQL in a multiple relational database management system environment
US6321235B1 (en) Global caching and sharing of SQL statements in a heterogeneous application environment
JP4612710B2 (ja) トランザクション並行制御方法、データベース管理システム、およびプログラム
CN111386522B (zh) 用于数据存储的系统和方法
US20070005604A1 (en) Supporting replication among a plurality of file operation servers
US9460144B2 (en) Lock acceleration
JPH05210637A (ja) 同時アクセス管理方法
JPH10222407A (ja) プロセスオーバーヘッド及びデータベースサーバからの冗長な検索を減少するように同じプロセスにおける多数のデータベーストランザクションを処理する方法
CN112035420B (zh) 数据共享方法、共享设备和系统
CN116303661B (zh) 一种分布式数据库中针对序列的处理方法、装置及系统
CN110750507A (zh) 面向dfs的全局命名空间下的客户端持久缓存方法及系统
CN117120998A (zh) 用于读取树数据结构中保存的数据的方法和装置
CN113742253B (zh) 存储介质管理方法、装置、设备以及计算机可读存储介质
JP2023511743A (ja) 確率的データ構造を使用した要求の低減
US7185029B1 (en) Method and apparatus for maintaining, and updating in-memory copies of the first and second pointers to reference the new versions of the first and second control structures that indicate available and allocated portions of usable space in the data file
CN116821058B (zh) 元数据访问方法、装置、设备及存储介质
CA2282999C (en) Method and apparatus for cross-node sharing of instructions in a multiple node relational database management system environment
KR20050054380A (ko) 데이터베이스 관리시스템 및 그 시스템에서 시스템테이블에 대한 동시성 제어 방법
CA2249066C (en) Sharing of dynamic sql statements in a heterogeneous application environment
JPH0644136A (ja) メモリ制御装置
Kogut Report on Implementing Caching for ObServer Clients
JPH06309203A (ja) データベース処理システムの排他制御方法

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