本发明涉及计算机
技术领域:
,具体地说是一种通过动态分析创建数据库索引的方法。
背景技术:
:在传统管理软件产品中,表索引的创建均是根据开发者的设计及应用预估为依据。目前功能开发灵活性较大,查询条件设置相当灵活。受功能需求扩展及人员分工、流动的影响,不同的人会对于同一个表进行应用开发。这种模式下,对于数据表索引的创建就会显得不可预知,同时可能相互负面影响,增大查询成本。基于此,本发明提供一种通过动态分析创建数据库索引的方法,本发明抽象了查询SQL语句的结构,对应用频率进行大数据统计分析,依据实际应用情况创建合理的表索引,达到提高表的查询效率。可以匹配目前应用开发所常用的数据库管理系统,及应用这些的管理应用软件。技术实现要素:本发明的技术任务是针对以上不足之处,提供一种通过动态分析创建数据库索引的方法。一种通过动态分析创建数据库索引的方法,其实现过程为:捕获数据库执行语句,解析查询结构;设置查询结构计数器模型,将解析后数值放入计数器中;设置计数阈值,计数器达到阈值范围,检查数据表的索引情况;根据索引检查情况及处理策略,创建及调整数据表索引。捕获数据库执行语句是指捕获所有执行的查询SQL,捕获方式为应用程序数据库执行过程过滤或数据库工具执行分析,通过查询SQL特点,通过字符串处理策略对语句进行解析。所述SQL组件在数据库表中预制并且由该数据库表提供,用于捕捉特定表执行的查询语句,在进行查询执行的时候,将这些SQL捕获并记录;此外,数据库表还提供对数据库查询缓存进行检索,收集对特定表的查询语句。解析查询结构是指将查询动作进行解析,一个查询动作可提取若干关键字,该关键字包括查询、排序、分组、过滤的字段组合,然后记录SQL语句结构分析结果及频次,最后将每个关键组合的出现频率进行计数。阈值设置是指设置对表的某个关键组合的访问频次的上限,以及各关键组合的最大访问时间。根据索引检查情况及处理策略创建数据表索引是指根据索引比对情况及处理策略,动态调整数据表索引,即将索引处理方式抽象成一个接口,其中包含查询、阈值比对、关键组合对比、撤销、新建的处理方式,以满足索引优化服务;同时检测阈值范围、索引处理方式及查询语句执行性能分析,进行索引动态日志查看服务,以便进行包括调整阈值、系统维护日志的工作。本发明的一种通过动态分析创建数据库索引的方法和现有技术相比,具有以下有益效果:本发明的一种通过动态分析创建数据库索引的方法以系统用户实际使用情况,更贴近应用实际,更易解决实际问题;根据实际应用情况,可以随时应变,随时调整,更适应不同时间段不同应用场景的需求;更易于系统管理员维护,直观的功能处理展示更易上手;适用范围广泛,易于推广。附图说明附图1为本发明方法中索引动态创建过程图。具体实施方式下面结合附图及具体实施例对本发明作进一步说明。如附图1所示,本发明的一种通过动态分析创建数据库索引的方法,具体而言是指如何通过一种方法,无须系统开发人员或维护人员实时进行表索引的优化操作,根据数据表查询应用情况动态更新表索引。特别适合于基于表的产品和不断进行功能增强的连续开发的情景。从而使软件产品更加符合使用者的要求,在一定程度上做到随需应变。其实现过程为:捕获数据库执行语句,解析查询结构;设置查询结构计数器模型,将解析后数值放入计数器中;设置计数阈值,计数器达到阈值范围,检查数据表的索引情况;根据索引检查情况及处理策略,创建及调整数据表索引。捕获数据库执行语句是指捕获所有执行的查询SQL,捕获方式为应用程序数据库执行过程过滤或数据库工具执行分析,通过查询SQL特点,通过字符串处理策略对语句进行解析。所述SQL组件在数据库表中预制并且由该数据库表提供,用于捕捉特定表执行的查询语句,在进行查询执行的时候,将这些SQL捕获并记录;此外,数据库表还提供对数据库查询缓存进行检索,收集对特定表的查询语句。解析查询结构是指将查询动作进行解析,一个查询动作可提取若干关键字,该关键字包括查询、排序、分组、过滤的字段组合,然后记录SQL语句结构分析结果及频次,最后将每个关键组合的出现频率进行计数。阈值设置是指设置对表的某个关键组合的访问频次的上限,以及各关键组合的最大访问时间。根据索引检查情况及处理策略创建数据表索引是指根据索引比对情况及处理策略,动态调整数据表索引,即将索引处理方式抽象成一个接口,其中包含查询、阈值比对、关键组合对比、撤销、新建的处理方式,以满足索引优化服务;同时检测阈值范围、索引处理方式及查询语句执行性能分析,进行索引动态日志查看服务,辅助系统维护人员调整阈值、系统维护日志等工作。实施例:1)动态索引创建总体工作流程,如附图1所示。2)跟踪表及阈值预置的实现过程如下:设计可用字符串连接字段,用表SIBASE记录。字段编号字段名称字段类型说明SIBASE_TABLE逻辑表名Varchar(30)唯一表名SIBASE_MINNUM阈值起始Int最小计数值SIBASE_MAXNUM阈值终止Int最大计数值SIBASE_TIME执行时间Int以毫秒为单位记录执行上限SIBASE_TABLE字段记录需要进行动态索引创建的表;SIBASE_MINNUM字段用于设置计数最小值,低于此值,相关索引删除;SIBASE_MAXNUM字段用于设置计数最大值,高于此值,相关索引创建;SIBASE_TIME字段用于设置SQL执行时间最大值,高于此值,计数双倍加速。3)SQL结构分析及记录。设计表SISTRUCT用来记录,表的结构如下:4)阈值比对及索引动态处理。根据B表中的阈值记录,对C表中的计数进行比对,当C表中某项组合的计数范围,超过了B表中设置的阈值最大值,则创建索引;同时对表的已建索引同B、C表进行比对校验,如果计数未达到,进行删除。此处理逻辑,通过自动调度每天凌晨系统空闲时进行。5)动态索引日志查看。功能图形如下:通过上面具体实施方式,所述
技术领域:
的技术人员可容易的实现本发明。但是应当理解,本发明并不限于上述的具体实施方式。在公开的实施方式的基础上,所述
技术领域:
的技术人员可任意组合不同的技术特征,从而实现不同的技术方案。除说明书所述的技术特征外,均为本专业技术人员的已知技术。当前第1页1 2 3