一种执行计划的生成方法、装置及数据库服务器制造方法及图纸

技术编号:18940549 阅读:15 留言:0更新日期:2018-09-15 11:04
本发明专利技术实施例提供一种执行计划的生成方法,该执行计划包括第一分执行计划和第二分执行计划,该方法包括:解析得到的数据操纵语言DML语句,以确定第一数据表,所述第一数据表包括存储在固态硬盘SSD介质上的第一数据,以及存储在机械硬盘HDD介质上的第二数据;对所述第一数据生成所述第一分执行计划,所述第一分执行计划包括通过表扫描读取所述第一数据;对所述第二数据生成所述第二分执行计划。这样可以生成更为符合数据存储特点的执行计划,则执行该执行计划能更节省资源。

Generation method, device and database server of execution plan

The embodiment of the present invention provides a method for generating an execution plan comprising a first execution plan and a second execution plan, comprising: a data manipulation language DML statement parsed to determine a first data table comprising first data stored on a solid-state hard disk SSD medium, And the second data stored on a mechanical hard disk HDD medium; for the first data generation, the first sub-execution plan includes reading the first data through a table scan; and generating the second sub-execution plan for the second data. This results in an execution plan that is more consistent with the characteristics of data storage, and the execution plan can save more resources.

【技术实现步骤摘要】
一种执行计划的生成方法、装置及数据库服务器
本专利技术涉及计算机领域,尤其涉及一种执行计划的生成方法、装置及数据库服务器。
技术介绍
数据库技术的发展提供了越来越大的数据存储能力,用户可以通过网络等方式对海量数据存储进行查询并获得所需的数据。数据库技术中包括数据操纵语言DML,例如来自客户端的查询语句(select)、插入语句(insert)、删除语句(delete)、更新语句(update)等。在执行DML语句的过程中,需要对该DML语句进行语法分析、预编译、优化等步骤,继而生成执行计划。为了提高查询性能,数据库常常会使用索引管理数据。索引是一种与表有关的数据库结构,是表的分执行计划,它可以使执行对象为数据表的SQL语句执行得更快。例如,一种常见的索引采用B树或B+树的数据结构。通常,索引包括排序后的键值(key),以及指向表数据的存储位置的记录标识符RID(RecordIdentifier),在根据查询条件筛选出满足条件的键值后,如果需要取该键值对应的表中其它元组数据,则需要依靠该这些键值对应的索引中的RID,以获得元组数据在磁盘上数据位置。索引的聚簇因子(clusteringfactor/CF)是反映索引键值的顺序与RID顺序不一致程度的统计信息之一,一般是基于索引列上的一个值。因此,聚簇因子通常用被数据库管理系统(DatabaseManagementSystem)的优化器用于在生成执行计划的过程中计算开销(cost),开销直接影响执行计划中使用的算子等。例如,在聚簇因子较小时,如果键值的顺序依照RID访问表空间数据,会产生大量随机I/O,从而影响查询性能,因此优化器会指示先将表空间的数据进行预排序,再读取。但是,现有技术中使用的聚簇因子,表示计算开销并不准确,从而会使得生成的执行计划在执行中产生不必要的随机I/O的开销,降低对数据进行操作的性能。
技术实现思路
本专利技术的实施例提供一种执行计划的生成方法执行数据操纵语言DML的语句的方法及装置,能够更客观地考虑数据存储的特点,使得生成的执行计划中使用的数据读取方式更符合数据在存储介质中的实际情况,从而使得运行该生成的执行计划的开销更小,即避免不必要的开销。提高了数据库对数据进行操作的性能,更能节省资源。为达到上述目的,本专利技术的实施例采用如下技术方案:第一方面,采用了一种执行计划的生成方法,所述执行计划包括第一分执行计划和第二分执行计划,所述方法包括:解析得到的数据操纵语言DML语句,以确定所述DML语句对应的第一数据表,所述第一数据表包括存储在固态硬盘SSD介质上的第一数据,以及存储在机械硬盘HDD介质上的第二数据;对所述第一数据,生成所述第一分执行计划,所述第一分执行计划包括通过表扫描读取所述第一数据;对所述第二数据,生成所述第二分执行计划,所述第二分执行计划包括在所述第二数据需要预排序的情况下,对所述第二数据预排序后,读取经过预排序的所述第二数据;在所述第二数据无需预排序的情况下,通过表扫描读取所述第二数据。这样,在生成执行计划的过程中,能够更客观地考虑数据存储的特点,针对存储在不同的介质中的数据,使得生成的执行计划中使用的数据读取方式更符合数据在存储介质中的实际情况,从而使得运行该生成的执行计划的开销更小,提高了数据库对数据进行操作的性能,更能节省资源。一种实现方式下,所述对所述第一数据,生成第一分执行计划,包括:根据所述第一数据的虚聚簇因子的值,生成所述第一分执行计划,所述第一数据的虚聚簇因子表示通过索引读取所述存储于SSD存储介质中的第一数据的代价。在一种实现方式下,所述对所述第二数据,生成第二分执行计划包括:根据所述第二数据的聚簇因子的值,确定所述第二分执行计划是否包括通过预排序读取所述第二数据。应理解,聚簇因子用于标记表中的数据和这些数据在索引中的顺序的相似程度。聚簇因子越大,顺序相似度越高,聚簇因子越小,顺序相似度越低。也就是说,在这些实施方式下,提出了对聚簇因子的表示方法的改进,例如在计算聚簇因子时,考虑存储介质种类的不同,还例如,提出第一层聚簇因子和第二层聚簇因子,在生成执行计划的过程中,通过多层的聚簇因子优化不同层次操作的代价估算。从而能够生成更优化的执行计划。由于现有技术中也有聚簇因子,故本申请上述的集中在一种实现方式下,该方法还包括根据所述第一数据所在的存储介质的随机I/O,确定所述第一数据的虚聚簇因子。以及该方法还包括根据所述第二数据所在的存储介质的随机I/O,确定所述第二数据的虚聚簇因子。其中,随机I/O表示访问地址不连续的数据的操作而产生的代价。一种实现方式下,该方法还包括:根据所述第一数据表的逻辑聚簇因子的值,确定所述执行计划中第一算子,所述第一算子对应于所述第一数据表与第二数据表之间的第一运算,所述第一数据表的逻辑聚簇因子用于替代所述第一数据表的聚簇因子,用于表示以所述第一数据表为整体,通过索引读取所述第一数据表的代价。一种实现方式下,该方法还包括:根据所述第一数据的虚聚簇因子和所述第二数据的聚簇因子,计算所述第一数据表的逻辑聚簇因子,所述第一数据的虚聚簇因子用于表示通过索引读取所述存储于SSD存储介质中的第一数据的代价,所述第二数据的聚簇因子用于表示通过索引读取所述存储于HHD存储介质中的第二数据的代价。只要第二层逻辑聚簇因子中考虑各种不同的存储介质的聚簇因子的差异性,也就是说,使用了对应于HDD介质的原始聚簇因子和对应于SSD介质的虚聚簇因子即可。具体的计算方式可以有很多种。例如,对第一层聚簇因子求平均,可以是加权平均,或者直接求平均值。应理解,若使用加权平均,权值可以事先预置,例如根据数据表的数据在各存储介质中的比例来设。再例如,可以根据数据的分布情况,采用统计学的原理,使用现有的统计学公式,或者对现有的统计学公式进行简单的调整后计算。再例如,可以制定一个映射关系,即第二层聚簇因子与一些量之间的映射关系,这些量可以是一个表的第一层聚簇因子的取值,用于表征该表的数据在存储介质中的分布情况的值、用于表示该表要执行的算法的加权因子等中的至少一种。一种实现方式下,所述第一运算为连接(join),所述第一数据表为所述运算中的外表(outer),所述算子为混合连接(HybridJoin)、嵌套循环连接(NestedLoopsJoin)、哈希连接(HashJoin)以及排序合并连接中的一种。应理解,该第一运算也可以是其他运算,例如位图索引,或者索引间联合过滤相关操作(如BITMAPINDEXANDING)。一种实现方式下,逻辑聚簇因子将影响IndexANDING算子的选取。一种实现方式下,该方法还包括:根据第一标识,确定所述第一数据表中的第一数据和第二数据,所述第一标识用于指示存储数据表中数据的存储介质的类型。一种实现方式下,所述对所述第一数据,生成第一分执行计划,包括:根据第二标识,生成所述第一分执行计划,所述第二标识用于标记数据表中存储于固态硬盘SSD介质上的数据。这样,使用一个标识来区分不同存储介质上的数据的读取方式,更加简便直观第二方面,提供一种执行计划的生成装置,该执行计划包括第一分执行计划和第二分执行计划,该生成装置包括:解析器,用于解析得到的数据操纵语言DML语句,以确定所述DML语句对应的第一数据本文档来自技高网
...

【技术保护点】
1.一种执行计划的生成方法,其特征在于,所述执行计划包括第一分执行计划和第二分执行计划,所述方法包括:解析得到的数据操纵语言DML语句,以确定所述DML语句对应的第一数据表,所述第一数据表包括存储在固态硬盘SSD介质上的第一数据,以及存储在机械硬盘HDD介质上的第二数据;对所述第一数据,生成所述第一分执行计划,所述第一分执行计划包括通过表扫描读取所述第一数据;对所述第二数据,生成所述第二分执行计划,所述第二分执行计划包括在所述第二数据需要预排序的情况下,对所述第二数据预排序后,读取经过预排序的所述第二数据;在所述第二数据无需预排序的情况下,通过表扫描读取所述第二数据。

【技术特征摘要】
1.一种执行计划的生成方法,其特征在于,所述执行计划包括第一分执行计划和第二分执行计划,所述方法包括:解析得到的数据操纵语言DML语句,以确定所述DML语句对应的第一数据表,所述第一数据表包括存储在固态硬盘SSD介质上的第一数据,以及存储在机械硬盘HDD介质上的第二数据;对所述第一数据,生成所述第一分执行计划,所述第一分执行计划包括通过表扫描读取所述第一数据;对所述第二数据,生成所述第二分执行计划,所述第二分执行计划包括在所述第二数据需要预排序的情况下,对所述第二数据预排序后,读取经过预排序的所述第二数据;在所述第二数据无需预排序的情况下,通过表扫描读取所述第二数据。2.根据权利要求1所述的生成方法,其特征在于,所述对所述第一数据,生成第一分执行计划,包括:根据所述第一数据的虚聚簇因子的值,生成所述第一分执行计划,所述第一数据的虚聚簇因子表示通过索引读取所述存储于SSD存储介质中的第一数据的代价。3.根据权利要求2所述的方法,所述方法还包括:根据所述第一数据所在的存储介质的随机I/O,确定所述第一数据的虚聚簇因子。4.根据权利要求1到3任一所述的生成方法,其特征在于,所述方法还包括:根据所述第一数据表的逻辑聚簇因子的值,确定所述执行计划中第一算子,所述第一算子对应于所述第一数据表与第二数据表之间的第一运算,所述第一数据表的逻辑聚簇因子用于替代所述第一数据表的聚簇因子,用于表示以所述第一数据表为整体,通过索引读取所述第一数据表的代价。5.根据权利要求4所述的生成方法,其特征在于,所述方法还包括:根据所述第一数据的虚聚簇因子和所述第二数据的聚簇因子,计算所述第一数据表的逻辑聚簇因子,所述第一数据的虚聚簇因子用于表示通过索引读取所述存储于SSD存储介质中的第一数据的代价,所述第二数据的聚簇因子用于表示通过索引读取所述存储于HHD存储介质中的第二数据的代价。6.根据权利要求4所述的生成方法,其特征在于,所述第一运算为连接(join),所述第一数据表为所述运算中的外表(outer),所述算子为混合连接(HybridJoin)、嵌套循环连接(NestedLoopsJoin)、哈希连接(HashJoin)以及排序合并连接中的一种。7.根据权利要求1所述的生成方法,其特征在于,所述方法还包括:根据第一标识,确定所述第一数据表中的第一数据和第二数据,所述第一标识用于指示存储数据表中数据的存储介质的类型。8.根据权利要求1所述的生成方法,其特征在于,所述对所述第一数据,生成第一分执行计划,包括:根据第二标识,生成所述第一分执行计划,所述第二标识用于标记数据表中存储于固态硬盘SSD介质上的数据。9.一种执行计划的生成装置,其特征在于,所述执行计划包括第一分执行计划和第二分执行计划,所述生成装置包括:解析器,用于解析得到的数据操纵语言DML语句,以确定所述DML语句对应的第一数据表,所述第一数据表包括存储在固态硬盘S...

【专利技术属性】
技术研发人员:杨新颖
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:广东,44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1