数据库索引处理方法和装置制造方法

文档序号:6521311阅读:221来源:国知局
数据库索引处理方法和装置制造方法
【专利摘要】本发明公开了一种数据库索引处理方法和装置。其中,数据库索引处理方法包括:获取预先添加的索引的注释信息,注释信息用于记录索引使用的原始格式;对注释信息进行解析,得到注释信息记录的索引使用的原始格式;获取索引的元数据;将注释信息记录的索引使用的原始格式与索引的元数据进行对比;以及根据对比结果得到索引的使用信息。通过本发明,达到了对索引的使用情况进行检测的效果,便于对索引进行维护。
【专利说明】数据库索引处理方法和装置
【技术领域】
[0001]本发明涉及数据库领域,具体而言,涉及一种数据库索引处理方法和装置。
【背景技术】
[0002]在数据库的使用中,索引的使用非常频繁,对数据库的性能有很大的影响,因此需要对一些索引做长期维护。在现有技术中,这些索引都靠人工去记忆索引的使用情况,但在经过很长一段时间之后,会忘记当初建立的索引是为哪些情况使用的,在哪些结构化查询语言(structured Query Language,简称为SQL)里有使用。由于无法对索引的使用情况进行检测,从而无法得知这些索引的使用情况,导致无法评估索引在使用中所造成的影响。
[0003]针对现有技术中无法检测索引的使用情况的问题,目前尚未提出有效的解决方案。

【发明内容】

[0004]本发明的主要目的在于提供一种数据库索引处理方法和装置,以解决现有技术中无法检测索引的使用情况的问题。
[0005]为了实现上述目的,根据本发明的一个方面,提供了一种数据库索引处理方法。根据本发明的数据库索引处理方法包括:获取预先添加的索引的注释信息,注释信息用于记录索引使用的原始格式;对注释信息进行解析,得到注释信息记录的索引使用的原始格式;获取索引的元数据;将注释信息记录的索引使用的原始格式与索引的元数据进行对比;以及根据对比结果得到索引的使用信息。
[0006]进一步地,将注释信息记录的索引使用的原始格式与索引的元数据进行对比包括:判断注释信息记录的索引使用的原始格式与索引的元数据是否匹配,根据对比结果得到索引的使用信息包括:如果判断出注释信息记录的索引使用的原始格式与索引的元数据不匹配,则输出提示信息,提示信息用于提示注释信息记录的索引使用的原始格式与索引不匹配;从提示信息中得到索引的使用信息。
[0007]进一步地,获取预先添加的索引的注释信息包括:获取数据库中存储过程或函数的定义语句,定义语句用于定义数据库中的存储过程或函数;对定义语句进行解析,得到多段SQL语句;以及获取多段SQL语句中每一段SQL语句的注释信息。
[0008]进一步地,在将注释信息记录的索引使用的原始格式与索引的元数据进行对比之后,数据库索引处理方法还包括:输出对比结果;以视图形式显示对比结果;以及从视图中获取需要更新的索引的注释信息进行更新。
[0009]进一步地,获取索引的元数据包括:获取数据库中所有索引的元数据;以及从所有索引的元数据中获取每一个索引的定义信息。
[0010]为了实现上述目的,根据本发明的另一方面,提供了一种数据库索引处理装置。根据本发明的数据库索引处理装置包括:第一获取单元,用于获取预先添加的索引的注释信息,注释信息用于记录索引使用的原始格式;解析单元,用于对注释信息进行解析,得到注释信息记录的索引使用的原始格式;第二获取单元,用于获取索引的元数据;比较单元,用于将注释信息记录的索引使用的原始格式与索引的元数据进行对比;以及生成单元,用于根据对比结果得到索引的使用信息。
[0011]进一步地,比较单元包括:判断模块,用于判断注释信息记录的索引使用的原始格式与索引的元数据是否匹配,生成单元包括:输出模块,用于如果判断出注释信息记录的索引使用的原始格式与索引的元数据不匹配,则输出提示信息,提示信息用于提示注释信息记录的索引使用的原始格式与索引不匹配;生成模块,用于从提示信息中得到索引的使用信息。
[0012]进一步地,第一获取单元包括:第一获取模块,用于获取数据库中存储过程或函数的定义语句,定义语句用于定义数据库中的存储过程或函数;解析模块,用于对定义语句进行解析,得到多段SQL语句;以及第二获取模块,用于获取多段SQL语句中每一段SQL语句的注释信息。
[0013]进一步地,数据库索引处理装置还包括:输出单元,用于在将注释信息记录的索引使用的原始格式与索引的元数据进行对比之后,输出对比结果;显示单元,用于以视图形式显示对比结果;以及第三获取单元,用于从视图中获取需要更新的索引的注释信息进行更新。
[0014]进一步地,第二获取单元包括:第三获取模块,用于获取数据库中所有索引的元数据;以及第四获取模块,用于从所有索引的元数据中获取每一个索引的定义信息。
[0015]通过本发明,采用数据库索引处理方法,通过将解析后的注释信息与索引的元数据进行对比,从对比结果得到索引的使用信息,从而检测得到索引的使用情况,进而解决了现有技术中无法检测索引的使用情况的问题,达到了对索引的使用情况进行检测的效果,便于对索引进行维护。
【专利附图】

【附图说明】
[0016]构成本申请的一部分的附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
[0017]图1是根据本发明第一实施例的数据库索引处理装置的结构示意图;
[0018]图2是根据本发明第二实施例的数据库索引处理装置的结构示意图;
[0019]图3是根据本发明第三实施例的数据库索引处理装置的结构示意图;
[0020]图4是根据本发明第一实施例的数据库索引处理方法的流程图;
[0021]图5是根据本发明第二实施例的数据库索引处理方法的流程图;以及
[0022]图6是根据本发明第三实施例的数据库索引处理方法的流程图。
【具体实施方式】
[0023]需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本发明。
[0024]为了使本【技术领域】的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
[0025]需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
[0026]本发明实施例提供了 一种数据库索引处理装置,该装置可以通过计算机设备实现其功能。
[0027]图1是根据本发明第一实施例的数据库索引处理装置的结构示意图。如图1所示,该数据库索引处理装置包括:第一获取单元10、解析单元20、第二获取单元30、比较单元40和生成单元50。
[0028]第一获取单元10用于获取预先添加的索引的注释信息,注释信息用于记录索引使用的原始格式。
[0029]注释信息用于记录索引使用的原始格式,例如:注释信息可以是一@Index:Tablel.1ndexl,通过该注释信息就可以知道其对应的SQL语句使用的是Tablel上的Indexl索引。注释信息的格式可以根据工作人员的需要进行定义,不限定于任何形式的定义方式,对注释信息进行定义,以便于在对索引进行维护时,可以通过采用与定义方式相对应的方式对注释信息进行解析,从解析结果中得知SQL语句使用的是哪一个索引。
[0030]在定义了索引的注释信息的格式之后,可以通过一定的规则对SQL语句添加索引的注释信息,记录每一句使用索引的SQL语句的注释信息。可以是在开发期间,预先对SQL语句添加注释信息,其中,SQL语句可以是数据库的每一个存储过程或者方法函数的定义语句中使用索引的SQL语句。
[0031]索引的注释信息可以是对SQL语句添加的索引注释信息,在预先添加索引的注释信息之后,获取预先添加的索引的注释信息,以便于对该注释信息进行解析,从而得知相应的SQL语句使用的是那张表中的哪个索引。
[0032]解析单元20用于对注释信息进行解析,得到注释信息记录的索引使用的原始格式。
[0033]在获取预先添加的索引的注释信息之后,对获取到的注释信息进行解析,解析过程可以是采用与注释信息定义的方式相对应的解析方式进行解析。由于注释信息用于记录索引使用的原始格式,所以在对注释信息进行解析之后,就可以得到索引的使用情况,例如注释信息为:一@Index:Tablel.1ndexl,通过解析之后,就可以知道其对应的SQL语句使用的是表Tablel上的Indexl索引。
[0034]第二获取单元30用于获取索引的元数据。
[0035]索引的元数据中记录有索引的在数据库中的定义信息,通过索引的元数据可以得知索引的定义情况,如是否为键列、包含列,是否聚簇索引,是否唯一等。获取索引的元数据,即获取索引的定义情况,从而可以将索引的定义情况与索引的使用情况进行对比。
[0036]比较单元40用于将注释信息记录的索引使用的原始格式与索引的元数据进行对比。
[0037]将注释信息记录的索引使用的原始格式与索引的元数据进行对比,可以是将解析后的注释信息与索引的元数据进行对比。由于注释信息记录了索引使用情况,索引的元数据中记录有索引的在数据库中的定义信息,将解析后的注释信息与索引的元数据进行对比,即将索引的使用情况与索引的定义信息进行对比,可以是判断索引的使用情况与索引的定义是否匹配,从而检测出索引的使用情况。
[0038]生成单元50用于根据对比结果得到索引的使用信息。
[0039]在将注释信息记录的索引使用的原始格式与索引的元数据进行对比之后,可以是判断解析后的注释信息与索引的元数据是否匹配。当对比结果是注释信息记录的索引使用的原始格式与索引的元数据不匹配时,可以进行相应的报错,输出提示信息,用以提示工作人员索引的注释信息与索引的元数据不匹配,提示工作人员注释信息的索引找不到相应的定义信息的问题;当对比结果是注释信息记录的索引使用的原始格式与索引的元数据匹配,则表明注释信息的索引在数据库中有对应的定义信息,可以正常使用。从上述对比结果中可以得到上述索引的使用信息,从而得知索引的使用情况。
[0040]根据本发明实施例,通过将解析后的注释信息与索引的元数据进行对比,从对比结果得到索引的使用信息,从而检测得到索引的使用情况,进而解决了现有技术中无法检测索引的使用情况的问题,达到了对索引的使用情况进行检测的效果,便于对索引进行维护。
[0041]图2是根据本发明第二实施例的数据库索引处理装置的结构示意图。该实施例的数据库索引处理装置可以作为上述实施例的数据库索引处理装置一种优选实施方式。如图2所示,该数据库索引处理装置包括:第一获取单元10、解析单元20、第二获取单元30、比较单元40和生成单元50,其中,比较单元40包括判断模块401,生成单元50包括输出模块501和生成模块502。第一获取单元10、解析单元20和第二获取单元30与图1所示的第一获取单元10、解析单元20和第二获取单元30功能相同,这里不做赘述。
[0042]判断模块401用于判断注释信息记录的索引使用的原始格式与索引的元数据是否匹配。
[0043]判断注释信息记录的索引使用的原始格式与索引的元数据是否匹配,可以是为了判断索引的注释信息在数据库中是否有对应的定义信息,从而判断该索引是否有效。
[0044]输出模块501用于如果判断出注释信息记录的索引使用的原始格式与索引的元数据不匹配,则输出提示信息,提示信息用于提示注释信息记录的索引使用的原始格式与索引不匹配。
[0045]判断注释信息记录的索引使用的原始格式与索引的元数据不匹配时,可以进行相应的报错,输出提示信息,用以提示工作人员索引的注释信息与索引的元数据不匹配,提示工作人员注释信息的索引找不到相应的定义信息的问题;当判断出注释信息记录的索引使用的原始格式与索引的元数据匹配,则表明注释信息的索引在数据库中有对应的定义信息,可以正常使用。
[0046]生成模块502用于从提示信息中得到索引的使用信息。
[0047]在判断出注释信息记录的索引使用的原始格式与索引的元数据不匹配之后,可以从输出的提示信息中获取到索引的使用信息,例如注释信息对应的索引在数据库中找不到相应的定义,则表明该注释信息对应的索引可能为无效的索引。
[0048]图3是根据本发明第三实施例的数据库索引处理装置的结构示意图。该实施例的数据库索引处理装置可以作为上述实施例的数据库索引处理装置一种优选实施方式。如图3所示,该数据库索引处理装置包括:第一获取单元10、解析单元20、第二获取单元30、比较单元40和生成单元50,其中,第一获取单元10包括第一获取模块101、解析模块102和第二获取模块103。解析单元20、第二获取单元30、比较单元40和生成单元50与图1所示的解析单元20、第二获取单元30、比较单元40和生成单元50功能相同,这里不做赘述。
[0049]第一获取模块101用于获取数据库中存储过程或函数的定义语句,定义语句用于定义数据库中的存储过程或函数。
[0050]获取数据库中的存储过程或函数的定义语句,例如,在SQL中,定义在存储过程DeleteTimeOutPVs,该存储过程用于删除所有Session已经超时的PV:
[0051]-删除掉Session已经超时进入到DW的数据行
[0052]—Oindex:E_BulkPV.NIX_SessionId
[0053]—iindex:E_Session.NIXJJpdatetime
[0054]DELETE db0.E_BulkPV
[0055]FROM db0.E_Session
[0056]WHERE db0.E_BulkPV.sessionid=E_Session.sessionid AND db0.E_Session.updatetime<=iLastUpdateEndTime
[0057]该存储过程中包含有多条SQL语句,其中,SqlServer里采用“一”代表注释行
[0058]定义注释信息为一@Index:Tablel.1ndexl,就可以知道该条SQL语句使用的是Tablel上的Indexl索引,其中,每一行代表一个表。
[0059]--1.--.对SQL语句添加注释,更改为上面带索引注释的SQL语句:
[0060]-◎index:E—BulkPV.NIX—Sessionid
[0061]-?index:E_Session.NIX—Updatetime
[0062]解析模块102用于对定义语句进行解析,得到多段SQL语句。
[0063]由于存储过程和函数的定义语句中包括多段SQL语句,对定义语句进行解析之后,得到多段SQL语句,分隔出每一段SQL语句,以便于获取每一段SQL语句的索引的注释信息。
[0064]第二获取模块103用于获取多段SQL语句中每一段SQL语句的注释信息。
[0065]多段SQL语句中有使用索引的,也有未使用索引的语句,获取多段SQL语句中每一段SQL语句的注释信息可以是获取多段SQL语句中每一段使用索引的SQL语句的注释信息,例如上述存储过程DeleteTimeOutPVs中的注释信息:
[0066]—Oindex:E_BulkPV.NIX_SessionId
[0067]—iindex:E_Session.NIXJJpdatetime
[0068]优选地,数据库索引处理装置还包括:输出单元、显示单元和第三获取单元。
[0069]输出单元用于在将注释信息记录的索引使用的原始格式与索引的元数据进行对比之后,输出对比结果。
[0070]将对比后的结果输出,对比结果可以是解析的注释信息与索引的元数据不匹配的结果,也可以是解析的注释信息与索引的元数据匹配的结果。输出对比结果以便于对该结果进行显示。
[0071]显示单元用于以视图形式显示对比结果。
[0072]在输出对比结果之后,以视图形式显示对比结果,以便于将解析的索引的注释与索引的元数据进行统一展示,从而使得工作人员可以根据显示的结果查看数据库索引使用的情况,进而达到对索引进行维护和更新的目的。
[0073]第三获取单元用于从视图中获取需要更新的索引的注释信息进行更新。
[0074]在以视图形式显示对比结果之后,可以从视图中获取需要更新的索引的注释信息进行更新,需要更新的索引的注释信息可以是与索引的元数据不匹配的注释信息,对不匹配的注释信息进行更新,使得注释信息与索引的元数据相匹配。
[0075]优选地,第二获取单元30包括:第三获取模块和第四获取模块。
[0076]第三获取模块用于获取数据库中所有索引的元数据。
[0077]获取数据库中所有索引的元数据,以便于从索引的元数据中获取每一个索引的定义信息,例如键列、包含列,或者是否聚簇,是否唯一等。
[0078]第四获取模块用于从所有索弓I的元数据中获取每一个索弓I的定义信息。
[0079]在获取数据库中所有索引的元数据之后,可以获取每一个索引的定义信息,用以对将解析后的注释信息与所有索引的定义信息进行逐一匹配,判断解析后的注释信息是否能够匹配上索引的定义信息。
[0080]本发明实施例还提供了一种数据库索引处理方法。该方法运行在计算机设备上。需要说明的是,本发明实施例的数据库索引处理方法可以通过本发明实施例所提供的数据库索引处理装置来执行,本发明实施例的数据库索引处理装置也可以用于执行本发明实施例所提供的数据库索引处理方法。
[0081]图4是根据本发明第一实施例的数据库索引处理方法的流程图。如图4所示,该数据库索引处理方法包括步骤如下:
[0082]步骤S101,获取预先添加的索引的注释信息,注释信息用于记录索引使用的原始格式。
[0083]注释信息用于记录索引使用的原始格式,例如:注释信息可以是一@Index:Tablel.1ndexl,通过该注释信息就可以知道其对应的SQL语句使用的是Tablel上的Indexl索引。注释信息的格式可以根据工作人员的需要进行定义,不限定于任何形式的定义方式,对注释信息进行定义,以便于在对索引进行维护时,可以通过采用与定义方式相对应的方式对注释信息进行解析,从解析结果中得知SQL语句使用的是哪一个索引。
[0084]在定义了索引的注释信息的格式之后,可以通过一定的规则对SQL语句添加索引的注释信息,记录每一句使用索引的SQL语句的注释信息。可以是在开发期间,预先对SQL语句添加注释信息,其中,SQL语句可以是数据库的每一个存储过程或者方法函数的定义语句中使用索引的SQL语句。
[0085]索引的注释信息可以是对SQL语句添加的索引注释信息,在预先添加索引的注释信息之后,获取预先添加的索引的注释信息,以便于对该注释信息进行解析,从而得知相应的SQL语句使用的是那张表中的哪个索引。
[0086]步骤S102,对注释信息进行解析,得到注释信息记录的索引使用的原始格式。
[0087]在获取预先添加的索引的注释信息之后,对获取到的注释信息进行解析,解析过程可以是采用与注释信息定义的方式相对应的解析方式进行解析。由于注释信息用于记录索引使用的原始格式,所以在对注释信息进行解析之后,就可以得到索引的使用情况,例如注释信息为:一@Index:Tablel.1ndexl,通过解析之后,就可以知道其对应的SQL语句使用的是表Tablel上的Indexl索引。
[0088]步骤S103,获取索引的元数据。
[0089]索引的元数据中记录有索引的在数据库中的定义信息,通过索引的元数据可以得知索引的定义情况,如是否为键列、包含列,是否聚簇索引,是否唯一等。获取索引的元数据,即获取索引的定义情况,从而可以将索引的定义情况与索引的使用情况进行对比。
[0090]优选地,步骤S103包括步骤S1031和步骤S1032:
[0091]步骤S1031,获取数据库中所有索引的元数据。
[0092]获取数据库中所有索引的元数据,以便于从索引的元数据中获取每一个索引的定义信息,例如键列、包含列,或者是否聚簇,是否唯一等。
[0093]步骤S1032,从所有索引的元数据中获取每一个索引的定义信息。
[0094]在获取数据库中所有索引的元数据之后,可以获取每一个索引的定义信息,用以对将解析后的注释信息与所有索引的定义信息进行逐一匹配,判断解析后的注释信息是否能够匹配上索引的定义信息。
[0095]步骤S104,将注释信息记录的索引使用的原始格式与索引的元数据进行对比。
[0096]将注释信息记录的索引使用的原始格式与索引的元数据进行对比,可以是将解析后的注释信息与索引的元数据进行对比。由于注释信息记录了索引使用情况,索引的元数据中记录有索引的在数据库中的定义信息,将解析后的注释信息与索引的元数据进行对比,即将索引的使用情况与索引的定义信息进行对比,可以是判断索引的使用情况与索引的定义是否匹配,从而检测出索引的使用情况。
[0097]步骤S105,根据对比结果得到索引的使用信息。
[0098]在将注释信息记录的索引使用的原始格式与索引的元数据进行对比之后,可以是判断解析后的注释信息与索引的元数据是否匹配。当对比结果是注释信息记录的索引使用的原始格式与索引的元数据不匹配时,可以进行相应的报错,输出提示信息,用以提示工作人员索引的注释信息与索引的元数据不匹配,提示工作人员注释信息的索引找不到相应的定义信息的问题;当对比结果是注释信息记录的索引使用的原始格式与索引的元数据匹配,则表明注释信息的索引在数据库中有对应的定义信息,可以正常使用。从上述对比结果中可以得到上述索引的使用信息,从而得知索引的使用情况。
[0099]根据本发明实施例,通过将解析后的注释信息与索引的元数据进行对比,从对比结果得到索引的使用信息,从而检测得到索引的使用情况,进而解决了现有技术中无法检测索引的使用情况的问题,达到了对索引的使用情况进行检测的效果,便于对索引进行维护。
[0100]在将注释信息记录的索引使用的原始格式与索引的元数据进行对比之后,还可以以视图形式将对比结果进行输出显示,以便于以后对索引进行维护以及查看索引的使用情况。同时,可以很方便的从视图中得知各索引的使用情况,以及对需要更新的索引的注释信息进行更新,这样便能达到定期地对索引进行维护与更新的目的。
[0101]图5是根据本发明第二实施例的数据库索引处理方法的流程图。该实施例的数据库索引处理方法可以作为上述实施例的数据库索引处理方法一种优选实施方式。如图5所示,该数据库索引处理方法包括步骤如下:
[0102]步骤S201,获取预先添加的索引的注释信息,注释信息用于记录索引使用的原始格式。
[0103]注释信息用于记录索引使用的原始格式,例如:注释信息可以是一@Index:Tablel.1ndexl,通过该注释信息就可以知道其对应的SQL语句使用的是Tablel上的Indexl索引。注释信息的格式可以根据工作人员的需要进行定义,不限定于任何形式的定义方式,对注释信息进行定义,以便于在对索引进行维护时,可以通过采用与定义方式相对应的方式对注释信息进行解析,从解析结果中得知SQL语句使用的是哪一个索引。
[0104]在定义了索引的注释信息的格式之后,可以通过一定的规则对SQL语句添加索引的注释信息,记录每一句使用索引的SQL语句的注释信息。可以是在开发期间,预先对SQL语句添加注释信息,其中,SQL语句可以是数据库的每一个存储过程或者方法函数的定义语句中使用索引的SQL语句。
[0105]索引的注释信息可以是对SQL语句添加的索引注释信息,在预先添加索引的注释信息之后,获取预先添加的索引的注释信息,以便于对该注释信息进行解析,从而得知相应的SQL语句使用的是那张表中的哪个索引。
[0106]步骤S202,对注释信息进行解析,得到注释信息记录的索引使用的原始格式。
[0107]在获取预先添加的索引的注释信息之后,对获取到的注释信息进行解析,解析过程可以是采用与注释信息定义的方式相对应的解析方式进行解析。由于注释信息用于记录索引使用的原始格式,所以在对注释信息进行解析之后,就可以得到索引的使用情况,例如注释信息为:一@Index:Tablel.1ndexl,通过解析之后,就可以知道其对应的SQL语句使用的是表Tablel上的Indexl索引。
[0108]步骤S203,获取索引的元数据。
[0109]索引的元数据中记录有索引的在数据库中的定义信息,通过索引的元数据可以得知索引的定义情况,如是否为键列、包含列,是否聚簇索引,是否唯一等。获取索引的元数据,即获取索引的定义情况,从而可以将索引的定义情况与索引的使用情况进行对比。获取索引的元数据可以是获取数据库中所有索引的元数据,从而对所有的索引进行相应的处理。
[0110]步骤S204,判断注释信息记录的索引使用的原始格式与索引的元数据是否匹配。
[0111]判断注释信息记录的索引使用的原始格式与索引的元数据是否匹配,可以是为了判断索引的注释信息在数据库中是否有对应的定义信息,从而判断该索引是否有效。
[0112]步骤S205,如果判断出注释信息记录的索引使用的原始格式与索引的元数据不匹配,则输出提示信息,提示信息用于提示注释信息记录的索引使用的原始格式与索引不匹配。
[0113]判断注释信息记录的索引使用的原始格式与索引的元数据不匹配时,可以进行相应的报错,输出提示信息,用以提示工作人员索引的注释信息与索引的元数据不匹配,提示工作人员注释信息的索引找不到相应的定义信息的问题;当判断出注释信息记录的索引使用的原始格式与索引的元数据匹配,则表明注释信息的索引在数据库中有对应的定义信息,可以正常使用。[0114]步骤S206,从提示信息中得到索引的使用信息。
[0115]在判断出注释信息记录的索引使用的原始格式与索引的元数据不匹配之后,可以从输出的提示信息中获取到索引的使用信息,例如注释信息对应的索引在数据库中找不到相应的定义,则表明该注释信息对应的索引可能为无效的索引。
[0116]图6是根据本发明第三实施例的数据库索引处理方法的流程图。该实施例的数据库索引处理方法可以作为上述实施例的数据库索引处理方法一种优选实施方式。如图6所示,该数据库索引处理方法包括步骤如下:
[0117]步骤S301,获取数据库中存储过程或函数的定义语句,定义语句用于定义数据库中的存储过程或函数。
[0118]获取数据库中的存储过程或函数的定义语句,例如,在SQL中,定义在存储过程DeleteTimeOutPVs,该存储过程用于删除所有Session已经超时的PV:
[0119]-删除掉Session已经超时进入到DW的数据行
[0120]—Oindex:E_BulkPV.NIX_SessionId
[0121]—iindex:E_Session.NIXJJpdatetime
[0122]DELETE db0.E_BulkPV
[0123]FROM db0.E_Session
[0124]WHERE db0.E_BulkPV.sessionid=E_Session.sessionid AND db0.E_Session.updatetime<=iLastUpdateEndTime
[0125]该存储过程中包含有多条SQL语句,其中,SqlServer里采用“一”代表注释行
[0126]定义注释信息为一@Index:Tablel.1ndexl,就可以知道该条SQL语句使用的是Tablel上的Indexl索引,其中,每一行代表一个表。
[0127]对SQL语句添加注释,更改为上面带索引注释的SQL语句:
[0128]—Oindex:E_BulkPV.NIX_SessionId
[0129]—iindex:E_Session.NIXJJpdatetime
[0130]步骤S302,对定义语句进行解析,得到多段SQL语句。
[0131]由于存储过程和函数的定义语句中包括多段SQL语句,对定义语句进行解析之后,得到多段SQL语句,分隔出每一段SQL语句,以便于获取每一段SQL语句的索引的注释信息。
[0132]步骤S303,获取多段SQL语句中每一段SQL语句的注释信息。
[0133]多段SQL语句中有使用索引的,也有未使用索引的语句,获取多段SQL语句中每一段SQL语句的注释信息可以是获取多段SQL语句中每一段使用索引的SQL语句的注释信息,例如上述存储过程DeleteTimeOutPVs中的注释信息:
[0134]—Oindex:E_BulkPV.NIX_SessionId
[0135]—iindex:E_Session.NIXJJpdatetime
[0136]步骤S304,对注释信息进行解析,得到注释信息记录的索引使用的原始格式。
[0137]在获取预先添加的索引的注释信息之后,对获取到的注释信息进行解析,解析过程可以是采用与注释信息定义的方式相对应的解析方式进行解析。由于注释信息用于记录索引使用的原始格式,所以在对注释信息进行解析之后,就可以得到索引的使用情况,例如注释信息为:一@Index:Tablel.1ndexl,通过解析之后,就可以知道其对应的SQL语句使用的是表Tablel上的Indexl索引。
[0138] 例如获取到的上述中的注释信息:
[0139]--Oindex:E_BulkPV.NIX_SessionId,
[0140]—iindex:E_Session.NIXJJpdatetime
[0141]对上面两条注释信息进行解析,从而可以知道对应的SQL语句使用的索引为E_Session 表上的 NIXJJpdateTime 的索引,以及 e_bulkpv 表上的 NIX_SessionId 的索引。
[0142]步骤S305,获取索引的元数据。
[0143]索引的元数据中记录有索引的在数据库中的定义信息,通过索引的元数据可以得知索引的定义情况,如是否为键列、包含列,是否聚簇索引,是否唯一等。获取索引的元数据,即获取索引的定义情况,从而可以将索引的定义情况与索引的使用情况进行对比。
[0144]例如上述中的两条索引的注释信息,从数据库中获取到了索引的定义信息:
[0145]NIX_SessionID为非聚簇索引,其键列为SessionID ;
[0146]NIXJJpdateTime 为非聚集索引,且键列为 UpdateTime,包含列为 begindatetime,cookieid, id, sessionid。
[0147]步骤S306,将注释信息记录的索引使用的原始格式与索引的元数据进行对比。
[0148]将注释信息记录的索引使用的原始格式与索引的元数据进行对比,可以是将解析后的注释信息与索引的元数据进行对比。由于注释信息记录了索引使用情况,索引的元数据中记录有索引的在数据库中的定义信息,将解析后的注释信息与索引的元数据进行对比,即将索引的使用情况与索引的定义信息进行对比,可以是判断索引的使用情况与索引的定义是否匹配,从而检测出索引的使用情况。
[0149]步骤S307,根据对比结果得到索引的使用信息。
[0150]在将注释信息记录的索引使用的原始格式与索引的元数据进行对比之后,可以是判断解析后的注释信息与索引的元数据是否匹配。当对比结果是注释信息记录的索引使用的原始格式与索引的元数据不匹配时,可以进行相应的报错,输出提示信息,用以提示工作人员索引的注释信息与索引的元数据不匹配,提示工作人员注释信息的索引找不到相应的定义信息的问题;当对比结果是注释信息记录的索引使用的原始格式与索引的元数据匹配,则表明注释信息的索引在数据库中有对应的定义信息,可以正常使用。从上述对比结果中可以得到上述索引的使用信息,从而得知索引的使用情况。
[0151]优选地,在步骤S105之后,数据库索引处理方法还包括以下步骤:
[0152]步骤1,输出对比结果。
[0153]将对比后的结果输出,对比结果可以是解析的注释信息与索引的元数据不匹配的结果,也可以是解析的注释信息与索引的元数据匹配的结果。输出对比结果以便于对该结果进行显示。
[0154]步骤2,以视图形式显示对比结果。
[0155]在输出对比结果之后,以视图形式显示对比结果,以便于将解析的索引的注释与索引的元数据进行统一展示,从而使得工作人员可以根据显示的结果查看数据库索引使用的情况,进而达到对索引进行维护和更新的目的。
[0156]步骤3,从视图中获取需要更新的索引的注释信息进行更新。
[0157]在以视图形式显示对比结果之后,可以从视图中获取需要更新的索引的注释信息进行更新,需要更新的索引的注释信息可以是与索引的元数据不匹配的注释信息,对不匹配的注释信息进行更新,使得注释信息与索引的元数据相匹配。
[0158]根据本发明实施例,通过对对比结果以视图形式进行展示,方便工作人员对索引进行定期的维护和更新。
[0159]需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
[0160]显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
[0161]以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
【权利要求】
1.一种数据库索引处理方法,其特征在于,包括:获取预先添加的索引的注释信息,所述注释信息用于记录所述索引使用的原始格式;对所述注释信息进行解析,得到所述注释信息记录的所述索引使用的原始格式;获取所述索引的元数据;将所述注释信息记录的所述索引使用的原始格式与所述索引的元数据进行对比;以及根据对比结果得到所述索引的使用信息。
2.根据权利要求1所述的数据库索引处理方法,其特征在于,将所述注释信息记录的所述索引使用的原始格式与所述索引的元数据进行对比包括:判断所述注释信息记录的所述索引使用的原始格式与所述索引的元数据是否匹配,根据对比结果得到所述索引的使用信息包括:如果判断出所述注释信息记录的所述索引使用的原始格式与所述索引的元数据不匹配,则输出提示信息,所述提示信息用于提示所述注释信息记录的所述索引使用的原始格式与所述索引不匹配;从所述提示信息中得到所述索引的使用信息。
3.根据权利要求1所述的数据库索引处理方法,其特征在于,获取预先添加的索引的注释信息包括:获取数据库中存储过程或函数的定义语句,所述定义语句用于定义所述数据库中的所述存储过程或所述函数; 对所述定义语句进行解析,得到多段SQL语句;以及获取所述多段SQL语句中每一段SQL语句的注释信息。
4.根据权利要求1所述的数据库索引处理方法,其特征在于,在将所述注释信息记录的所述索引使用的原始格式与所述索引的元数据进行对比之后,所述数据库索引处理方法还包括:输出所述对比结果;以视图形式显示所述对比结果;以及从所述视图中获取需要更新的索引的注释信息进行更新。
5.根据权利要求1所述的数据库索引处理方法,其特征在于,获取所述索引的元数据包括:获取数据库中所有索引的元数据;以及从所述所有索引的元数据中获取每一个所述索引的定义信息。
6.一种数据库索引处理装置,其特征在于,包括:第一获取单元,用于获取预先添加的索引的注释信息,所述注释信息用于记录所述索引使用的原始格式;解析单元,用于对所述注释信息进行解析,得到所述注释信息记录的所述索引使用的原始格式;第二获取单元,用于获取所述索引的元数据;比较单元,用于将所述注释信息记录的所述索引使用的原始格式与所述索引的元数据进行对比;以及生成单元,用于根据对比结果得到所述索引的使用信息。
7.根据权利要求6所述的数据库索引处理装置,其特征在于,所述比较单元包括:判断模块,用于判断所述注释信息记录的所述索引使用的原始格式与所述索引的元数据是否匹配,所述生成单元包括:输出模块,用于如果判断出所述注释信息记录的所述索引使用的原始格式与所述索引的元数据不匹配,则输出提示信息,所述提示信息用于提示所述注释信息记录的所述索引使用的原始格式与所述索引不匹配;生成模块,用于从所述提示信息中得到所述索引的使用信息。
8.根据权利要求6所述的数据库索引处理装置,其特征在于,所述第一获取单元包括:第一获取模块,用于获取数据库中存储过程或函数的定义语句,所述定义语句用于定义所述数据库中的所述存储过程或所述函数;解析模块,用于对所述定义语句进行解析,得到多段SQL语句;以及第二获取模块,用于获取所述多段SQL语句中每一段SQL语句的注释信息。
9.根据权利要求6所述的数据库索引处理装置,其特征在于,所述数据库索引处理装置还包括:输出单元,用于在将所述注释信息记录的所述索引使用的原始格式与所述索引的元数据进行对比之后,输出所述对比结果;显示单元,用于以视图形式显示所述对比结果;以及第三获取单元,用于从所述视图中获取需要更新的索引的注释信息进行更新。
10.根据权利要求6所述的数据库索引处理装置,其特征在于,所述第二获取单元包括:第三获取模块,用于获取数据库中所有索引的元数据;以及第四获取模块,用于从所述所有索引的元数据中获取每一个所述索引的定义信息。
【文档编号】G06F17/30GK103605777SQ201310626922
【公开日】2014年2月26日 申请日期:2013年11月28日 优先权日:2013年11月28日
【发明者】洪超 申请人:北京国双科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1