CN103605777B - 数据库索引处理方法和装置 - Google Patents

数据库索引处理方法和装置 Download PDF

Info

Publication number
CN103605777B
CN103605777B CN201310626922.9A CN201310626922A CN103605777B CN 103605777 B CN103605777 B CN 103605777B CN 201310626922 A CN201310626922 A CN 201310626922A CN 103605777 B CN103605777 B CN 103605777B
Authority
CN
China
Prior art keywords
index
annotation information
information
metadata
definition
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201310626922.9A
Other languages
English (en)
Other versions
CN103605777A (zh
Inventor
洪超
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Gridsum Technology Co Ltd
Original Assignee
Beijing Gridsum Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Gridsum Technology Co Ltd filed Critical Beijing Gridsum Technology Co Ltd
Priority to CN201310626922.9A priority Critical patent/CN103605777B/zh
Publication of CN103605777A publication Critical patent/CN103605777A/zh
Application granted granted Critical
Publication of CN103605777B publication Critical patent/CN103605777B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)

Abstract

本发明公开了一种数据库索引处理方法和装置。其中,数据库索引处理方法包括:获取预先添加的索引的注释信息,注释信息用于记录索引使用的原始格式;对注释信息进行解析,得到注释信息记录的索引使用的原始格式;获取索引的元数据;将注释信息记录的索引使用的原始格式与索引的元数据进行对比;以及根据对比结果得到索引的使用信息。通过本发明,达到了对索引的使用情况进行检测的效果,便于对索引进行维护。

Description

数据库索引处理方法和装置
技术领域
本发明涉及数据库领域,具体而言,涉及一种数据库索引处理方法和装置。
背景技术
在数据库的使用中,索引的使用非常频繁,对数据库的性能有很大的影响,因此需要对一些索引做长期维护。在现有技术中,这些索引都靠人工去记忆索引的使用情况,但在经过很长一段时间之后,会忘记当初建立的索引是为哪些情况使用的,在哪些结构化查询语言(Structured Query Language,简称为SQL)里有使用。由于无法对索引的使用情况进行检测,从而无法得知这些索引的使用情况,导致无法评估索引在使用中所造成的影响。
针对现有技术中无法检测索引的使用情况的问题,目前尚未提出有效的解决方案。
发明内容
本发明的主要目的在于提供一种数据库索引处理方法和装置,以解决现有技术中无法检测索引的使用情况的问题。
为了实现上述目的,根据本发明的一个方面,提供了一种数据库索引处理方法。根据本发明的数据库索引处理方法包括:获取预先添加的索引的注释信息,注释信息用于记录索引使用的原始格式;对注释信息进行解析,得到注释信息记录的索引使用的原始格式;获取索引的元数据;将注释信息记录的索引使用的原始格式与索引的元数据进行对比;以及根据对比结果得到索引的使用信息。
进一步地,将注释信息记录的索引使用的原始格式与索引的元数据进行对比包括:判断注释信息记录的索引使用的原始格式与索引的元数据是否匹配,根据对比结果得到索引的使用信息包括:如果判断出注释信息记录的索引使用的原始格式与索引的元数据不匹配,则输出提示信息,提示信息用于提示注释信息记录的索引使用的原始格式与索引不匹配;从提示信息中得到索引的使用信息。
进一步地,获取预先添加的索引的注释信息包括:获取数据库中存储过程或函数的定义语句,定义语句用于定义数据库中的存储过程或函数;对定义语句进行解析,得到多段SQL语句;以及获取多段SQL语句中每一段SQL语句的注释信息。
进一步地,在将注释信息记录的索引使用的原始格式与索引的元数据进行对比之后,数据库索引处理方法还包括:输出对比结果;以视图形式显示对比结果;以及从视图中获取需要更新的索引的注释信息进行更新。
进一步地,获取索引的元数据包括:获取数据库中所有索引的元数据;以及从所有索引的元数据中获取每一个索引的定义信息。
为了实现上述目的,根据本发明的另一方面,提供了一种数据库索引处理装置。根据本发明的数据库索引处理装置包括:第一获取单元,用于获取预先添加的索引的注释信息,注释信息用于记录索引使用的原始格式;解析单元,用于对注释信息进行解析,得到注释信息记录的索引使用的原始格式;第二获取单元,用于获取索引的元数据;比较单元,用于将注释信息记录的索引使用的原始格式与索引的元数据进行对比;以及生成单元,用于根据对比结果得到索引的使用信息。
进一步地,比较单元包括:判断模块,用于判断注释信息记录的索引使用的原始格式与索引的元数据是否匹配,生成单元包括:输出模块,用于如果判断出注释信息记录的索引使用的原始格式与索引的元数据不匹配,则输出提示信息,提示信息用于提示注释信息记录的索引使用的原始格式与索引不匹配;生成模块,用于从提示信息中得到索引的使用信息。
进一步地,第一获取单元包括:第一获取模块,用于获取数据库中存储过程或函数的定义语句,定义语句用于定义数据库中的存储过程或函数;解析模块,用于对定义语句进行解析,得到多段SQL语句;以及第二获取模块,用于获取多段SQL语句中每一段SQL语句的注释信息。
进一步地,数据库索引处理装置还包括:输出单元,用于在将注释信息记录的索引使用的原始格式与索引的元数据进行对比之后,输出对比结果;显示单元,用于以视图形式显示对比结果;以及第三获取单元,用于从视图中获取需要更新的索引的注释信息进行更新。
进一步地,第二获取单元包括:第三获取模块,用于获取数据库中所有索引的元数据;以及第四获取模块,用于从所有索引的元数据中获取每一个索引的定义信息。
通过本发明,采用数据库索引处理方法,通过将解析后的注释信息与索引的元数据进行对比,从对比结果得到索引的使用信息,从而检测得到索引的使用情况,进而解决了现有技术中无法检测索引的使用情况的问题,达到了对索引的使用情况进行检测的效果,便于对索引进行维护。
附图说明
构成本申请的一部分的附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据本发明第一实施例的数据库索引处理装置的结构示意图;
图2是根据本发明第二实施例的数据库索引处理装置的结构示意图;
图3是根据本发明第三实施例的数据库索引处理装置的结构示意图;
图4是根据本发明第一实施例的数据库索引处理方法的流程图;
图5是根据本发明第二实施例的数据库索引处理方法的流程图;以及
图6是根据本发明第三实施例的数据库索引处理方法的流程图。
具体实施方式
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本发明。
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
本发明实施例提供了一种数据库索引处理装置,该装置可以通过计算机设备实现其功能。
图1是根据本发明第一实施例的数据库索引处理装置的结构示意图。如图1所示,该数据库索引处理装置包括:第一获取单元10、解析单元20、第二获取单元30、比较单元40和生成单元50。
第一获取单元10用于获取预先添加的索引的注释信息,注释信息用于记录索引使用的原始格式。
注释信息用于记录索引使用的原始格式,例如:注释信息可以是--@Index:Table1.Index1,通过该注释信息就可以知道其对应的SQL语句使用的是Table1上的Index1索引。注释信息的格式可以根据工作人员的需要进行定义,不限定于任何形式的定义方式,对注释信息进行定义,以便于在对索引进行维护时,可以通过采用与定义方式相对应的方式对注释信息进行解析,从解析结果中得知SQL语句使用的是哪一个索引。
在定义了索引的注释信息的格式之后,可以通过一定的规则对SQL语句添加索引的注释信息,记录每一句使用索引的SQL语句的注释信息。可以是在开发期间,预先对SQL语句添加注释信息,其中,SQL语句可以是数据库的每一个存储过程或者方法函数的定义语句中使用索引的SQL语句。
索引的注释信息可以是对SQL语句添加的索引注释信息,在预先添加索引的注释信息之后,获取预先添加的索引的注释信息,以便于对该注释信息进行解析,从而得知相应的SQL语句使用的是那张表中的哪个索引。
解析单元20用于对注释信息进行解析,得到注释信息记录的索引使用的原始格式。
在获取预先添加的索引的注释信息之后,对获取到的注释信息进行解析,解析过程可以是采用与注释信息定义的方式相对应的解析方式进行解析。由于注释信息用于记录索引使用的原始格式,所以在对注释信息进行解析之后,就可以得到索引的使用情况,例如注释信息为:--@Index:Table1.Index1,通过解析之后,就可以知道其对应的SQL语句使用的是表Table1上的Index1索引。
第二获取单元30用于获取索引的元数据。
索引的元数据中记录有索引的在数据库中的定义信息,通过索引的元数据可以得知索引的定义情况,如是否为键列、包含列,是否聚簇索引,是否唯一等。获取索引的元数据,即获取索引的定义情况,从而可以将索引的定义情况与索引的使用情况进行对比。
比较单元40用于将注释信息记录的索引使用的原始格式与索引的元数据进行对比。
将注释信息记录的索引使用的原始格式与索引的元数据进行对比,可以是将解析后的注释信息与索引的元数据进行对比。由于注释信息记录了索引使用情况,索引的元数据中记录有索引的在数据库中的定义信息,将解析后的注释信息与索引的元数据进行对比,即将索引的使用情况与索引的定义信息进行对比,可以是判断索引的使用情况与索引的定义是否匹配,从而检测出索引的使用情况。
生成单元50用于根据对比结果得到索引的使用信息。
在将注释信息记录的索引使用的原始格式与索引的元数据进行对比之后,可以是判断解析后的注释信息与索引的元数据是否匹配。当对比结果是注释信息记录的索引使用的原始格式与索引的元数据不匹配时,可以进行相应的报错,输出提示信息,用以提示工作人员索引的注释信息与索引的元数据不匹配,提示工作人员注释信息的索引找不到相应的定义信息的问题;当对比结果是注释信息记录的索引使用的原始格式与索引的元数据匹配,则表明注释信息的索引在数据库中有对应的定义信息,可以正常使用。从上述对比结果中可以得到上述索引的使用信息,从而得知索引的使用情况。
根据本发明实施例,通过将解析后的注释信息与索引的元数据进行对比,从对比结果得到索引的使用信息,从而检测得到索引的使用情况,进而解决了现有技术中无法检测索引的使用情况的问题,达到了对索引的使用情况进行检测的效果,便于对索引进行维护。
图2是根据本发明第二实施例的数据库索引处理装置的结构示意图。该实施例的数据库索引处理装置可以作为上述实施例的数据库索引处理装置一种优选实施方式。如图2所示,该数据库索引处理装置包括:第一获取单元10、解析单元20、第二获取单元30、比较单元40和生成单元50,其中,比较单元40包括判断模块401,生成单元50包括输出模块501和生成模块502。第一获取单元10、解析单元20和第二获取单元30与图1所示的第一获取单元10、解析单元20和第二获取单元30功能相同,这里不做赘述。
判断模块401用于判断注释信息记录的索引使用的原始格式与索引的元数据是否匹配。
判断注释信息记录的索引使用的原始格式与索引的元数据是否匹配,可以是为了判断索引的注释信息在数据库中是否有对应的定义信息,从而判断该索引是否有效。
输出模块501用于如果判断出注释信息记录的索引使用的原始格式与索引的元数据不匹配,则输出提示信息,提示信息用于提示注释信息记录的索引使用的原始格式与索引不匹配。
判断注释信息记录的索引使用的原始格式与索引的元数据不匹配时,可以进行相应的报错,输出提示信息,用以提示工作人员索引的注释信息与索引的元数据不匹配,提示工作人员注释信息的索引找不到相应的定义信息的问题;当判断出注释信息记录的索引使用的原始格式与索引的元数据匹配,则表明注释信息的索引在数据库中有对应的定义信息,可以正常使用。
生成模块502用于从提示信息中得到索引的使用信息。
在判断出注释信息记录的索引使用的原始格式与索引的元数据不匹配之后,可以从输出的提示信息中获取到索引的使用信息,例如注释信息对应的索引在数据库中找不到相应的定义,则表明该注释信息对应的索引可能为无效的索引。
图3是根据本发明第三实施例的数据库索引处理装置的结构示意图。该实施例的数据库索引处理装置可以作为上述实施例的数据库索引处理装置一种优选实施方式。如图3所示,该数据库索引处理装置包括:第一获取单元10、解析单元20、第二获取单元30、比较单元40和生成单元50,其中,第一获取单元10包括第一获取模块101、解析模块102和第二获取模块103。解析单元20、第二获取单元30、比较单元40和生成单元50与图1所示的解析单元20、第二获取单元30、比较单元40和生成单元50功能相同,这里不做赘述。
第一获取模块101用于获取数据库中存储过程或函数的定义语句,定义语句用于定义数据库中的存储过程或函数。
获取数据库中的存储过程或函数的定义语句,例如,在SQL中,定义在存储过程DeleteTimeOutPVs,该存储过程用于删除所有Session已经超时的PV:
--删除掉Session已经超时进入到DW的数据行
--@index:E_BulkPV.NIX_SessionId
--@index:E_Session.NIX_Updatetime
DELETE dbo.E_BulkPV
FROM dbo.E_Session
WHERE dbo.E_BulkPV.sessionid=E_Session.sessionid AND dbo.E_Session.updatetime<=@LastUpdateEndTime
该存储过程中包含有多条SQL语句,其中,SqlServer里采用“--”代表注释行
定义注释信息为--@Index:Table1.Index1,就可以知道该条SQL语句使用的是Table1上的Index1索引,其中,每一行代表一个表。
对SQL语句添加注释,更改为上面带索引注释的SQL语句:
--@index:E_BulkPV.NIX_SessionId
--@index:E_Session.NIX_Updatetime
解析模块102用于对定义语句进行解析,得到多段SQL语句。
由于存储过程和函数的定义语句中包括多段SQL语句,对定义语句进行解析之后,得到多段SQL语句,分隔出每一段SQL语句,以便于获取每一段SQL语句的索引的注释信息。
第二获取模块103用于获取多段SQL语句中每一段SQL语句的注释信息。
多段SQL语句中有使用索引的,也有未使用索引的语句,获取多段SQL语句中每一段SQL语句的注释信息可以是获取多段SQL语句中每一段使用索引的SQL语句的注释信息,例如上述存储过程DeleteTimeOutPVs中的注释信息:
--@index:E_BulkPV.NIX_SessionId
--@index:E_Session.NIX_Updatetime
优选地,数据库索引处理装置还包括:输出单元、显示单元和第三获取单元。
输出单元用于在将注释信息记录的索引使用的原始格式与索引的元数据进行对比之后,输出对比结果。
将对比后的结果输出,对比结果可以是解析的注释信息与索引的元数据不匹配的结果,也可以是解析的注释信息与索引的元数据匹配的结果。输出对比结果以便于对该结果进行显示。
显示单元用于以视图形式显示对比结果。
在输出对比结果之后,以视图形式显示对比结果,以便于将解析的索引的注释与索引的元数据进行统一展示,从而使得工作人员可以根据显示的结果查看数据库索引使用的情况,进而达到对索引进行维护和更新的目的。
第三获取单元用于从视图中获取需要更新的索引的注释信息进行更新。
在以视图形式显示对比结果之后,可以从视图中获取需要更新的索引的注释信息进行更新,需要更新的索引的注释信息可以是与索引的元数据不匹配的注释信息,对不匹配的注释信息进行更新,使得注释信息与索引的元数据相匹配。
优选地,第二获取单元30包括:第三获取模块和第四获取模块。
第三获取模块用于获取数据库中所有索引的元数据。
获取数据库中所有索引的元数据,以便于从索引的元数据中获取每一个索引的定义信息,例如键列、包含列,或者是否聚簇,是否唯一等。
第四获取模块用于从所有索引的元数据中获取每一个索引的定义信息。
在获取数据库中所有索引的元数据之后,可以获取每一个索引的定义信息,用以对将解析后的注释信息与所有索引的定义信息进行逐一匹配,判断解析后的注释信息是否能够匹配上索引的定义信息。
本发明实施例还提供了一种数据库索引处理方法。该方法运行在计算机设备上。需要说明的是,本发明实施例的数据库索引处理方法可以通过本发明实施例所提供的数据库索引处理装置来执行,本发明实施例的数据库索引处理装置也可以用于执行本发明实施例所提供的数据库索引处理方法。
图4是根据本发明第一实施例的数据库索引处理方法的流程图。如图4所示,该数据库索引处理方法包括步骤如下:
步骤S101,获取预先添加的索引的注释信息,注释信息用于记录索引使用的原始格式。
注释信息用于记录索引使用的原始格式,例如:注释信息可以是--@Index:Table1.Index1,通过该注释信息就可以知道其对应的SQL语句使用的是Table1上的Index1索引。注释信息的格式可以根据工作人员的需要进行定义,不限定于任何形式的定义方式,对注释信息进行定义,以便于在对索引进行维护时,可以通过采用与定义方式相对应的方式对注释信息进行解析,从解析结果中得知SQL语句使用的是哪一个索引。
在定义了索引的注释信息的格式之后,可以通过一定的规则对SQL语句添加索引的注释信息,记录每一句使用索引的SQL语句的注释信息。可以是在开发期间,预先对SQL语句添加注释信息,其中,SQL语句可以是数据库的每一个存储过程或者方法函数的定义语句中使用索引的SQL语句。
索引的注释信息可以是对SQL语句添加的索引注释信息,在预先添加索引的注释信息之后,获取预先添加的索引的注释信息,以便于对该注释信息进行解析,从而得知相应的SQL语句使用的是那张表中的哪个索引。
步骤S102,对注释信息进行解析,得到注释信息记录的索引使用的原始格式。
在获取预先添加的索引的注释信息之后,对获取到的注释信息进行解析,解析过程可以是采用与注释信息定义的方式相对应的解析方式进行解析。由于注释信息用于记录索引使用的原始格式,所以在对注释信息进行解析之后,就可以得到索引的使用情况,例如注释信息为:--@Index:Table1.Index1,通过解析之后,就可以知道其对应的SQL语句使用的是表Table1上的Index1索引。
步骤S103,获取索引的元数据。
索引的元数据中记录有索引的在数据库中的定义信息,通过索引的元数据可以得知索引的定义情况,如是否为键列、包含列,是否聚簇索引,是否唯一等。获取索引的元数据,即获取索引的定义情况,从而可以将索引的定义情况与索引的使用情况进行对比。
优选地,步骤S103包括步骤S1031和步骤S1032:
步骤S1031,获取数据库中所有索引的元数据。
获取数据库中所有索引的元数据,以便于从索引的元数据中获取每一个索引的定义信息,例如键列、包含列,或者是否聚簇,是否唯一等。
步骤S1032,从所有索引的元数据中获取每一个索引的定义信息。
在获取数据库中所有索引的元数据之后,可以获取每一个索引的定义信息,用以对将解析后的注释信息与所有索引的定义信息进行逐一匹配,判断解析后的注释信息是否能够匹配上索引的定义信息。
步骤S104,将注释信息记录的索引使用的原始格式与索引的元数据进行对比。
将注释信息记录的索引使用的原始格式与索引的元数据进行对比,可以是将解析后的注释信息与索引的元数据进行对比。由于注释信息记录了索引使用情况,索引的元数据中记录有索引的在数据库中的定义信息,将解析后的注释信息与索引的元数据进行对比,即将索引的使用情况与索引的定义信息进行对比,可以是判断索引的使用情况与索引的定义是否匹配,从而检测出索引的使用情况。
步骤S105,根据对比结果得到索引的使用信息。
在将注释信息记录的索引使用的原始格式与索引的元数据进行对比之后,可以是判断解析后的注释信息与索引的元数据是否匹配。当对比结果是注释信息记录的索引使用的原始格式与索引的元数据不匹配时,可以进行相应的报错,输出提示信息,用以提示工作人员索引的注释信息与索引的元数据不匹配,提示工作人员注释信息的索引找不到相应的定义信息的问题;当对比结果是注释信息记录的索引使用的原始格式与索引的元数据匹配,则表明注释信息的索引在数据库中有对应的定义信息,可以正常使用。从上述对比结果中可以得到上述索引的使用信息,从而得知索引的使用情况。
根据本发明实施例,通过将解析后的注释信息与索引的元数据进行对比,从对比结果得到索引的使用信息,从而检测得到索引的使用情况,进而解决了现有技术中无法检测索引的使用情况的问题,达到了对索引的使用情况进行检测的效果,便于对索引进行维护。
在将注释信息记录的索引使用的原始格式与索引的元数据进行对比之后,还可以以视图形式将对比结果进行输出显示,以便于以后对索引进行维护以及查看索引的使用情况。同时,可以很方便的从视图中得知各索引的使用情况,以及对需要更新的索引的注释信息进行更新,这样便能达到定期地对索引进行维护与更新的目的。
图5是根据本发明第二实施例的数据库索引处理方法的流程图。该实施例的数据库索引处理方法可以作为上述实施例的数据库索引处理方法一种优选实施方式。如图5所示,该数据库索引处理方法包括步骤如下:
步骤S201,获取预先添加的索引的注释信息,注释信息用于记录索引使用的原始格式。
注释信息用于记录索引使用的原始格式,例如:注释信息可以是--@Index:Table1.Index1,通过该注释信息就可以知道其对应的SQL语句使用的是Table1上的Index1索引。注释信息的格式可以根据工作人员的需要进行定义,不限定于任何形式的定义方式,对注释信息进行定义,以便于在对索引进行维护时,可以通过采用与定义方式相对应的方式对注释信息进行解析,从解析结果中得知SQL语句使用的是哪一个索引。
在定义了索引的注释信息的格式之后,可以通过一定的规则对SQL语句添加索引的注释信息,记录每一句使用索引的SQL语句的注释信息。可以是在开发期间,预先对SQL语句添加注释信息,其中,SQL语句可以是数据库的每一个存储过程或者方法函数的定义语句中使用索引的SQL语句。
索引的注释信息可以是对SQL语句添加的索引注释信息,在预先添加索引的注释信息之后,获取预先添加的索引的注释信息,以便于对该注释信息进行解析,从而得知相应的SQL语句使用的是那张表中的哪个索引。
步骤S202,对注释信息进行解析,得到注释信息记录的索引使用的原始格式。
在获取预先添加的索引的注释信息之后,对获取到的注释信息进行解析,解析过程可以是采用与注释信息定义的方式相对应的解析方式进行解析。由于注释信息用于记录索引使用的原始格式,所以在对注释信息进行解析之后,就可以得到索引的使用情况,例如注释信息为:--@Index:Table1.Index1,通过解析之后,就可以知道其对应的SQL语句使用的是表Table1上的Index1索引。
步骤S203,获取索引的元数据。
索引的元数据中记录有索引的在数据库中的定义信息,通过索引的元数据可以得知索引的定义情况,如是否为键列、包含列,是否聚簇索引,是否唯一等。获取索引的元数据,即获取索引的定义情况,从而可以将索引的定义情况与索引的使用情况进行对比。获取索引的元数据可以是获取数据库中所有索引的元数据,从而对所有的索引进行相应的处理。
步骤S204,判断注释信息记录的索引使用的原始格式与索引的元数据是否匹配。
判断注释信息记录的索引使用的原始格式与索引的元数据是否匹配,可以是为了判断索引的注释信息在数据库中是否有对应的定义信息,从而判断该索引是否有效。
步骤S205,如果判断出注释信息记录的索引使用的原始格式与索引的元数据不匹配,则输出提示信息,提示信息用于提示注释信息记录的索引使用的原始格式与索引不匹配。
判断注释信息记录的索引使用的原始格式与索引的元数据不匹配时,可以进行相应的报错,输出提示信息,用以提示工作人员索引的注释信息与索引的元数据不匹配,提示工作人员注释信息的索引找不到相应的定义信息的问题;当判断出注释信息记录的索引使用的原始格式与索引的元数据匹配,则表明注释信息的索引在数据库中有对应的定义信息,可以正常使用。
步骤S206,从提示信息中得到索引的使用信息。
在判断出注释信息记录的索引使用的原始格式与索引的元数据不匹配之后,可以从输出的提示信息中获取到索引的使用信息,例如注释信息对应的索引在数据库中找不到相应的定义,则表明该注释信息对应的索引可能为无效的索引。
图6是根据本发明第三实施例的数据库索引处理方法的流程图。该实施例的数据库索引处理方法可以作为上述实施例的数据库索引处理方法一种优选实施方式。如图6所示,该数据库索引处理方法包括步骤如下:
步骤S301,获取数据库中存储过程或函数的定义语句,定义语句用于定义数据库中的存储过程或函数。
获取数据库中的存储过程或函数的定义语句,例如,在SQL中,定义在存储过程DeleteTimeOutPVs,该存储过程用于删除所有Session已经超时的PV:
--删除掉Session已经超时进入到DW的数据行
--@index:E_BulkPV.NIX_SessionId
--@index:E_Session.NIX_Updatetime
DELETE dbo.E_BulkPV
FROM dbo.E_Session
WHERE dbo.E_BulkPV.sessionid=E_Session.sessionid AND dbo.E_Session.updatetime<=@LastUpdateEndTime
该存储过程中包含有多条SQL语句,其中,SqlServer里采用“--”代表注释行
定义注释信息为--@Index:Table1.Index1,就可以知道该条SQL语句使用的是Table1上的Index1索引,其中,每一行代表一个表。
对SQL语句添加注释,更改为上面带索引注释的SQL语句:
--@index:E_BulkPV.NIX_SessionId
--@index:E_Session.NIX_Updatetime
步骤S302,对定义语句进行解析,得到多段SQL语句。
由于存储过程和函数的定义语句中包括多段SQL语句,对定义语句进行解析之后,得到多段SQL语句,分隔出每一段SQL语句,以便于获取每一段SQL语句的索引的注释信息。
步骤S303,获取多段SQL语句中每一段SQL语句的注释信息。
多段SQL语句中有使用索引的,也有未使用索引的语句,获取多段SQL语句中每一段SQL语句的注释信息可以是获取多段SQL语句中每一段使用索引的SQL语句的注释信息,例如上述存储过程DeleteTimeOutPVs中的注释信息:
--@index:E_BulkPV.NIX_SessionId
--@index:E_Session.NIX_Updatetime
步骤S304,对注释信息进行解析,得到注释信息记录的索引使用的原始格式。
在获取预先添加的索引的注释信息之后,对获取到的注释信息进行解析,解析过程可以是采用与注释信息定义的方式相对应的解析方式进行解析。由于注释信息用于记录索引使用的原始格式,所以在对注释信息进行解析之后,就可以得到索引的使用情况,例如注释信息为:--@Index:Table1.Index1,通过解析之后,就可以知道其对应的SQL语句使用的是表Table1上的Index1索引。
例如获取到的上述中的注释信息:
--@index:E_BulkPV.NIX_SessionId,
--@index:E_Session.NIX_Updatetime
对上面两条注释信息进行解析,从而可以知道对应的SQL语句使用的索引为E_Session表上的NIX_UpdateTime的索引,以及e_bulkpv表上的NIX_SessionId的索引。
步骤S305,获取索引的元数据。
索引的元数据中记录有索引的在数据库中的定义信息,通过索引的元数据可以得知索引的定义情况,如是否为键列、包含列,是否聚簇索引,是否唯一等。获取索引的元数据,即获取索引的定义情况,从而可以将索引的定义情况与索引的使用情况进行对比。
例如上述中的两条索引的注释信息,从数据库中获取到了索引的定义信息:
NIX_SessionID为非聚簇索引,其键列为SessionID;
NIX_UpdateTime为非聚集索引,且键列为UpdateTime,包含列为begindatetime,cookieid,id,sessionid。
步骤S306,将注释信息记录的索引使用的原始格式与索引的元数据进行对比。
将注释信息记录的索引使用的原始格式与索引的元数据进行对比,可以是将解析后的注释信息与索引的元数据进行对比。由于注释信息记录了索引使用情况,索引的元数据中记录有索引的在数据库中的定义信息,将解析后的注释信息与索引的元数据进行对比,即将索引的使用情况与索引的定义信息进行对比,可以是判断索引的使用情况与索引的定义是否匹配,从而检测出索引的使用情况。
步骤S307,根据对比结果得到索引的使用信息。
在将注释信息记录的索引使用的原始格式与索引的元数据进行对比之后,可以是判断解析后的注释信息与索引的元数据是否匹配。当对比结果是注释信息记录的索引使用的原始格式与索引的元数据不匹配时,可以进行相应的报错,输出提示信息,用以提示工作人员索引的注释信息与索引的元数据不匹配,提示工作人员注释信息的索引找不到相应的定义信息的问题;当对比结果是注释信息记录的索引使用的原始格式与索引的元数据匹配,则表明注释信息的索引在数据库中有对应的定义信息,可以正常使用。从上述对比结果中可以得到上述索引的使用信息,从而得知索引的使用情况。
优选地,在步骤S105之后,数据库索引处理方法还包括以下步骤:
步骤1,输出对比结果。
将对比后的结果输出,对比结果可以是解析的注释信息与索引的元数据不匹配的结果,也可以是解析的注释信息与索引的元数据匹配的结果。输出对比结果以便于对该结果进行显示。
步骤2,以视图形式显示对比结果。
在输出对比结果之后,以视图形式显示对比结果,以便于将解析的索引的注释与索引的元数据进行统一展示,从而使得工作人员可以根据显示的结果查看数据库索引使用的情况,进而达到对索引进行维护和更新的目的。
步骤3,从视图中获取需要更新的索引的注释信息进行更新。
在以视图形式显示对比结果之后,可以从视图中获取需要更新的索引的注释信息进行更新,需要更新的索引的注释信息可以是与索引的元数据不匹配的注释信息,对不匹配的注释信息进行更新,使得注释信息与索引的元数据相匹配。
根据本发明实施例,通过对对比结果以视图形式进行展示,方便工作人员对索引进行定期的维护和更新。
需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (10)

1.一种数据库索引处理方法,其特征在于,包括:
获取预先添加的索引的注释信息,所述注释信息用于记录所述索引使用的原始格式;
采用与所述注释信息定义的方式相对应的解析方式对所述注释信息进行解析,得到所述注释信息记录的所述索引使用的原始格式;
获取所述索引的元数据,其中,所述索引的元数据中记录有所述索引在数据库中的定义信息;
将所述注释信息记录的所述索引使用的原始格式与所述索引的元数据进行对比;以及
根据对比结果得到所述索引的使用信息。
2.根据权利要求1所述的数据库索引处理方法,其特征在于,
将所述注释信息记录的所述索引使用的原始格式与所述索引的元数据进行对比包括:判断所述注释信息记录的所述索引使用的原始格式与所述索引的元数据是否匹配,
根据对比结果得到所述索引的使用信息包括:如果判断出所述注释信息记录的所述索引使用的原始格式与所述索引的元数据不匹配,则输出提示信息,所述提示信息用于提示所述注释信息记录的所述索引使用的原始格式与所述索引不匹配;从所述提示信息中得到所述索引的使用信息。
3.根据权利要求1所述的数据库索引处理方法,其特征在于,获取预先添加的索引的注释信息包括:
获取数据库中存储过程或函数的定义语句,所述定义语句用于定义所述数据库中的所述存储过程或所述函数;
对所述定义语句进行解析,得到多段SQL语句;以及
获取所述多段SQL语句中每一段SQL语句的注释信息。
4.根据权利要求1所述的数据库索引处理方法,其特征在于,在将所述注释信息记录的所述索引使用的原始格式与所述索引的元数据进行对比之后,所述数据库索引处理方法还包括:
输出所述对比结果;
以视图形式显示所述对比结果;以及
从所述视图中获取需要更新的索引的注释信息进行更新。
5.根据权利要求1所述的数据库索引处理方法,其特征在于,获取所述索引的元数据包括:
获取数据库中所有索引的元数据;以及
从所述所有索引的元数据中获取每一个所述索引的定义信息。
6.一种数据库索引处理装置,其特征在于,包括:
第一获取单元,用于获取预先添加的索引的注释信息,所述注释信息用于记录所述索引使用的原始格式;
解析单元,用于采用与所述注释信息定义的方式相对应的解析方式对所述注释信息进行解析,得到所述注释信息记录的所述索引使用的原始格式;
第二获取单元,用于获取所述索引的元数据,其中,所述索引的元数据中记录有所述索引在数据库中的定义信息;
比较单元,用于将所述注释信息记录的所述索引使用的原始格式与所述索引的元数据进行对比;以及
生成单元,用于根据对比结果得到所述索引的使用信息。
7.根据权利要求6所述的数据库索引处理装置,其特征在于,
所述比较单元包括:判断模块,用于判断所述注释信息记录的所述索引使用的原始格式与所述索引的元数据是否匹配,
所述生成单元包括:输出模块,用于如果判断出所述注释信息记录的所述索引使用的原始格式与所述索引的元数据不匹配,则输出提示信息,所述提示信息用于提示所述注释信息记录的所述索引使用的原始格式与所述索引不匹配;生成模块,用于从所述提示信息中得到所述索引的使用信息。
8.根据权利要求6所述的数据库索引处理装置,其特征在于,所述第一获取单元包括:
第一获取模块,用于获取数据库中存储过程或函数的定义语句,所述定义语句用于定义所述数据库中的所述存储过程或所述函数;
解析模块,用于对所述定义语句进行解析,得到多段SQL语句;以及
第二获取模块,用于获取所述多段SQL语句中每一段SQL语句的注释信息。
9.根据权利要求6所述的数据库索引处理装置,其特征在于,所述数据库索引处理装置还包括:
输出单元,用于在将所述注释信息记录的所述索引使用的原始格式与所述索引的元数据进行对比之后,输出所述对比结果;
显示单元,用于以视图形式显示所述对比结果;以及
第三获取单元,用于从所述视图中获取需要更新的索引的注释信息进行更新。
10.根据权利要求6所述的数据库索引处理装置,其特征在于,所述第二获取单元包括:
第三获取模块,用于获取数据库中所有索引的元数据;以及
第四获取模块,用于从所述所有索引的元数据中获取每一个所述索引的定义信息。
CN201310626922.9A 2013-11-28 2013-11-28 数据库索引处理方法和装置 Active CN103605777B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310626922.9A CN103605777B (zh) 2013-11-28 2013-11-28 数据库索引处理方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310626922.9A CN103605777B (zh) 2013-11-28 2013-11-28 数据库索引处理方法和装置

Publications (2)

Publication Number Publication Date
CN103605777A CN103605777A (zh) 2014-02-26
CN103605777B true CN103605777B (zh) 2017-04-12

Family

ID=50123999

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310626922.9A Active CN103605777B (zh) 2013-11-28 2013-11-28 数据库索引处理方法和装置

Country Status (1)

Country Link
CN (1) CN103605777B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109815240B (zh) * 2019-01-29 2022-02-25 北京百度网讯科技有限公司 用于管理索引的方法、装置、设备和存储介质
CN111581064A (zh) * 2020-03-31 2020-08-25 中国建设银行股份有限公司 基于oracle数据库的索引处理方法、系统、设备和存储介质

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2818769B1 (fr) * 2000-12-21 2004-06-18 Eads Airbus Sa Procede et systeme d'exploitation temps reel multitaches
CN101174271B (zh) * 2007-11-28 2010-06-02 金蝶软件(中国)有限公司 数据库系统管理方法
JP2011100420A (ja) * 2009-11-09 2011-05-19 Toshiba Corp テストプログラム作成装置
CN103294596B (zh) * 2013-05-23 2016-11-16 西安电子科技大学 一种基于程序不变量的合约式软件故障预警方法

Also Published As

Publication number Publication date
CN103605777A (zh) 2014-02-26

Similar Documents

Publication Publication Date Title
CN109445834A (zh) 基于抽象语法树的程序代码相似性快速比较方法
US20160147622A1 (en) Enhanced error detection in data synchronization operations
CN105095091B (zh) 一种基于倒排索引技术的软件缺陷代码文件定位方法
CN103778185A (zh) 一种用于数据库审计系统的sql语句解析方法和系统
EP3251298A1 (en) Data extraction
CN105976302A (zh) 一种可配置的数据比对方法及系统
CN103714086A (zh) 用于生成非关系数据库的模式的方法和设备
CN108829884A (zh) 数据映射方法及装置
CN114153980A (zh) 知识图谱构建方法和装置、检查方法、存储介质
CN103605777B (zh) 数据库索引处理方法和装置
CN109240903A (zh) 一种自动评估的方法和装置
CN110335641B (zh) 一种四个体组合亲缘关系鉴定方法及装置
CN104424399B (zh) 一种基于病毒蛋白质本体的知识导航的方法、装置
CN102929596A (zh) 代码排查方法和相关装置
CN110895548B (zh) 用于处理信息的方法和装置
CN109194605B (zh) 一种基于开源信息的可疑威胁指标主动验证方法和系统
CN104462461B (zh) 对表单进行排查空值处理的方法及装置
CN112131288B (zh) 数据源接入处理方法和装置
CN117194501A (zh) Dcs趋势测点跳转逻辑组态的方法、系统、设备及介质
CN106933844B (zh) 面向大规模rdf数据的可达性查询索引的构建方法
CN107357632A (zh) 一种命令行解析方法及装置
CN106547780A (zh) 文章转载量的统计方法及装置
CN108763053A (zh) 埋点名称的生成方法及终端设备
CN109240926A (zh) 一种软件兼容性测试装置及方法
CN107038452A (zh) 电话号码识别方法及装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
PE01 Entry into force of the registration of the contract for pledge of patent right

Denomination of invention: Database index processing method and device

Effective date of registration: 20190531

Granted publication date: 20170412

Pledgee: Shenzhen Black Horse World Investment Consulting Co., Ltd.

Pledgor: Beijing Guoshuang Technology Co.,Ltd.

Registration number: 2019990000503

PE01 Entry into force of the registration of the contract for pledge of patent right
CP02 Change in the address of a patent holder

Address after: 100083 No. 401, 4th Floor, Haitai Building, 229 North Fourth Ring Road, Haidian District, Beijing

Patentee after: Beijing Guoshuang Technology Co.,Ltd.

Address before: 100086 Beijing city Haidian District Shuangyushu Area No. 76 Zhichun Road cuigongfandian 8 layer A

Patentee before: Beijing Guoshuang Technology Co.,Ltd.

CP02 Change in the address of a patent holder