CN115033595A - 基于超级节点的查询语句处理方法、系统、装置和介质 - Google Patents
基于超级节点的查询语句处理方法、系统、装置和介质 Download PDFInfo
- Publication number
- CN115033595A CN115033595A CN202210956480.3A CN202210956480A CN115033595A CN 115033595 A CN115033595 A CN 115033595A CN 202210956480 A CN202210956480 A CN 202210956480A CN 115033595 A CN115033595 A CN 115033595A
- Authority
- CN
- China
- Prior art keywords
- statistical information
- query statement
- scoring
- execution plan
- plan
- 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.)
- Granted
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/242—Query formulation
- G06F16/2433—Query languages
-
- 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/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
-
- 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
- G06F16/2453—Query optimisation
-
- 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
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2462—Approximate or statistical queries
-
- 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/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Databases & Information Systems (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)
- Computing Systems (AREA)
- Fuzzy Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请涉及一种基于超级节点的查询语句处理方法、系统、装置和介质,通过获取目标查询语句,生成目标查询语句的候选执行计划,候选执行计划包括多个plan node,获取代价模型对候选执行计划的打分结果,选取分数最高的候选执行计划作为目标执行计划,其中,代价模型根据统计信息表的信息并基于超级节点的CBO规则对所有plan node打分,统计信息表用于记录查询语句中包含超级节点相关的统计信息,基于超级节点的CBO规则为查询语句中出现超级节点的概率越低,则打分越高,候选执行计划的所有plan node打分结果相加为候选执行计划的打分结果,通过规避冗余计算,解决了相关技术中对超级节点的处理会占用很大的内存资源,导致查询性能下降,查询效率低的问题。
Description
技术领域
本申请涉及图数据库技术领域,特别是涉及基于超级节点的查询语句处理方法、系统、装置和介质。
背景技术
随着计算、网络、存储、虚拟化、大数据、云计算、分布式图数据库及内存计算相关技术的综合发展,催生了图数据库技术的升级换代,并且随着图数据库技术的升级换代,对于图数据库中存在的超级节点的高效、实时处理的需求与日俱增。其中,图数据库是专门用于存储图的一种数据库,图数据库基于图结构建模数据,利用点,边来存储数据和描述实体之间的联系,而超级节点是图中出入度很高的点,一个点如果被很多边连接即形成超级节点。在相关技术中,对超级节点的处理往往会占用很大的内存资源,导致查询性能下降,查询效率低。
目前针对相关技术中对超级节点的处理会占用很大的内存资源,查询效率低的问题,尚未提出有效的解决方案。
发明内容
本申请实施例提供了一种基于超级节点的查询语句处理方法、系统、装置和介质,以至少解决相关技术中对超级节点的处理会占用很大的内存资源,查询效率低的问题。
第一方面,本申请实施例提供了一种基于超级节点的查询语句处理方法,所述方法包括:
获取目标查询语句,根据所述目标查询语句生成候选执行计划,所述候选执行计划包括多个计划节点;
获取代价模型对所述候选执行计划的打分结果,选取分数最高的所述候选执行计划作为目标执行计划;
其中,所述代价模型根据统计信息表的信息并基于超级节点的CBO规则对所述候选执行计划的所有计划节点打分,所述候选执行计划的所有计划节点打分结果相加为所述候选执行计划的打分结果;
其中,所述统计信息表用于记录查询语句中包含超级节点相关的统计信息,所述基于超级节点的CBO规则为查询语句中出现超级节点的概率越低,则打分越高。
在其中一些实施例中,获取目标查询语句,根据所述目标查询语句生成候选执行计划包括:
获取目标查询语句,根据所述目标查询语句的语义生成未优化的逻辑计划,根据RBO索引选取规则生成所述未优化的逻辑计划的候选执行计划。
在其中一些实施例中,所述代价模型根据统计信息表的信息并基于超级节点的CBO规则对所述候选执行计划的所有计划节点打分包括:
所述代价模型根据统计信息表的信息并基于代价模型公式对所述候选执行计划的所有计划节点打分;
所述代价模型公式定义为:
c(pattern)=1/k2-k1*k1*100
t=(1/(q1*p1+q2*p2+q3*p3))
t(Expand)=c(pattern)
t'=f
c=r+s*(o*t+t')
c(Expands)=c(Expand1)*(1+j1)+c(Expand2)*(1+j2)+c(Expand3)*(1+j3)...
C=c1+c2+...+cn
r表示RBO代价,s表示CBO/RBO相对代价系数,o表示超级节点/其他CBO相对打分系数,t表示超级节点CBO规则对计划节点的打分,若需要对Expand类型特殊计算,则表示为t(Expand),t'表示其他CBO规则对计划节点的打分,f表示数据选择度打分,取值区间为[0,1],p1由统计信息一表决定,如果节点id为超级节点则值为1,否则为0,p2由统计信息二表决定,值为超级节点的概率或平均出入度,p3由统计信息三表决定,值为超级节点的概率,q1表示统计信息一打分系数,q2表示统计信息二打分系数,q3表示统计信息二打分系数,k1表示pattern起点是超级节点的概率,k2表示pattern终点是超级节点的概率,c(pattern)表示pattern打分,j表示相连Expand的剪枝增益系数,默认从10开始指数递减,若c(Expand)小于0,则剪枝增益系数为0,c表示全局计划节点打分,需要对多个相连的Expand整体打分,则表示为c(Expands),C表示全局plan打分。
在其中一些实施例中,所述统计信息表包括统计信息一表、统计信息二表和统计信息三表,其中,所述统计信息一表用于记录超级节点的节点id和出入度,所述统计信息二表用于记录标签为超级节点的概率和平均出入度,所述统计信息三表用于记录拓扑结构、拓扑起点出现超级节点的概率和拓扑终点出现超级节点的概率。
在其中一些实施例中,所述统计信息一表的收集过程包括:
通过边分割方法对图数据进行数据分片,获得多个分片,将实体数量大于第一预设值和边点比大于第二预设值的分片,记为目标分片;
获取所述目标分片中每种标签包含的点数量,将所述点数量少于预设值的标签记为目标标签;
根据所有所述目标标签的节点id和出入度,获得所述统计信息一表。
在其中一些实施例中,所述统计信息二表的收集过程包括:
根据标签的超级节点数和点总数的比值,获得所述标签为超级节点的概率,并根据查询语句获取所述标签的平均出入度;
根据所有所述标签为超级节点的概率和平均出入度,获得所述统计信息二表;
所述统计信息三表的收集过程包括:
获取拓扑结构,根据查询语句获取所述拓扑结构中拓扑起点出现超级节点的概率和拓扑终点出现超级节点的概率;
根据所有拓扑结构以及对应的拓扑起点出现超级节点的概率和拓扑终点出现超级节点的概率,获得所述统计信息三表。
在其中一些实施例中,在所述目标查询语句不能被优化的情况下,所述方法还包括:
根据所述统计信息表判断所述目标查询语句是否为慢查询语句,若判断结果为是,则根据语句的调度策略进行多语句调度优化。
第二方面,本申请实施例提供了一种基于超级节点的查询语句处理系统,所述系统包括包括获取模块和打分模块,
所述获取模块,用于获取目标查询语句,根据所述目标查询语句生成候选执行计划,所述候选执行计划包括多个计划节点;
所述打分模块,用于获取代价模型对所述候选执行计划的打分结果,选取分数最高的所述候选执行计划作为目标执行计划;
其中,所述代价模型根据统计信息表的信息并基于超级节点的CBO规则对所述候选执行计划的所有计划节点打分,所述候选执行计划的所有计划节点打分结果相加为所述候选执行计划的打分结果;
其中,所述统计信息表用于记录查询语句中包含超级节点相关的统计信息,所述基于超级节点的CBO规则为查询语句中出现超级节点的概率越低,则打分越高。
第三方面,本申请实施例提供了一种电子装置,包括存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上述第一方面所述的基于超级节点的查询语句处理方法。
第四方面,本申请实施例提供了一种存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上述第一方面所述的基于超级节点的查询语句处理方法。
相比于相关技术,本申请实施例提供的基于超级节点的查询语句处理方法,通过获取目标查询语句,根据目标查询语句生成候选执行计划,候选执行计划包括多个计划节点,获取代价模型对候选执行计划的打分结果,选取分数最高的候选执行计划作为目标执行计划,其中,代价模型根据统计信息表的信息并基于超级节点的CBO规则对候选执行计划的所有计划节点打分,候选执行计划的所计划节点打分结果相加为候选执行计划的打分结果,其中,统计信息表用于记录查询语句中包含超级节点相关的统计信息,基于超级节点的CBO规则为查询语句中出现超级节点的概率越低,则打分越高,通过规避冗余计算,即规避和查询语句最终结果无关的涉及超级节点的中间计算来优化查询语句性能,解决了相关技术中对超级节点的处理往往会占用很大的内存资源,导致查询性能下降,查询效率低的问题。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1是根据本申请实施例的基于超级节点的查询语句处理方法的流程图;
图2是根据本申请实施例的基于超级节点的查询语句处理系统的结构框图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行描述和说明。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。基于本申请提供的实施例,本领域普通技术人员在没有作出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。此外,还可以理解的是,虽然这种开发过程中所作出的努力可能是复杂并且冗长的,然而对于与本申请公开的内容相关的本领域的普通技术人员而言,在本申请揭露的技术内容的基础上进行的一些设计,制造或者生产等变更只是常规的技术手段,不应当理解为本申请公开的内容不充分。
在本申请中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域普通技术人员显式地和隐式地理解的是,本申请所描述的实施例在不冲突的情况下,可以与其它实施例相结合。
除非另作定义,本申请所涉及的技术术语或者科学术语应当为本申请所属技术领域内具有一般技能的人士所理解的通常意义。本申请所涉及的“一”、“一个”、“一种”、“该”等类似词语并不表示数量限制,可表示单数或复数。本申请所涉及的术语“包括”、“包含”、“具有”以及它们任何变形,意图在于覆盖不排他的包含;例如包含了一系列步骤或模块(单元)的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可以还包括没有列出的步骤或单元,或可以还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。本申请所涉及的“连接”、“相连”、“耦接”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电气的连接,不管是直接的还是间接的。本申请所涉及的“多个”是指大于或者等于两个。“和/或”描述关联对象的关联关系,表示可以存在三种关系,例如,“A和/或B”可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。本申请所涉及的术语“第一”、“第二”、“第三”等仅仅是区别类似的对象,不代表针对对象的特定排序。
在对本发明的实施例进行具体介绍之前,先对其中使用到的部分术语作如下解释:
数据库:数据库是用来管理数据的基础软件。数据库会提供数据持久化以及对这些数据的增删改查等功能,用户通过数据库语言(比如sql、cypher)和数据库交互来完成数据处理业务逻辑。
图数据库:专门用于存储图的一种数据库。图数据库基于图结构建模数据,利用点,边来存储数据和描述实体之间的联系。比如微博场景下某学生关注了某明星,通过创建两种点类型(学生和明星)和一种边类型(关注),然后用边连接这两个点来建模数据。
超级节点:图中出入度很高的点。一个点如果被很多边连接即形成超级节点(比如某明星被很多的人关注),对于超级节点的处理往往会占用很大的内存资源,导致查询性能下降。
pattern:一种描述图拓扑的方式,比如某学生关注某明星的pattern形式为(:student)-[:follow]->(:star)或(:star)<-[:follow]-(:student)。pattern已经作为基本语法元素被很多主流图查询语言采用,比如cypher和gql等。
nebula-graph分布式架构:nebula-graph采用计算存储分离的分布式架构。graphd负责处理计算请求,graphd之间是无状态的。storaged负责处理数据IO请求和数据持久化,一些轻量计算也可通过下推的形式在storaged执行,storaged之间通过raft共识算法保证数据一致性。metad负责元数据管理。
分片(partition)方式:数据分片是分布式数据库常用技术,通过切分数据并将这些分片放置在不同的机器,该技术提升了数据库水平扩展能力。nebula-graph也运用了该技术对图数据进行切分,图数据库的分片和传统的关系型数据库有所区别,目前图分片方式主要分为“点分割”和“边分割”两种方案,nebula-graph采用后者,“边分割”方案通过对节点id(node id)进行哈希计算,最终会保证每个patition上点的数量大体一致。
查询引擎(query engine)架构:nebula-graph的查询引擎(即graphd)负责响应查询请求并编译查询语句,共分为六个模块,分别是parser,validator,planner,optimizer,scheduler和executor模块。parser负责将语句解析成抽象语法树,validator负责语义校验和附着元信息,planner负责生成逻辑计划,optimizer负责优化计划并生成物理执行计划,executor和scheduler模块分别负责计算算子的实现和算子的调度。
优化器(optimizer):优化器是数据库优化的最关键模块之一,按照优化类型分为RBO(rule-based optimization)和CBO(cost-based optimization)。RBO是基于规则的优化,是启发式的,对数据不敏感。CBO是基于打分的优化,需要对数据统计信息的收集分析并对执行开销做量化预测,是数据敏感。
标签(tag)和label:nebula-graph用tag来描述实体(node和edge)的schema信息,nebula-graph实现了对cypher语法的兼容,在cypher语句中tag的使用方式和label完全一致,本专利所有描述均采用前者。
计划节点(plan node)有多种类型,如Scan、IndexScan和IndexEqualScan等,每个介绍如下:
Scan:用于扫描起点数据,是逻辑计划节点,比如Scan(teacher)表示扫描所有teacher数据。
IndexScan:用于基于tag索引扫描点数据,比如IndexScan(teacher)表示基于teacher索引扫描teacher数据。
IndexEqualScan:等值索引扫点,比如IndexEqualScan(student:age=22)表示扫描年龄为22岁的学生点。
IndexRangeScan:范围索引扫点,比如IndexRangeScan(star:age>40)表示扫描年龄大于40岁的明星点。
Expand:用于pattern计算,比如Expand((:student)-[:follow]->(:star))表示计算所有学生关注明星的pattern结果。
Project:投影算子,也可用于表达式计算,比如取属性表达式v.age表示获取点v的age属性。
Limit:用于分页计算。
Filter:用于条件过滤,在实际查询计算中往往通过下推和属性索引来优化性能。
本实施例提供了一种基于超级节点的查询语句处理方法,图1是根据本申请实施例的基于超级节点的查询语句处理方法的流程图,如图1所示,该方法包括如下步骤:
步骤S101,获取目标查询语句,根据目标查询语句生成候选执行计划,候选执行计划包括多个plan node。
示例性的,目标查询语句为:
MATCH (v:star)<-[:follow]-(n:student) WHERE v.age>40 and n.age = 22
RETURN n.name
该目标查询语句中,star和student的age属性均已创建索引,前者为范围索引,后者为等值索引,RBO索引选取规则为等值索引总是优于范围索引。
基于超级节点的CBO索引选取规则:优先选取出现超级节点概率低的索引,本例中star出现超级节点的概率远大于student。
planner根据目标查询语句的语义生成未优化的逻辑计划如下:
Scan(star)->Expand((:star)<-[:follow]-(:student))->Filter(v.age>40and n.age=22) -> Project(n.name)
RBO规则会对逻辑计划搜索空间做扩展(比如Orca的Exploration),即生成候选执行计划。RBO索引选取规则会生成如下候选执行计划:
plan1:IndexEqualScan(student:age=22)->Expand((:student)-[:follow]->(:star))-> Filter(v.age>40)->Project(n.name)
plan2:IndexRangeScan(star:age>40)->Expand((:star)<-[:follow]-(:student))-> Filter(v.age=22) -> Project(n.name)
步骤S102,获取代价模型对候选执行计划的打分结果,选取分数最高的候选执行计划作为目标执行计划;
步骤S103,其中,代价模型根据统计信息表的信息并基于超级节点的CBO规则对候选执行计划的所有plan node打分,候选执行计划的所有plan node打分结果相加为候选执行计划的打分结果;
步骤S104,其中,统计信息表用于记录查询语句中包含超级节点相关的统计信息,基于超级节点的CBO规则为查询语句中出现超级节点的概率越低,则打分越高。
示例性的,对于上述候选执行计划plan1和plan2的plan node,一般情况下,关注某个明星的学生数量比某个学生关注的明星数量多,因此明星为超级节点的概率比学生大,即假设统计信息表中,star这个tag出现超级节点的概率是0.9,student这个tag出现超级节点的概率是0.001,(:student)-[:follow]->(:star)的起点student为超级节点的概率为0.1,(:star)<-[:follow]-(:student)的起点star为超级节点的概率为0.9,因此,基于超级节点的CBO规则对plan node节点中IndexEqualScan(student:age=22)、IndexRangeScan(star:age>40)、Expand((:student)-[:follow]->(:star))和Expand((:star)<-[:follow]-(:student))打分分别可以是10、1、8和1,,由于Filter(v.age>40)、Filter(v.age=22)和Project(n.name)与基于超级节点的CBO规则无关,因此打分为0,则最终打分结果plan1=10+8=18,plan2=1+1=2,即plan1的打分更高,即代价更小,因此选择plan1为目标执行计划。
由于plan2选择出现超级节点概率很高的star作为拓展起点,Expand从超级节点拓展开销极大(关注某明星的学生数很多)导致最终执行计划打分很低。而plan1基于超级节点感知进行优化,通过student拓展出star(某学生关注的明星数往往远小于关注某明星的学生数),很大程度上裁剪了不必要的冗余计算,语句性能得到明显提升。
本实施例中,虽然以nebula-graph的架构为例进行阐述,但所有图数据库及基于pattern的图查询语言实现均可应用。
通过步骤S101至步骤S104,相对于相关技术中对超级节点的处理往往会占用很大的内存资源,导致查询性能下降,查询效率低的问题,本实施例通过获取目标查询语句,根据目标查询语句生成候选执行计划,候选执行计划包括多个plan node,获取代价模型对候选执行计划的打分结果,选取分数最高的候选执行计划作为目标执行计划,其中,代价模型根据统计信息表的信息并基于超级节点的CBO规则对候选执行计划的所有plan node打分,候选执行计划的所有plan node打分结果相加为候选执行计划的打分结果,其中,统计信息表用于记录查询语句中包含超级节点相关的统计信息,基于超级节点的CBO规则为查询语句中出现超级节点的概率越低,则打分越高,通过规避冗余计算,即规避和查询语句最终结果无关的涉及超级节点的中间计算来优化查询语句性能,解决了相关技术中对超级节点的处理往往会占用很大的内存资源,导致查询性能下降,查询效率低的问题。
根据查询语句pattern的具体情况,可能需要更多种类的超级节点统计信息,本专利仅以三种统计信息为例进行阐释,因此在其中一些实施例中,统计信息表包括统计信息一表、统计信息二表和统计信息三表,其中,统计信息一表用于记录超级节点的节点id(node id)和出入度,例如node id:101为超级节点,入度为6000,出度为2,统计信息二表用于记录标签(tag)为超级节点的概率和平均出入度,例如star这个tag出现超级节点的概率是90%,平均入度是10000,平均出度是10,统计信息三表用于记录拓扑结构、拓扑起点出现超级节点的概率和拓扑终点出现超级节点的概率,例如拓扑结构为(:student)-[:follow]->(:star)时,拓扑起点student为超级节点的概率是10%,拓扑终点star为超级节点的概率是90%,上述三种统计信息会以表的形式保存在metad中,表结构如下:
统计信息一表:
统计信息二表:
统计信息三表:
收集统计信息需要关注两个方面,一是对已有数据计算统计信息,二是增删数据后需要更新统计信息。统计信息通过后台任务定期计算,后台任务启动后会通过存储服务(storaged)客户端向storaged发送收集统计信息请求,之后在storaged通过一些算法(比如HyperLogLog算法统计基数、谓词选择度等)进行计算。计算完成之后会将结果发送到metad,metad会根据当前收集到的统计信息和相应的统计信息表中历史数据进行比较并更新该统计信息。
在其中一些实施例中,统计信息一表的收集过程为:nebula-graph通过边分割方法对图数据进行数据分片,这种分片方式通过对node id进行哈希计算,最终会保证每个分片(patition)上点的数量大体一致,实体包括点和边,如果patition包含超级节点,则该partition中实体数量就会比较多,partition就越大,因此排名前K位大的partition中出现超级节点的概率更高,其中TopK表示排名前K位,对于TopK大的partition,可以通过边点比做进一步筛选,边点比大的partition出现超级节点的概率更大,因此依据partition实体数量和partition边点比例来寻找TopK partition,并记为目标patition。
获取目标patition中每种tag包含的点数量,将点数量少于预设值的tag记为目标tag,其中,tag是点的类型,某tag可以实例化很多点实体,比方说tag1类型的点有10个,依据每个tag的点数量来排名,数量越少,排名越前,前k名的tag认为是超级节点概率较大的tag,记为目标tag;
根据所有目标tag的node id和出入度,获得统计信息一表,其中,partition中实体数量、边点比和tag数量以及每个tag下的点边数量等元数据信息均在metad中存储,后台任务只会读取这些元数据信息。这些元数据会在数据写入或balance data时触发更新,比如写入一个点到某个partition的某个tag,那么partition实体数量和tag中点的数量加一,边点比会重新计算(边数/(点数+1))。可以看出,这些元数据并不是估算值而是被精确计算的。
定位到目标tag后,会通过查询语句对目标tag查询,目的为排除孤点以及精确查询其出入度,示例性的,查询node id为101的出度语句为:MATCH (v)-->() WHERE id(v)=="101" RETURN COUNT(*),出入度的计算可能存在不同的实现方式,比如通过一些图算法计算出入度,本实施例中,统计信息收集实现方案虽依赖到nebula-graph“边切割”的分布式分片方式,但也可以对其他图数据库具体架构依照相似的原理定制实现方案。
可选的,统计信息二表的收集过程为:可以用类似收集统计信息一表的方式在tag内部计算其超级节点数,超级节点数和点总数的比值即为该tag下出现超级节点概率估算值。平均出入度可以通过语句查询获取,比如:
MATCH (v:star)<-[:follow]-() RETURN COUNT(*) AS total_in_degree
MATCH (v:star) RETURN COUNT(*) AS star_num
其中,total_in_degree和star_num的比值即为star的平均入度,平均出度的计算方式类似,不赘述。
可选的,统计信息三表的收集过程为:可以依据tag点总数计算TopK tag,后台任务生成特定查询语句来统计。比如统计老师关注超级明星的概率,可以依据统计信息一表(topk_list是统计信息一表中所有超级节点的集合)进行如下查询:
MATCH (v:star)<-[:follow]-(n:teacher) WHERE id(v) in topk_list RETURNCOUNT(DISTINCT n) AS c1
MATCH (:star)<-[:follow]-(n:teacher) RETURN COUNT(DISTINCT n) AS c2
c1和c2的比值即为拓扑结构(v:star)<-[:follow]-(n:teacher)中拓扑终点为超级节点的概率。同理,拓扑起点为超级节点概率和其他拓扑的超级节点概率都可以采用类似的方式计算,不赘述。
其中,对于具体的查询语句,超级节点需要更细粒度的判定,边方向和边类型通常也需要在统计信息表中记录。比如,统计信息二表中不能仅记录average in-degree,平均入度还需要和边类型绑定。本专利为了描述方便,默认所有边均为follow类型。
可以更进一步的根据数据建模和图查询方式定制化代价模型来达到更好的优化效果,即对代价模型的打分规则进行细化,使代价模型根据统计信息对候选执行计划的打分结果更准确。故在其中一些实施例中,代价模型根据统计信息表的信息并基于代价模型公式对候选执行计划的所有plan node打分,定义代价模型用到的符号:
r:RBO代价,默认为1,本专利中忽略RBO打分也不会影响目标执行计划的选择;
s:CBO/RBO相对代价系数,默认为9;
o:超级节点/其他CBO相对打分系数,默认为100;
t:超级节点CBO规则对plan node的打分,若需要对Expand类型特殊计算,则表示为t(Expand),除Scan和Expand类型的plan node该规则打分均为0;
t':其他CBO规则对plan node的打分;
f:数据选择度CBO规则对plan node的打分,取值区间为[0,1],对数据的选择越接近于全部扫描则数据选择度越低,比如star:age>40比student:age=22筛选的数据更少,则认为前者的数据选择度更高,数据选择度越高,则打分越高,和数据选择度无关的plannode(比如Expand、Project)打分均为0;
p1:统计信息一打分,由统计信息一表决定,如果node id在统计信息一表中,说明该node id为超级节点则值为1,否则为0;
p2:统计信息二打分,由统计信息二表决定,值为超级节点的概率或平均出入度;
p3:统计信息三打分,由统计信息三表决定,值为超级节点的概率;
q1:统计信息一打分系数,默认为1000;
q2:统计信息二打分系数,默认为100;
q3:统计信息二打分系数,默认为10;
k1:pattern起点是超级节点的概率;
k2:pattern终点是超级节点的概率;
c(pattern):pattern打分;
j:相连Expand的剪枝增益系数,默认从10开始指数递减,比如j依次取101、100和10-1等,若c(Expand)小于0,则剪枝增益系数为0;
c:全局plan node打分,需要对多个相连的Expand整体打分,则表示为c(Expands);
C:全局plan打分。
代价模型公式定义:
c(pattern)=1/k2-k1*k1*100
t=(1/(q1*p1+q2*p2+q3*p3))
t(Expand)=c(pattern)
t'=f
c=r+s*(o*t+t')
c(Expands)=c(Expand1)*(1+j1)+c(Expand2)*(1+j2)+c(Expand3)*(1+j3)...
C=c1+c2+...+cn
上述默认值越大,表明重要程度越高,可以根据实际情况进行设置。在实际工程实践中,影响执行计划打分的因素很多,代价模型中的各种参数(比如不同CBO规则的相对打分系数衡量不同CBO规则的重要程度)都需要做更加精细的设计,以上只提供了多项式形式的打分公式,实际工程中可能有更合适的函数模型。代价模型设计的好坏是决定CBOoptimizer优化效果最关键的因素之一,本节所有指定的所有打分公式和相关参数仅用于本专利理论正确性验证,仅在本专利范围保证自洽和完备,不代表该代价模型在实际工程中也能达到最好的优化效果。
延续上述实施例,对于候选执行计划plan1和plan2,基于数据选择度的CBO规则只对和数据选择度有关的plan node打分,因此只对IndexRangeScan(star:age>40)、Filter(v.age>40)、Filter(v.age=22)和IndexEqualScan(student:age=22)打分,由于IndexRangeScan(star:age>40)、Filter(v.age>40)、Filter(v.age=22)和IndexEqualScan(student:age=22)依次越来越接近于全部扫描,因此假定基于数据选择度的CBO规则的打分结果依次为0.8、0.6、0.5和0.3。
基于超级节点的CBO规则根据公式t=1/(q1*p1+q2*p2+q3*p3)对IndexEqualScan(student:age=22)的打分为:t=1/(1000*0+100*0.001+10*0)=10,同理,对IndexRangeScan(star:age>40)的打分为:t=1/(1000*0+100*0.9+10*0)=1/90。
全局plan node打分依据公式t(Expand)=c(pattern)= 1/k2-k1*k1*100和c=r+s*(o*t+t')计算如下:
IndexEqualScan(student:age=22)打分:1 + 9 * (100 *10+0.3) = 9003.7
Filter(v.age>40)打分:1 + 9 * (100 * 0 + 0.6) = 6.4
IndexRangeScan(star:age>40)打分:1+9 * (100 *1/90+0.8) = 18.2
Filter(v.age=22)打分:1 + 9 * (100 * 0 + 0.5) = 5.5
Expand((:student)-[:follow]->(:star))打分:1 + 9 * (100 * (1/0.9 - 0.1* 0.1 * 100) + 0) = 101
Expand((:star)<-[:follow]-(:student))打分:1 + 9 * (100 * (1/0.1 - 0.9* 0.9 * 100) + 0) = -63899
最终全局plan打分依据公式C=c1+c2+…+cn计算如下:
plan1:9003.7+101+6.4+0=9111.1
plan2:18.2-63899+5.5+0=-63875.3
依据代价模型计算结果plan1的打分更高(即代价更小),被选为目标执行计划,可以看出plan2选择出现超级节点概率很高的star作为拓展起点,虽然IndexRangeScan(star:age>40)的数据选择度更好,但Expand从超级节点拓展开销极大(关注某明星的学生数很多)导致最终执行计划打分很低。而plan1基于超级节点感知进行优化,通过student拓展出star(某学生关注的明星数往往远小于关注某明星的学生数),很大程度上裁剪了不必要的冗余计算,语句性能得到明显提升。
以上优化是基于统计信息二(某tag中包含超级节点的概率)优化索引选择,对于基于统计信息一的优化场景往往比较类似,比如语句:
MATCH (v:star)<-[:follow]-(n:student) WHERE id(v)=101 and n.age = 22
RETURN n.name
可以看出,语句形式基本上是类似的,代价模型的计算原理也完全一致,此处不赘述。该语句目标执行计划如下:IndexEqualScan(student:age=22)-> Expand((:student)-[:follow]->(:star)) -> Filter(id(v)=101) -> Project(n.name)
拓展重排序优化的语句举例:
MATCH (v:student)-[:follow]->(n:star)<-[:follow]-(m),(n:star)<-[:follow]-
(t:teacher) RETURN m
该语句一共包含三个单独的pattern,即pattern1:(v:student)-[:follow]->(n:star)、pattern2:(n:star)<-[:follow]-(m)和pattern3:(n:star)<-[:follow]-(t:teacher)。
上述已经阐释起点选择相关优化,以star类型作为拓展起点的开销较大,故不考虑star类型作为拓展起点的情况,则该语句的候选执行计划有如下四种:
plan3:IndexScan(student) -> Expand(pattern1) -> Expand(pattern2) ->Expand(pattern3) -> Project(m)
plan4:IndexScan(student) -> Expand(pattern1) -> Expand(pattern3) ->Expand(pattern2) -> Project(m)
plan5:IndexScan(teacher) -> Expand(pattern3) -> Expand(pattern2) ->Expand(pattern1) -> Project(m)
plan6:IndexScan(teacher) -> Expand(pattern3) -> Expand(pattern1) ->Expand(pattern2) -> Project(m)
本例中认为IndexScan(student)和IndexScan(teacher)开销相同,重点关注Expand节点顺序对性能的影响。
对于plan3和plan5,在计算中间结果的过程中对pattern2做提前物化,导致开销很大。对于plan4和plan6,依据统计信息二表teacher的平均出度要小于student的平均出度,故plan5中相当于提前对star类型点的计算提前剪枝,打分时需要加入剪枝增益分,相连的Expand都在剪枝,但越早剪枝,对应的剪枝增益分就越大,且每个Expand本身会有一个分数,如果分数很大并且出现在Expand链条靠前的位置,那么这个分数和剪枝增益分的乘积也会越大。
Expand依据公式t(Expand)=c(pattern)=1/k2-k1*k1*100,c=r+s*(o*t+t')打分如下:
Expand(pattern1):1+9*(100*(1/0.9-0.1*0.1*100)+0)=101
Expand(pattern2):1+9*(100*(1/0.9-0.2*0.2*100)+0)=-2599
Expand(pattern3):1+9*(100*(1/0.01-0.1*0.1*100)+0)=89101
相连Expand依据公式c(Expands) = c(Expand1) * (1+j1) + c(Expand2) * (1+ j2) + c(Expand3) * (1 + j3) ...打分如下:
Expand(pattern1) + Expand(pattern2) + Expand(pattern3):101 *(1+101) +(-2599) *(1+0) + 89101 *(1+10-1)=96523.1
Expand(pattern1) + Expand(pattern3) + Expand(pattern2):101 *(1+101) +89101 *(1+100) + (-2599) *(1+0)= 176714
Expand(pattern3) + Expand(pattern2) + Expand(pattern1):89101 *(1+101)+ (-2599) *(1+0)+ 101 *(1+10-1)= 977623.1
Expand(pattern3) + Expand(pattern1) + Expand(pattern2):89101 *(1+101)+ 101 *(1+100)+(-2599) *(1+0)= 977714
该例中影响执行计划打分的主要是相连的Expand,其他plan node执行计划分数基本一致,不再做具体计算。综上,plan6的打分最高被选为目标执行计划。拓展重排序方案通过评估超级节点的物化时机和剪枝程度对相连的Expand进行优化,可以看出Expand的执行顺序对语句性能有很大影响,合理安排拓展顺序往往能达到更好的优化效果,即在计算过程中避免从超级节点向外拓展,提高查询语句性能。
上述介绍了基于超级节点统计信息对单条语句的优化,但超级节点统计信息对多语句调度优化同样有重要意义,同样能提高多语句查询的查询效率,故在其中一些实施例中,如果目标查询语句最终执行结果包含超级节点拓展结果,则超级节点相关的计算并非冗余计算或者并不能被裁剪优化,那么上述所介绍的CBO优化不会被触发。比如如下语句:
MATCH (v:star)<-[:follow]-(n) WHERE id(v)=101 RETURN n
该语句从node id为101的超级节点向外拓展,需要查询关注该明星的所有用户,执行计划并不存在优化空间。根据统计信息一表可知,node id 101为超级节点,因此该查询语句为慢查询语句,因此,根据语句的调度策略进行多语句调度优化,例如适当降低慢查询语句的调度优先级,来保证其他查询语句的并发性能,例如,需要并发执行A查询语句和B查询语句,执行完成后,再执行C查询语句,但如果判断出A查询语句是慢查询语句,则可以先并发执行B查询语句和C查询语句,执行完成后,再执行A查询语句,提高了多语句查询的查询效率,其中,语句级的调度策略和具体语句的调度优先级都是用户可配置的。
需要说明的是,在上述流程中或者附图的流程图中示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
本实施例还提供了一种基于超级节点的查询语句处理系统,该系统用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”、“单元”、“子单元”等可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
图2是根据本申请实施例的基于超级节点的查询语句处理系统的结构框图,如图2所示,该系统包括包括获取模块21和打分模块31,获取模块21用于获取目标查询语句,根据目标查询语句生成候选执行计划,候选执行计划包括多个计划节点,打分模块22用于获取代价模型对候选执行计划的打分结果,选取分数最高的候选执行计划作为目标执行计划,其中,代价模型根据统计信息表的信息并基于超级节点的CBO规则对候选执行计划的所有计划节点打分,候选执行计划的所有计划节点打分结果相加为候选执行计划的打分结果,其中,统计信息表用于记录查询语句中包含超级节点相关的统计信息,基于超级节点的CBO规则为查询语句中出现超级节点的概率越低,则打分越高,通过规避冗余计算,即规避和查询语句最终结果无关的涉及超级节点的中间计算来优化查询语句性能,解决了相关技术中对超级节点的处理往往会占用很大的内存资源,导致查询性能下降,查询效率低的问题。
需要说明的是,上述各个模块可以是功能模块也可以是程序模块,既可以通过软件来实现,也可以通过硬件来实现。对于通过硬件来实现的模块而言,上述各个模块可以位于同一处理器中;或者上述各个模块还可以按照任意组合的形式分别位于不同的处理器中。
本实施例还提供了一种电子装置,包括存储器和处理器,该存储器中存储有计算机程序,该处理器被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。
可选地,上述电子装置还可以包括传输设备以及输入输出设备,其中,该传输设备和上述处理器连接,该输入输出设备和上述处理器连接。
需要说明的是,本实施例中的具体示例可以参考上述实施例及可选实施方式中所描述的示例,本实施例在此不再赘述。
另外,结合上述实施例中的基于超级节点的查询语句处理方法,本申请实施例可提供一种存储介质来实现。该存储介质上存储有计算机程序;该计算机程序被处理器执行时实现上述实施例中的任意一种基于超级节点的查询语句处理方法。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是终端。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种基于超级节点的查询语句处理方法。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,该计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink) DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
本领域的技术人员应该明白,以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (10)
1.一种基于超级节点的查询语句处理方法,其特征在于,所述方法包括:
获取目标查询语句,根据所述目标查询语句生成候选执行计划,所述候选执行计划包括多个计划节点;
获取代价模型对所述候选执行计划的打分结果,选取分数最高的所述候选执行计划作为目标执行计划;
其中,所述代价模型根据统计信息表的信息并基于超级节点的CBO规则对所述候选执行计划的所有计划节点打分,所述候选执行计划的所有计划节点打分结果相加为所述候选执行计划的打分结果;
其中,所述统计信息表用于记录查询语句中包含超级节点相关的统计信息,所述基于超级节点的CBO规则为查询语句中出现超级节点的概率越低,则打分越高。
2.根据权利要求1所述的方法,其特征在于,获取目标查询语句,根据所述目标查询语句生成候选执行计划包括:
获取目标查询语句,根据所述目标查询语句的语义生成未优化的逻辑计划,根据RBO索引选取规则生成所述未优化的逻辑计划的候选执行计划。
3.根据权利要求1所述的方法,其特征在于,所述代价模型根据统计信息表的信息并基于超级节点的CBO规则对所述候选执行计划的所有计划节点打分包括:
所述代价模型根据统计信息表的信息并基于代价模型公式对所述候选执行计划的所有计划节点打分;
所述代价模型公式定义为:
c(pattern)=1/k2-k1*k1*100
t=(1/(q1*p1+q2*p2+q3*p3))
t(Expand)=c(pattern)
t'=f
c=r+s*(o*t+t')
c(Expands)=c(Expand1)*(1+j1)+c(Expand2)*(1+j2)+c(Expand3)*(1+j3)...
C=c1+c2+...+cn
r表示RBO代价,s表示CBO/RBO相对代价系数,o表示超级节点/其他CBO相对打分系数,t表示超级节点CBO规则对计划节点的打分,若需要对Expand类型特殊计算,则表示为t(Expand),t'表示其他CBO规则对计划节点的打分,f表示数据选择度打分,取值区间为[0,1],p1由统计信息一表决定,如果节点id为超级节点则值为1,否则为0,p2由统计信息二表决定,值为超级节点的概率或平均出入度,p3由统计信息三表决定,值为超级节点的概率,q1表示统计信息一打分系数,q2表示统计信息二打分系数,q3表示统计信息二打分系数,k1表示pattern起点是超级节点的概率,k2表示pattern终点是超级节点的概率,c(pattern)表示pattern打分,j表示相连Expand的剪枝增益系数,默认从10开始指数递减,若c(Expand)小于0,则剪枝增益系数为0,c表示全局计划节点打分,需要对多个相连的Expand整体打分,则表示为c(Expands),C表示全局plan打分。
4.根据权利要求1所述的方法,其特征在于,所述统计信息表包括统计信息一表、统计信息二表和统计信息三表,其中,所述统计信息一表用于记录超级节点的节点id和出入度,所述统计信息二表用于记录标签为超级节点的概率和平均出入度,所述统计信息三表用于记录拓扑结构、拓扑起点出现超级节点的概率和拓扑终点出现超级节点的概率。
5.根据权利要求4所述的方法,其特征在于,所述统计信息一表的收集过程包括:
通过边分割方法对图数据进行数据分片,获得多个分片,将实体数量大于第一预设值和边点比大于第二预设值的分片,记为目标分片;
获取所述目标分片中每种标签包含的点数量,将所述点数量少于预设值的标签记为目标标签;
根据所有所述目标标签的节点id和出入度,获得所述统计信息一表。
6.根据权利要求4所述的方法,其特征在于,所述统计信息二表的收集过程包括:
根据标签的超级节点数和点总数的比值,获得所述标签为超级节点的概率,并根据查询语句获取所述标签的平均出入度;
根据所有所述标签为超级节点的概率和平均出入度,获得所述统计信息二表;
所述统计信息三表的收集过程包括:
获取拓扑结构,根据查询语句获取所述拓扑结构中拓扑起点出现超级节点的概率和拓扑终点出现超级节点的概率;
根据所有拓扑结构以及对应的拓扑起点出现超级节点的概率和拓扑终点出现超级节点的概率,获得所述统计信息三表。
7.根据权利要求1所述的方法,其特征在于,在所述目标查询语句不能被优化的情况下,所述方法还包括:
根据所述统计信息表判断所述目标查询语句是否为慢查询语句,若判断结果为是,则根据语句的调度策略进行多语句调度优化。
8.一种基于超级节点的查询语句处理系统,其特征在于,所述系统包括获取模块和打分模块,
所述获取模块,用于获取目标查询语句,根据所述目标查询语句生成候选执行计划,所述候选执行计划包括多个计划节点;
所述打分模块,用于获取代价模型对所述候选执行计划的打分结果,选取分数最高的所述候选执行计划作为目标执行计划;
其中,所述代价模型根据统计信息表的信息并基于超级节点的CBO规则对所述候选执行计划的所有计划节点打分,所述候选执行计划的所有计划节点打分结果相加为所述候选执行计划的打分结果;
其中,所述统计信息表用于记录查询语句中包含超级节点相关的统计信息,所述基于超级节点的CBO规则为查询语句中出现超级节点的概率越低,则打分越高。
9.一种电子装置,包括存储器和处理器,其特征在于,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行权利要求1至7中任一项所述的基于超级节点的查询语句处理方法。
10.一种存储介质,其特征在于,所述存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行权利要求1至7中任一项所述的基于超级节点的查询语句处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210956480.3A CN115033595B (zh) | 2022-08-10 | 2022-08-10 | 基于超级节点的查询语句处理方法、系统、装置和介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210956480.3A CN115033595B (zh) | 2022-08-10 | 2022-08-10 | 基于超级节点的查询语句处理方法、系统、装置和介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115033595A true CN115033595A (zh) | 2022-09-09 |
CN115033595B CN115033595B (zh) | 2022-11-22 |
Family
ID=83131359
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210956480.3A Active CN115033595B (zh) | 2022-08-10 | 2022-08-10 | 基于超级节点的查询语句处理方法、系统、装置和介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115033595B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115827930A (zh) * | 2023-02-15 | 2023-03-21 | 杭州悦数科技有限公司 | 一种图数据库的数据查询优化方法、系统和装置 |
CN117056361A (zh) * | 2023-07-03 | 2023-11-14 | 杭州拓数派科技发展有限公司 | 一种分布式数据库的数据查询方法及装置 |
CN118427230A (zh) * | 2024-07-05 | 2024-08-02 | 江苏华库数据技术有限公司 | 数据库的jdbc连接参数的动态调整方法、系统及产品 |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140304251A1 (en) * | 2013-04-03 | 2014-10-09 | International Business Machines Corporation | Method and Apparatus for Optimizing the Evaluation of Semantic Web Queries |
CN104216894A (zh) * | 2013-05-31 | 2014-12-17 | 国际商业机器公司 | 用于数据查询的方法和系统 |
CN105005606A (zh) * | 2015-07-03 | 2015-10-28 | 华南理工大学 | 基于MapReduce的XML数据查询方法和系统 |
CN110659327A (zh) * | 2019-08-16 | 2020-01-07 | 平安科技(深圳)有限公司 | 实现异构数据库之间数据交互式查询的方法和相关装置 |
CN111563101A (zh) * | 2020-07-11 | 2020-08-21 | 阿里云计算有限公司 | 执行计划优化方法、装置、设备及存储介质 |
CN112395303A (zh) * | 2019-08-15 | 2021-02-23 | 阿里巴巴集团控股有限公司 | 查询的执行方法、装置、电子设备及计算机可读介质 |
CN112395302A (zh) * | 2019-08-15 | 2021-02-23 | 阿里巴巴集团控股有限公司 | Sql指令的执行方法、装置、电子设备及计算机可读介质 |
CN112988782A (zh) * | 2021-02-18 | 2021-06-18 | 新华三大数据技术有限公司 | Hive支持交互式查询的方法、装置及存储介质 |
CN113535753A (zh) * | 2021-07-19 | 2021-10-22 | 北京人大金仓信息技术股份有限公司 | 一种基于并行遍历算法的sql语句执行计划定位方法和装置 |
CN113569057A (zh) * | 2021-07-29 | 2021-10-29 | 辽宁大学 | 一种面向本体标签知识图谱的样例查询方法 |
CN114116778A (zh) * | 2021-09-26 | 2022-03-01 | 中国电子口岸数据中心成都分中心 | 一种数据库查询优化方法 |
CN114625761A (zh) * | 2022-03-18 | 2022-06-14 | 上海达梦数据库有限公司 | 一种优化方法、装置、电子设备及介质 |
-
2022
- 2022-08-10 CN CN202210956480.3A patent/CN115033595B/zh active Active
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140304251A1 (en) * | 2013-04-03 | 2014-10-09 | International Business Machines Corporation | Method and Apparatus for Optimizing the Evaluation of Semantic Web Queries |
CN104216894A (zh) * | 2013-05-31 | 2014-12-17 | 国际商业机器公司 | 用于数据查询的方法和系统 |
CN105005606A (zh) * | 2015-07-03 | 2015-10-28 | 华南理工大学 | 基于MapReduce的XML数据查询方法和系统 |
CN112395303A (zh) * | 2019-08-15 | 2021-02-23 | 阿里巴巴集团控股有限公司 | 查询的执行方法、装置、电子设备及计算机可读介质 |
CN112395302A (zh) * | 2019-08-15 | 2021-02-23 | 阿里巴巴集团控股有限公司 | Sql指令的执行方法、装置、电子设备及计算机可读介质 |
CN110659327A (zh) * | 2019-08-16 | 2020-01-07 | 平安科技(深圳)有限公司 | 实现异构数据库之间数据交互式查询的方法和相关装置 |
CN111563101A (zh) * | 2020-07-11 | 2020-08-21 | 阿里云计算有限公司 | 执行计划优化方法、装置、设备及存储介质 |
CN112988782A (zh) * | 2021-02-18 | 2021-06-18 | 新华三大数据技术有限公司 | Hive支持交互式查询的方法、装置及存储介质 |
CN113535753A (zh) * | 2021-07-19 | 2021-10-22 | 北京人大金仓信息技术股份有限公司 | 一种基于并行遍历算法的sql语句执行计划定位方法和装置 |
CN113569057A (zh) * | 2021-07-29 | 2021-10-29 | 辽宁大学 | 一种面向本体标签知识图谱的样例查询方法 |
CN114116778A (zh) * | 2021-09-26 | 2022-03-01 | 中国电子口岸数据中心成都分中心 | 一种数据库查询优化方法 |
CN114625761A (zh) * | 2022-03-18 | 2022-06-14 | 上海达梦数据库有限公司 | 一种优化方法、装置、电子设备及介质 |
Non-Patent Citations (2)
Title |
---|
DEBABRATA KAR ET AL.: ""Learning to detect SQLIA using node centrality with feature selection"", 《INTERNATIONAL CONFERENCE ON COMPUTING, ANALYTICS AND SECURITY TRENDS》 * |
宋鑫: ""达梦数据库管理系统代价评估模型的设计与实现"", 《万方数据知识服务平台》 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115827930A (zh) * | 2023-02-15 | 2023-03-21 | 杭州悦数科技有限公司 | 一种图数据库的数据查询优化方法、系统和装置 |
CN117056361A (zh) * | 2023-07-03 | 2023-11-14 | 杭州拓数派科技发展有限公司 | 一种分布式数据库的数据查询方法及装置 |
CN118427230A (zh) * | 2024-07-05 | 2024-08-02 | 江苏华库数据技术有限公司 | 数据库的jdbc连接参数的动态调整方法、系统及产品 |
Also Published As
Publication number | Publication date |
---|---|
CN115033595B (zh) | 2022-11-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Das et al. | Falcon: Scaling up hands-off crowdsourced entity matching to build cloud services | |
CN115033595B (zh) | 基于超级节点的查询语句处理方法、系统、装置和介质 | |
CN107239335B (zh) | 分布式系统的作业调度系统及方法 | |
US5822747A (en) | System and method for optimizing database queries | |
US8326825B2 (en) | Automated partitioning in parallel database systems | |
US7437703B2 (en) | Enterprise multi-agent software system with services able to call multiple engines and scheduling capability | |
US6021405A (en) | System and method for optimizing database queries with improved performance enhancements | |
US8984019B2 (en) | Scalable summarization of data graphs | |
US8219596B2 (en) | System and method of optimizing performance of schema matching | |
Kougka et al. | The many faces of data-centric workflow optimization: a survey | |
US20100114976A1 (en) | Method For Database Design | |
CN104137095B (zh) | 用于演进分析的系统 | |
CN103488673A (zh) | 用于执行调和处理的方法、控制器、程序及数据存储系统 | |
Jiang et al. | Holistic primary key and foreign key detection | |
US7415461B1 (en) | Apparatus and method for merging results of approximate matching operations | |
CN113254630A (zh) | 一种面向全球综合观测成果的领域知识图谱推荐方法 | |
US20130080441A1 (en) | Index selection for xml database systems | |
RU2386166C2 (ru) | Способ и система организации и функционирования базы данных нормативной документации | |
Feldman et al. | A knowledge-based approach for index selection in relational databases | |
Medina et al. | Evaluation of indexing strategies for possibilistic queries based on indexing techniques available in traditional RDBMS | |
Szárnyas et al. | Evaluation of optimization strategies for incremental graph queries | |
Henderson et al. | Blutune: Tuning up ibm db2 with ml | |
CN106649462B (zh) | 一种针对海量数据全文检索场景的实现方法 | |
Ambite | Planning by rewriting | |
CN117971888B (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 |