一种数据表索引集合生成方法及装置的制造方法

文档序号:9564604阅读:194来源:国知局
一种数据表索引集合生成方法及装置的制造方法
【技术领域】
[0001] 本发明涉及数据性能优化技术领域,尤其涉及一种数据表索引集合生成方法及装 置。
【背景技术】
[0002] 现有的索引设计评估方法,主要是根据设计者设计的索引字段的选择性,或应用 程序在计算机系统上运行时的性能分析来进行的粗略评估。如:某设计者在某个表上的几 个字段建立了索引,如果是基于代价优化器的数据库引擎产品,则可以在相关表有了一定 量数据后,采用数据库的指令对表进行表分析,从而获取相关索引字段的唯一值数(相当 于字段的数量),将唯一值数与相关索引字段的总行数比较,就可以判断出索引字段的选择 性好坏;或是,通过结构化查询语言(SQL, Structured Query Language)性能分析工具分析 特定应用程序访问数据库的SQL语句在数据库运行时的性能情况,来判定索引设计的是否 合理,这里,主要判定要素为数据库优化器计算的通过索引访问表的代价。
[0003] 但是,现有判断索引设计合理性的方法仍存在不足,主要包括:
[0004] 1、通过索引字段选择性判断的方法,无法识别某些特定场景。如,在选择性好的字 段上建立了索引,但实际应用程序在运行中却较少用到该字段进行查询,表面上此种情况 通过字段选择性判断索引是合理的,但实际情况却并非如此。并且,所建立的索引属于冗余 的、不需要的数据,该索引的存在会增加相关应用程序在做数据操作时的CPU资源消耗,降 低应用程序的性能,浪费存储资源。
[0005] 2、通过采集应用程序访问数据库SQL的性能数据进行分析评估的情况,可以评估 某些索引对特定应用程序的设计合理性。如,使用某个索引应用程序效率很慢,新建一个索 引并采用后应用程序效率变快了。但是,这种方式只是根据一段时间内运行的应用程序得 到的索引,没有考虑其他未运行的应用程序。因此,这种方式无法评估一个系统中全部应用 程序对索引访问的索引集合,上述第1点中所采用的方法也面临同样的问题。

【发明内容】

[0006] 有鉴于此,本发明实施例期望提供一种数据表索引集合生成方法及装置,至少能 解决现有索引建立方法中存在的索引效率低的缺陷。
[0007] 本发明实施例的技术方案是这样实现的:
[0008] 本发明实施例提供了一种数据表索引集合生成方法,所述方法包括:
[0009] 扫描待分析数据表在数据库中的统计信息,根据所述统计信息对字段选择性信息 表进行更新;
[0010] 从数据库中采集应用程序运行时用到的SQL信息;
[0011] 对所述SQL信息进行解析,得到所述SQL信息对所述待分析数据表的字段和/或 组合字段的字段组合频次,将所述字段组合频次更新至组合字段频次表中;
[0012] 根据所述组合字段频次表和所述字段选择性信息表对所述待分析数据表中的字 段和/或组合字段进行优化,得到对应所述待分析数据表的最优的数据表索引集合。
[0013] 优选地,所述根据所述统计信息对字段选择性信息表进行更新包括:
[0014] 根据所述统计信息计算所述待分析数据表中各字段的字段选择率;
[0015] 将所述字段选择率填入所述字段选择性信息表,实现对所述字段选择性信息表的 更新。
[0016] 优选地,所述字段选择率通过p (i) = n (i)/N计算;
[0017]其中,P (i)为待分析数据表中第i个字段的字段选择率;n (i)为待分析数据表中 第i个字段的唯一值数;N为待分析数据表记录总数。
[0018] 优选地,所述SQL信息包括SQL语句、SQL执行计划和SQL语句的执行次数。
[0019] 优选地,对所述SQL信息进行解析,得到所述SQL信息对所述待分析数据表的字段 和/或组合字段的字段组合频次,将所述字段组合频次更新至组合字段频次表中包括:
[0020] 从所述SQL信息中解析出检索字段和SQL执行计划;
[0021 ] 根据所述检索字段和SQL执行计划得到所述SQL语句的执行次数和/或SQL语句 的关联查询执行次数;
[0022] 将所述SQL语句的执行次数和/或SQL语句的关联查询执行次数换算成待分析数 据表的字段组合频次,并更新至组合字段频次表中。
[0023] 优选地,所述根据所述组合字段频次表和所述字段选择性信息表对所述待分析数 据表中的字段和/或组合字段进行优化,得到对应所述待分析数据表的最优的数据表索引 集合包括:
[0024] 根据所述字段选择性信息表中字段的选择率对所述组合字段频次表内的字段和/ 或组合字段按选择率由高到低的顺序进行排序;
[0025] 对排序后的开头字段相同的字段和/或组合字段进行合并;
[0026] 通过设定参数对合并后的字段和/或组合字段进行筛选,对筛选后的字段和/或 组合字段建立索引,得到对应所述待分析数据表的最优的数据表索引集合。
[0027] 本发明实施例还提供了一种数据表索引集合生成装置,所述装置包括:
[0028] 字段选择率初始化单元,用于扫描待分析数据表在数据库中的统计信息,根据所 述统计信息对字段选择性信息表进行更新;
[0029] SQL信息采集单元,用于从数据库中采集应用程序运行时用到的SQL信息;
[0030] SQL执行信息解析单元,用于对所述SQL信息进行解析,得到所述SQL信息对所述 待分析数据表的字段和/或组合字段的字段组合频次,将所述字段组合频次更新至组合字 段频次表中;
[0031] 数据表索引集合生成单元,用于根据所述组合字段频次表和所述字段选择性信息 表对所述待分析数据表中的字段和/或组合字段进行优化,得到对应所述待分析数据表的 最优的数据表索引集合。
[0032] 优选地,所述字段选择率初始化单元包括:
[0033]字段选择率计算模块,用于根据所述统计信息计算所述待分析数据表中各字段的 字段选择率;
[0034] 字段选择性信息表更新模块,用于将所述字段选择率填入所述字段选择性信息 表,实现对所述字段选择性信息表的更新。
[0035] 优选地,所述字段选择率通过p (i) = n (i) /N计算;
[0036] 其中,p (i)为待分析数据表中第i个字段的字段选择率;n (i)为待分析数据表中 第i个字段的唯一值数;N为待分析数据表中记录总数。
[0037] 优选地,所述SQL执行信息解析单元包括:
[0038] 解析模块,用于从所述SQL信息中解析出检索字段和SQL执行计划;
[0039] 关联查询执行次数模块,用于根据所述检索字段和SQL执行计划得到所述SQL语 句的执行次数和/或SQL语句的关联查询执行次数;
[0040] 组合字段频次表更新模块,用于将所述SQL语句的执行次数和/或SQL语句的关 联查询执行次数换算成待分析数据表的字段组合频次,并更新至组合字段频次表中。
[0041] 优选地,所述数据表索引集合生成单元包括:
[0042] 字段按选择率排序模块,用于根据所述字段选择性信息表中字段的选择率对所述 组合字段频次表内的字段和/或组合字段按选择率由高到低的顺序进行排序;
[0043] 字段合并单元,用于对排序后的开头字段相同的字段和/或组合字段进行合并;
[0044] 数据表索引集合生成模块,用于通过设定参数对合并后的字段和/或组合字段进 行筛选,对筛选后的字段和/或组合字段建立索引,得到对应所述待分析数据表的最优的 数据表索引集合。
[0045] 本发明实施例所提供的数据表索引集合生成方法及装置,通过获取待分析数据表 统计信息变更对字段选择性信息表进行更新,能提高字段选择性信息表中各字段选择率的 精度;通过对运行的应用程序使用的所述SQL信息进行解析,得到所述SQL信息对所述待分 析数据表的查询次数和/或SQL语句的关联查询执行次数信息,并更新至组合字段频次表; 通过字段选择性信息表和组合字段频次表对多个字段组合进行排序及合并,对筛选后的组 合字段建立数据表索引,能得到当前设定周期内的最优的数据表索引集合;如此,就能够去 除无效字段和低效字段,相应地,也去除了无效索引和低效索引,提升了应用系统在当前设 定周期内的整体性能,节约了存储资源;并且,能够使访问待分析数据表上的应用程序达到 最优的访问状态。
【附图说明】
[0046] 图1为本发明实施例1数据表索引集合生成方法的实现流程示意图;
[0047] 图2为本发明实施例2数据表索引集合生成装置的组成结构示意图;
[0048] 图3为本发明实施例3数据表索引集合生成方法的逻辑结构示意图;
[0049] 图4为本发明实施例3中字段选择率初始化单元功能实现的流程示意图;
[0050] 图5为本发明实施例3中SQL信息采集单元功能实现的流程示意图;
[0051] 图6为本发明实施例3中SQL执行信息解析单元功能实现的流程示意图;
[0052] 图7为本发明实施例3中数据表索引集合生成单元功能实现的流程示意图。
【具体实施方式】
[0053] 以下结合说明书附图及具体实施例对本发明的技术方案做进一步的详细阐述。
[0054] 实施例1
[0055] 为了解决现有技术存在的技术问题,本实施例
当前第1页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1