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

文档序号:9564604阅读:来源:国知局
提供了一种数据表索引集合生成方 法,如图1所示,该方法包括以下步骤:
[0056] SlOl :扫描待分析数据表在数据库中的统计信息,根据所述统计信息对字段选择 性信息表进行更新;
[0057] 这里,可以预先设置扫描周期,在每个扫描周期的开始时刻对待分析数据表在数 据库中的统计信息进行扫描;
[0058] 其中,所述待分析数据表是数据库中已有的表格,包含全部设定周期的所有应用 程序用到的字段信息,即:待分析数据表能够反映字段的历史信息;所述字段选择性信息 表用于按选择率由高到低的顺序存放字段。
[0059] 当待分析数据表内的字段信息发生变化时,对应待分析数据表的统计信息也会发 生变化;这里,统计信息包括待分析数据表的变化信息,而待分析数据表又包括各种字段, 所以,当发现统计信息有更新时,对待分析表的字段选择率进行重新计算,实现对字段选择 性信息表的更新;这里,所述字段选择性信息表保存在数据库中。
[0060] S102 :从数据库中采集应用程序运行时用到的SQL信息;
[0061] 这里,所采集到的SQL信息可以保存在SQL采集信息表中,进一步的,所述SQL采 集信息表保存在数据库中,所述SQL采集信息表包含有当前设定周期内的全部SQL信息。
[0062] S103 :对所述SQL信息进行解析,得到所述SQL信息对所述待分析数据表的字段和 /或组合字段的字段组合频次,将所述字段组合频次更新至组合字段频次表中;
[0063] 这里,所述组合字段频次表保存在数据库中,用于存放所述SQL信息对所述待分 析数据表的字段和/或组合字段的查询次数信息。
[0064] S104:根据所述组合字段频次表和所述字段选择性信息表对所述待分析数据表中 的字段和/或组合字段进行优化,得到对应所述待分析数据表的最优的数据表索引集合; [0065] 这里,通过对待分析数据表的分析得到所述字段选择性信息表;将所述SQL采集 信息表和所述对待分析数据表结合分析,得到所述组合字段频次表;
[0066] 具体的,所述优化包括:查询所述字段选择性信息表和所述组合字段频次表中的 字段,得到选择率高的字段,并对选择率高的字段进行合并和筛选,对筛选后的字段建立数 据表索引。
[0067] 本发明实施例通过待分析数据表对字段选择性信息表进行更新,能提高字段选择 性信息表中各字段选择率的精度;通过对运行的应用程序使用的所述SQL信息进行解析, 得到所述SQL信息对所述待分析数据表的查询次数信息,能反应在当前设定周期内字段的 选择率;通过字段选择性信息表和组合字段频次表确定待分析数据表中的字段和/或组合 字段的字段选择率,并根据字段选择率对多个字段综合分析,能够去除无效字段和低效字 段;相应地,也去除了无效索引和低效索引,提升了应用系统的整体性能,节约了存储资源; 最终得到的最优的数据表索引,能够使得访问待分析数据表上的应用程序达到最优的访问 状态。
[0068] 具体的,步骤SlOl根据所述统计信息对字段选择性信息表进行更新,包括:
[0069] SlOll :根据所述统计信息计算所述待分析数据表中各字段的字段选择率;
[0070] 这里,所述字段选择率通过P (i) = n (i)/N计算;
[0071]其中,P (i)为待分析数据表中第i个字段的字段选择率;n (i)为待分析数据表中 第i个字段的唯一值数。字段的唯一值数是指:一个数据表的某个字段中不同值的数量,如 A表的a字段,A表有100条记录,但A表的a字段所有的记录都只有两种取值,则n (i)的 值为2 ;N为待分析数据表记录总数。
[0072] S1012 :将所述字段选择率填入所述字段选择性信息表,实现对所述字段选择性信 息表的更新。
[0073] 然后,步骤S102中,通过数据库接口可以获取正在运行的SQL信息并保存至SQL 采集信息表中;
[0074] 其中,所述SQL采集信息表包括SQL语句、SQL执行计划和SQL语句的执行次数。 [0075] 之后,步骤S103中,对所述SQL信息进行解析,得到所述SQL信息对所述待分析数 据表的查询次数信息,将所述查询次数信息更新至组合字段频次表中,包括 :
[0076] 从所述SQL信息中解析出检索字段和SQL执行计划;根据所述检索字段和SQL执 行计划得到所述SQL语句的执行次数和/或SQL语句的关联查询执行次数;将所述SQL语 句的执行次数和/或SQL语句的关联查询执行次数换算成待分析数据表的字段组合频次, 并更新至组合字段频次表中。其中,所述关联查询执行次数是指在对多个数据表(如数据 表为嵌套循环关联等)进行查询时,根据数据表连接的SQL执行计划来确定字段的查询次 数。
[0077] 步骤103的详细过程包括:
[0078] S1031 :读取所述SQL信息中的一条未分析的所述SQL语句,从所述SQL语句中解 析出所述SQL语句在所述待分析数据表中的检索字段;
[0079] S1032 :根据所述检索字段查询所述SQL语句是否和所述待分析数据表相关,若 是,则进入步骤S1033 ;否则进入步骤S1039 ;
[0080] S1033 :对所述检索字段进行判断,若所述检索字段为单表查询,则进入步骤 S1037 ;否则,所述检索字段为多表的关联查询,进入步骤S1034 ;
[0081] S1034 :查询所述待分析数据表是否为驱动表,若是,且所述SQL语句对应的所述 SQL执行计划不是嵌套循环,则进入步骤S1037 ;否则进入步骤S1035 ;
[0082] S1035 :从所述SQL执行计划中解析出关联表的行源数,进入步骤S1036 ;
[0083] S1036 :判断所述SQL执行计划是否为嵌套循环,若是,则进入步骤S1038 ;否则进 入步骤S1037 ;
[0084] S1037:获取在设定周期内的所述SQL语句的执行次数,结合所述检索字段更新所 述组合字段频次表的信息,进入步骤S1039 ;
[0085] S1038 :获取在设定周期内的所述SQL语句的执行次数,将所述SQL语句的执行次 数乘以所述关联表的行源数得到SQL语句的关联查询执行次数,结合所述检索字段更新所 述组合字段频次表的信息,进入步骤S1039 ;
[0086] S1039 :判断是否读取完设定周期内的所述SQL采集信息表的全部所述SQL语句, 若是,则结束本处理流程;否则返回步骤S1031。
[0087] 最后,步骤S104中,根据所述组合字段频次表和所述字段选择性信息表对所述待 分析数据表中的字段和/或组合字段进行分析,得到对应所述待分析数据表的最优的数据 表索引集合,包括:
[0088] S1041 :根据所述字段选择性信息表中字段的选择率,对所述组合字段频次表内的 字段和/或组合字段按选择率由高到低的顺序进行排序;
[0089] S1042 :对排序后的开头字段相同的字段和/或组合字段进行合并;
[0090] S1043 :通过设定参数对合并后的字段和/或组合字段进行筛选,对筛选后的字段 和/或组合字段建立索引,得到对应所述待分析数据表的最优的数据表索引集合。
[0091] 步骤S104得到选择率高的字段,并对选择率高的字段进行合并和筛选,对筛选后 的字段建立数据表索引,这样,就去除了无效字段和低效字段;相应地,也去除了无效索引 和低效索引,提升了应用系统的整体性能,节约了存储资源;得到最优的数据表索引集合 后,应用程序通过最优的数据表索引中的字段进行数据访问。根据上面的描述可知,此时的 最优的数据表索引集合是去除无效和低效字段后的索引,所以,能够使得应用程序达到最 优的访问状态。
[0092] 实施例2
[0093] 本实施例和实施例1属于同一发明构思。本实施例提供了一种数据表索引集合生 成装置,本实施例的装置结构图如图2所示,该装置包括:
[0094] 字段选择率初始化单元201,用于扫描待分析数据表在数据库中的统计信息,根据 所述统计信息对字段选择性信息表进行更新;
[0095] SQL信息采集单元202,用于从数据库中采集应用程序运行时用到的SQL信息;
[0096] 这里,所采集到的SQL信息可以保存在SQL采集信息表中;所述SQL采集信息表包 括SQL语句、SQL执行计划和SQL语句的执行次数;
[0097] SQL执行信息解析单元203,用于对所述SQL信息进行解析,得到所述SQL信息对 所述待分析数据表的字段和/或组合字段的字段组合频次,将所述字段组合频次更新至组 合字段频次表中;
[0098] 数据表索引集合生成单元204,用于根据所述组合字段频次表和所述字段选择性 信息表对所述待分析数据表中的字段和/或组合字段进行优化,得到对应所述待分析数据 表的最优的数据表索引集合。
[0099] 其中,所述字段选择率初始化单元201包括:字段选择率计算模块2011和字段选 择性信息表更新模块2012 ;其中,
[0100]字段选择率计算模块2011,用于根据所述统计信息计算所述待分析数据表中各字 段的字段选择率;
[0101] 所述字段选择率通过P (i) = n (i)/N计算;
[0102] 其中,p (i)为待分析数据表中第i个字段的字段选择率;n (i)为待分析数据表中 第i
当前第2页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1