System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术涉及数据库索引,尤其涉及一种基于工作负载压缩的智能数据库索引调优系统。
技术介绍
1、在现代信息时代,数据管理已经成为企业和组织运营的重要组成部分。数据库系统是数据管理的核心工具之一,用于存储和检索大量数据。为了提高数据库的性能,数据库索引是不可或缺的,它能高效处理数据库工作负载,加速数据检索操作,减少查询响应时间。
2、随着当前各种业务场景的复杂化,应用软件对数据库性能的要求也越来越高,索引推荐技术作为一种可以根据工作负载自动分析并推荐出合适索引的技术,可以有效的加快因索引问题而导致的执行速度慢的查询语句的执行效率,从而提升数据库性能。而传统的索引推荐技术往往需要通过dba来分析查询语句然后根据经验来建立索引,需要的人工成本和时间成本较高。
3、目前常见的索引推荐算法大体分为离线索引推荐与在线索引推荐两大类。
4、离线索引选择算法是在数据库建立阶段或定期维护阶段执行的算法。它们的目标是从数据库的全量数据中选择最佳的索引以提高查询性能。常见的离线索引推荐算法有基于成本模型的算法、基于规则的算法和基于数据挖掘的算法。它们在全量的数据执行并考虑所有可能的查询和索引的组合,以为每种过去可见的查询提供最优的索引选择方案。
5、在线索引推荐算法是在查询执行过程中动态选择索引的算法。它们适用于需要实时性能优化的在线事务处理系统。常见的在线索引推荐算法包括基于动态规划的算法、基于在线学习的算法和基于查询计划改进的算法。它们或是使用动态规划算法或是基于机器学习如强化学习或是实时监视查询计
6、对于离线索引推荐算法来说,其通常依赖历史查询日志和统计信息来选择索引,如果历史数据不准确或工作负载模式发生变化,算法无法做出最优的索引推荐。对于需要实时响应的在线事务处理系统来说,离线算法会根据新的工作负载选择合适的训练数据重新训练模型来进行索引推荐。
7、在线索引推荐算法能够快速适应数据分布和工作负载模式的变化,解决了离线算法的问题。但在线算法需要在查询过程中进行额外的开销来选择索引,会导致查询性能下降。索引推荐的额外开销取决于以下因素:①工作负载中的查询数量,②枚举的索引配置数量,以及③查询优化器调用或what-if调用的数量。本专利技术将综合考量以上因素,采用工作负载压缩技术对数据库索引选择算法进行改进。
8、关于工作负载压缩技术,一个比较简单的方法是随机抽样查询的子集。然而,这种方法无法捕获查询之间的相似性,并且经常会遗漏在工作负载中较少出现却可能导致性能显著提高的查询。另外,也有一种基于聚类的方法,对具有相同查询模板的查询(即只有参数不同的查询)进行分组。然后,通过从每个簇中采样来选择压缩工作负载中的查询。然而,实际的工作负载可能比期望的压缩工作负载大小有更多的模板,并且无法量化具有不同模板的查询之间的相似性,该方法的有效性就会随之降低。
技术实现思路
1、本专利技术要解决的技术问题是针对上述现有技术的不足,提供一种基于工作负载压缩的智能数据库索引调优系统,综合考量查询响应时间、工作负载规模、模型额外开销等指标,根据不同工作负载调整索引选择策略。
2、为解决上述技术问题,本专利技术所采取的技术方案是:一种基于工作负载压缩的智能数据库索引调优系统,包括工作负载压缩模块和索引调优模块;其中索引调优模块由三个子模块构成,分别为查询分析模块、候选索引生成模块与索引选择模块;
3、所述工作负载压缩模块在用于索引调优的输入工作负载中找到一个更小的查询子集,实现工作负载压缩;
4、所述查询分析模块对查询日志中的每一条查询进行解析,获取到相应查询上的投影、选择与排序操作使用到的字段组合;
5、所述候选索引生成模块基于查询分析模块产生的字段组合生成候选索引;
6、所述索引选择模块从候选索引中选择一组索引总大小不超过用户给定空间阈值的索引集合。
7、优选地,查询分析模块按照查询对文件的操作方式将查询分为读查询与写查询;所述读查询指仅包含select操作的查询,写查询则为包含insert/delete/update操作的查询;查询分析模块对查询日志中的每一条查询进行解析,解析过程包含词法分析与语法分析两个步骤;在进行词法/语法分析的时候,同时能检验解析的sql查询是否符合查询语言的词法与语法规则;解析后的查询表示为一个解析树的结构,通过该结构获取到相应查询上的投影、选择与排序操作使用到的字段组合。
8、优选地,所述工作负载压缩模块进行负载压缩的具体方法为:
9、步骤1:计算初始工作负载集合中每个查询的特征和收益值,并初始化一个空的集合作为压缩后的工作负载集合;
10、步骤2:选择收益值最大的查询,加入到压缩后的工作负载集合中;
11、步骤3:更新每个未被选择的查询的收益值;
12、采用如下更新方法更新每个未被选择的查询的收益值,如下公式所示:
13、b′(qj)=b(qj)-u(qj)×s(qi,qj)
14、其中,b′(qj)为查询qj的收益值;
15、步骤4:如果压缩后的工作负载集合大小达到阈值k,则执行步骤5;否则,重新执行步骤2;
16、步骤5:获得压缩后的带权重的工作负载集合。
17、优选地,所述每个查询的特征和收益值的计算方法为:
18、使用可索引列作为查询的特征,并使用最小-最大归一化计算标准化的可索引列权重作为查询的特征值;可索引列的权重计算方法如下:
19、w(c)=(1-s(c))×wtable(t)
20、其中,w(c)为可索引列c的权重,s(c)为可索引列c的密度,wtable(t)为可索引列所在表t的权重,与表的大小成正比;
21、每个查询的收益值b分为实用值u和影响值f两部分;
22、实用值u表示一个查询由于索引而降低查询成本的潜力,取决于查询中操作的开销;使用△(qi)作为索引对查询成本的减少的估计值,如下公式所示:
23、△(qi)=(1-sel(qi))×c(qi)
24、其中,c(qi)为第i个查询qi不使用任何索引的查询成本,sel(qi)是查询中过滤操作和连接操作所涉及到的列的平均选择度;
25、查询的实用值u表示为:
26、
27、其中,w为初始工作负载集合;
28、影响值f的含义是当选择某一个查询进行索引调优时,另一个与之相似的查询的查询成本也会随之降低;
29、查询的影响值f表示为:
30、
31、其中,为查询qi的影响值,s(qi,qj))为两个查询qi,qj之间的相似度,两个查询qi,qj之间的相似度使用加权jaccard来计算,wk为第k次迭代时的工作负载集合;
32、最终,一个查询的本文档来自技高网...
【技术保护点】
1.一种基于工作负载压缩的智能数据库索引调优系统,其特征在于:包括工作负载压缩模块和索引调优模块;其中索引调优模块由三个子模块构成,分别为查询分析模块、候选索引生成模块与索引选择模块;
2.根据权利要求1所述的一种基于工作负载压缩的智能数据库索引调优系统,其特征在于:所述工作负载压缩模块进行负载压缩的具体方法为:
3.根据权利要求2所述的一种基于工作负载压缩的智能数据库索引调优系统,其特征在于:所述每个查询的特征和收益值的计算方法为:
4.根据权利要求3所述的一种基于工作负载压缩的智能数据库索引调优系统,其特征在于:所述步骤3采用如下更新方法更新每个未被选择的查询的收益值,如下公式所示:
5.根据权利要求1所述的一种基于工作负载压缩的智能数据库索引调优系统,其特征在于:所述查询分析模块按照查询对文件的操作方式将查询分为读查询与写查询;所述读查询指仅包含Select操作的查询,写查询则为包含Insert/Delete/Update操作的查询;查询分析模块对查询日志中的每一条查询进行解析,解析过程包含词法分析与语法分析两个步骤;在进行词
6.根据权利要求5所述的一种基于工作负载压缩的智能数据库索引调优系统,其特征在于:所述索引调优模块进行索引调优的过程如下:
7.根据权利要求6所述的一种基于工作负载压缩的智能数据库索引调优系统,其特征在于:所述索引等级评价星级标准如下:
8.根据权利要求6所述的一种基于工作负载压缩的智能数据库索引调优系统,其特征在于:所述索引选择模块从候选索引集合中选择一组索引总大小不超过用户给定空间阈值M的索引集合的具体方法为:
...【技术特征摘要】
1.一种基于工作负载压缩的智能数据库索引调优系统,其特征在于:包括工作负载压缩模块和索引调优模块;其中索引调优模块由三个子模块构成,分别为查询分析模块、候选索引生成模块与索引选择模块;
2.根据权利要求1所述的一种基于工作负载压缩的智能数据库索引调优系统,其特征在于:所述工作负载压缩模块进行负载压缩的具体方法为:
3.根据权利要求2所述的一种基于工作负载压缩的智能数据库索引调优系统,其特征在于:所述每个查询的特征和收益值的计算方法为:
4.根据权利要求3所述的一种基于工作负载压缩的智能数据库索引调优系统,其特征在于:所述步骤3采用如下更新方法更新每个未被选择的查询的收益值,如下公式所示:
5.根据权利要求1所述的一种基于工作负载压缩的智能数据库索引调优系统,其特征在于:所述查询分析模块按照查询对文件的操作方式将查询分为读查询与写查询;所述读查询指仅包含sel...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。