CN1361890A - 观察改变索引对查询优化方案的影响的数据库系统 - Google Patents
观察改变索引对查询优化方案的影响的数据库系统 Download PDFInfo
- Publication number
- CN1361890A CN1361890A CN00810565A CN00810565A CN1361890A CN 1361890 A CN1361890 A CN 1361890A CN 00810565 A CN00810565 A CN 00810565A CN 00810565 A CN00810565 A CN 00810565A CN 1361890 A CN1361890 A CN 1361890A
- Authority
- CN
- China
- Prior art keywords
- index
- virtual
- user
- original
- data
- 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.)
- Pending
Links
- 238000005457 optimization Methods 0.000 title claims abstract description 19
- 238000000034 method Methods 0.000 claims abstract description 52
- 238000012913 prioritisation Methods 0.000 claims description 58
- 230000008859 change Effects 0.000 claims description 23
- 238000007726 management method Methods 0.000 claims description 11
- 238000012217 deletion Methods 0.000 claims description 2
- 230000037430 deletion Effects 0.000 claims description 2
- 230000008569 process Effects 0.000 description 34
- 238000007796 conventional method Methods 0.000 description 10
- 238000003860 storage Methods 0.000 description 9
- 238000010586 diagram Methods 0.000 description 8
- 230000003362 replicative effect Effects 0.000 description 8
- 230000006870 function Effects 0.000 description 7
- 238000012986 modification Methods 0.000 description 7
- 230000004048 modification Effects 0.000 description 7
- 238000012545 processing Methods 0.000 description 7
- 238000012360 testing method Methods 0.000 description 6
- 239000004606 Fillers/Extenders Substances 0.000 description 4
- BASFCYQUMIYNBI-UHFFFAOYSA-N platinum Chemical compound [Pt] BASFCYQUMIYNBI-UHFFFAOYSA-N 0.000 description 4
- 230000009286 beneficial effect Effects 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 238000004519 manufacturing process Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000010276 construction Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 229910052697 platinum Inorganic materials 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 230000002349 favourable effect Effects 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 238000012731 temporal analysis Methods 0.000 description 1
- 238000000700 time series analysis Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
- G06F16/24534—Query rewriting; Transformation
- G06F16/24542—Plan optimisation
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99931—Database or file accessing
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99931—Database or file accessing
- Y10S707/99932—Access augmentation or optimizing
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99931—Database or file accessing
- Y10S707/99933—Query processing, i.e. searching
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99931—Database or file accessing
- Y10S707/99933—Query processing, i.e. searching
- Y10S707/99934—Query formulation, input preparation, or translation
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99931—Database or file accessing
- Y10S707/99933—Query processing, i.e. searching
- Y10S707/99935—Query augmenting and refining, e.g. inexact access
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99941—Database schema or data structure
- Y10S707/99943—Generating database or data structure, e.g. via user interface
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Operations Research (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
观察改变数据库表索引对诸如SQL语句的数据库查询的优化方案的影响的方法和装置创建模拟数据库中原始表(308)的结构的虚拟表(312)。通过复制原始表(308)来创建虚拟表(312),其中排除原始表中的任何数据。复制任何与原始表(308)相关的现有原始索引(310)以便定义与虚拟表(312)相关的虚拟索引(314)。查询中针对原始表的引用被针对虚拟表(408)的引用替换。数据库管理系统则为查询确定一个新的优化方案(324)。
Description
技术领域
本发明涉及观察改变数据库表索引设计的影响。更具体地,本发明涉及在改变数据库表的索引时使用虚拟表和虚拟索引确定数据库查询的优化方案。
背景技术
实现并保持计算机数据访问的简单有效是多数计算机用户的共同目标。另外,随着现代计算机处理能力的增加,用户可能需要组织和存储更多的数据。一种用于组织计算机数据的系统是数据库,数据库通常被看作一组在某种可记录介质中以没有不必要的冗余的方式共同存储的逻辑相关信息对象或文件。数据库为各种应用或程序提供良好的服务,并且利于这些应用或程序的访问。
在多数数据库中,从外部观察数据被组织成表。各个表通常包含一系列定义表的列的字段。表的每个行包括一个单独的记录。对于表中的每行数据,该数据的具体内容被物理存储在数据库中。因而当数据库用户从表中请求具体信息时,存储数据的适当部分被检索出来并且提供给用户。
一个被称作″数据库管理系统″(″DBMS″)的程序为用户提供一个针对数据库的接口。DBMS为数据库提供允许用户访问数据库中存储的信息对象的结构。DBMS根据用户的信息请求或″查询″识别并检索某些信息对象。具体信息对象的检索取决于信息对象中存储的信息与用户对系统的请求之间的相似程度。通过比较信息对象和信息请求所附的某些属性的数值来测量相似程度。
例如,如果表″Employee″包含字段″Name″,″Dept″,″Age″和″Salary″,并且用户期望找到在电子部门工作的雇员子集,可以使用下面查询:
SELECT Name,Salary,Age
FROM Employee
WHERE Dept=″Electronics″
为了利于检索处理,经常对数据库中的信息对象加″索引″以便通过分配标识对象内容的描述符来概括对象的特征。提取这些信息对象的特征的处理可以引导DBMS根据用户的具体查询检索出数据库中的具体内容,上述处理被称作″索引″。
为了建立表索引,DBMS通常扫描表,检索表中各行和各列的数据,并且向索引添加数据,其中索引经常具有B-树结构。更多有关B-树结构的信息参见Patrick ONeil″数据库-原理,编程,性能″MorganKaufmann Publishers(1994),这里参考引入了上述著作。DBMS顺序读取表中的每个数据记录,将各个数据记录复制到一个临时空间,在必要时对数据记录进行排序,并且最终创建一个索引数据结构。
然而建立表索引的处理通常消耗大量时间和资源。例如,创建具有数百万行的表的索引可能需要几天时间。此外,创建这种表的索引通常需要使用数百兆字节的临时工作区以便在创建索引之前复制和排序数据。自然地,创建或改变索引的处理会相应占用大量的时间。诸如数据仓库中使用的数据库表可以具有数十亿甚至数千万亿行数据。用户可能需要数周甚至数月来创建这种规模的表的索引。
其它因素使得涉及创建索引的时间问题更加复杂。具体地,在创建索引之后,数据库需要时间测试索引并且返回性能统计结果,用户也需要时间分析结果。
对于一个典型的索引数据库系统,完成一个查询通常需要两个步骤。第一个步骤是确定在索引中具有关联描述符或索引记录的查询子句以便检索那些索引记录,并且预先限制要考虑的信息对象集合。第二个步骤通常需要从第一步骤得到信息对象集合并且依次检查各个信息对象以确定是否满足查询条件。
结构化查询语言(SQL)已经演变成数据库查询或语句的标准语言。SQL接口允许用户通过批处理文件或嵌入到诸如C,COBOL等等的宿主语言中的方式交互表述数据库表的关系操作。在SQL中提供允许用户处理数据的操作符,其中各个操作符操作一或多个表并且产生一个新表作为结果。
在调整SQL语句或查询的处理中,用户经常希望知道改变索引会怎样影响查询的性能。如上所述,索引可以被加到数据库中以利于提高执行查询的速度,尤其是在较大的表中,其中索引可以从根本上改进性能。另一方面,由于数据库中的数据量,增加或改变索引需要大量的时间和资源以供数据库建立索引。因而用户经常面临两难的选择,即或者花费建立索引所需的时间和资源,风险是新索引并没有显著改进性能,或者是不建立索引,风险是无法确定索引是否能够改进性能。
Oracle数据库管理系统为用户提供了观察SQL语句的″优化方案″的能力。当数据库分析SQL语句时数据库自动确定SQL语句的优化方案。优化方案在没有实际执行SQL语句的情况下显示数据库会如何检索满足SQL语句需求所需的数据。具体地,优化方案显示这样的信息,例如什么表会被首先访问,中间结果集合会如何被联接,是否会使用索引,如果是这样的话会如何解释索引。因而通过观察具体SQL语句的优化方案,用户可以获得关于SQL语句在数据库中执行的效率的估测。
在较大的数据库管理系统中,查询优化对于时间和资源消耗最小化尤其重要。因而,用户观察SQL语句的优化方案并且确定索引变化对优化方案的影响的能力变得同等重要。
图1是关于常规方法100的流程图,其中上述常规方法100观察数据库表的索引变化对SQL语句优化方案的影响。在步骤110,针对SQL语句产生一个初始优化方案。在步骤120中,创建,丢弃或修改SQL语句中引用的表的索引。在步骤130,针对SQL语句产生一个新的优化方案。最终在步骤140,用户比较新优化方案和初始优化方案以确定改变索引会改进性能还是降低性能。
然而如上所述,图1的常规方法100需要过多的时间和资源来创建,放弃或改变索引。此外,数据库为建立各种优化方案而收集必要的统计数据会需要过多的时间和资源。如果在某个生产环境中不使用数据库,则可能采用花时间通过常规方法改变索引的手段。然而如果在生产中使用数据库,则由于在速度,资源和总体性能方面非常消极的影响,花费完成图1所示的改变所需的时间和精力是非常不可行的。例如,在使用图1的方法的情况下,如果一个工具或应用程序依赖一个现有索引并且用户在步骤120改变或放弃上述索引,则数据库可以停机并且整个系统会死锁。
因而,对于预览索引改变对优化方案的影响的常规方法,用户经常被迫尽量避免调整索引的尝试。于是,当SQL语句在数据库中执行时这经常导致会费用大量时间和精力的数据库不能实现最优索引分布或优化方案,尤其是对于较大的数据库管理系统。因而需要使用一种更快速并且更加有效的方式来改变数据库表索引设计并且创建这些索引的优化方案。
发明内容
本发明允许用户在新索引被加到数据库表中,从表中丢弃现有索引或修改表的现有索引时能够看到数据库查询的优化方案如何发生改变。
一个方法和装置为用户提供了一种框架,这种框架允许用户在不必花费常规方法所需的时间和资源的情况下试验表的索引分布并且预览各种索引分布构造对数据库查询优化方案的影响。
根据本发明的各个方面,创建一个模拟要测试的数据库表或数据库中的″原始表″的结构的虚拟表。通常通过复制原始表来创建虚拟表,其中排除原始表中的任何数据。因而如果数据被存储在原始表的行中,则数据行不被复制到虚拟表中。然而复制任何与原始表或″原始索引″相关的现有索引以定义一个与虚拟表相关的虚拟索引。
通过在复制原始表定义虚拟表时排除数据,可以方便快速地修改相关虚拟索引并且保持原始表的总体结构。可以非常快速地增加新索引和放弃现有索引。并且如果没有原始索引,则可以方便地创建新虚拟索引。
在查询中,针对原始表的引用被针对虚拟表的引用替换。数据库管理系统则为查询确定一个新的优化方案。由于使用虚拟表和虚拟索引确定新优化方案,所以方案的检索比使用原始表和任何相关原始索引产生的方案更快速。这是由于当复制原始表定义虚拟表时排除了原始表中的实际数据。因而在改变索引设计之后可以快速识别对优化方案的任何改变。
在向用户显示新优化方案之前,用原始表和原始索引的名称替换新优化方案中任何对虚拟表和任何虚拟索引的引用。通过这种方式,用户可以比较新优化方案和初始优化方案并且在不关心或甚至不需要知道虚拟对象在产生新优化方案过程中的使用的情况下分析变化。
附图说明
图1是关于常规方法100的流程图,其中上述常规方法100观察数据库表的索引变化对SQL语句优化方案的影响;
图2是图解一个示例性硬件环境的模块图,其中可以实现本发明的示例性实施例;
图3是图解基于本发明一个示例性实施例的系统的模块图,上述系统观察数据库表的索引变化对数据库查询优化方案的影响;和
图4是关于基于本发明一个示例性实施例的常规方法的流程图,上述常规方法观察数据库表的索引变化对数据库查询优化方案的影响。
具体实施方式
图2是图解一个示例性硬件环境的模块图,其中可以实现本发明的示例性实施例。在图2的硬件环境中,一个客户端计算机200被连接到一个服务器计算机202。客户端计算机200和服务器计算机202均可以包含处理器,随机访问存储器(RAM),只读存储器(ROM),键盘,显示器,固定和或可移动数据存储设备,和数据通信设备。
在图2中,服务器计算机202与一个数据库212通信,数据库212最好是一个Oracle数据库。本领域的技术人员应当理解,可以使用诸如微软公司SQL服务器数据库,Sybase SQL服务器数据库和IBM DB2数据库的其它数据库。
本领域的技术人员可以认识到,客户端计算机200和服务器计算机202可以使用参照图2描述的上述部件的任何组合或任意数量的不同部件,外设和其它设备。本领域的技术人员还可以认识到,可以在一个单独计算机而不是多个共同联网的计算机上实现本发明的示例性实施例。
通常使用数据库管理系统软件实现本发明的示例性实施例,例如PLATINUM Technology制作并销售的SQL-Station软件,虽然可以通过任意的数据库管理系统软件来实现,例如Oracle销售的Developer/2000开发包或IBM销售的DB2产品。此外,可以实现本发明示例性实施例的PLATINUM SQL-Station软件可以和其它软件结合使用,例如Oracle Developer/2000软件和IBM销售的DB2产品。
在图2中,软件包含客户端计算机200执行的SQL-Station客户端程序204和Relational Extender客户端程序206。软件还包含服务器计算机202执行的Oracle服务器程序208和Relational Extender程序210。在其相应计算机200或202的操作系统的控制下执行这些程序,上述操作系统包括Windows 95,Windows NT,OS/2,AIX,MVS,Unix等等。本领域的技术人员会认识到,可以使用上述程序的任意组合或任意数量的不同程序来实现本发明的示例性实施例。
SQL-Station客户端程序204和Relational Extender客户端程序206针对Oracle服务器程序208和Relational Extender服务器程序210管理的数据库212产生执行各种搜寻和检索函数,即查询的命令。在最优实施例中,这些查询符合SQL标准要求,虽然在不偏离本发明范围的前提下也可以使用其它类型的查询。查询调用Oracle服务器程序208和Relational Extender服务器程序210执行的函数,例如对用户和系统数据进行定义,访问控制,解释,编译,数据库检索和更新的函数。
通常情况下,DBMS软件,SQL查询和其中导出的指令均可实际包含在诸如一或多个数据存储设备和/或数据通信设备的计算机可读介质中,或者可以从中读取出来。此外,RDBMS软件,SQL查询,和其中导出的指令均由在被客户端计算机200和/或服务器计算机202读取和执行时导致客户端计算机200和/或服务器计算机202执行实现和/或使用本发明的实施例所必需的步骤的指令组成。
图3是图解基于本发明一个示例性实施例的系统的模块图,上述系统确定数据库表的索引变化对数据库查询优化方案的影响。图中显示两个用户或″模式″,即:TUTOR:302和″PAFO-HR″304,均访问一个数据库306,数据库306最好是一个诸如Oracle 8数据库的Oracle数据库。
在图3中,各个用户302,304控制其拥有并且存储在其帐户内的表中的对象和信息。例如,用户PAFO-HR 304控制原始表308和一个相关索引310,以及虚拟表312和一个与虚拟表312相关的虚拟索引314。表308,312和对应的相关索引310,314被存储在数据库上。
各个用户302,304通常控制该用户帐户内存储的信息以便排斥数据库306的其它用户。然而用户可以被授予各种涉及其它用户帐户的特权。通常,只可以从一个用户向另一个用户授予涉及一个用户的帐户的特权。例如在图3中,只有PAFO-HR 304具有向其它用户授予涉及PAFO-HR 304帐户的特权的能力。
一个这样的特权是″READ″,即允许访问另一个用户的帐户中的信息。例如在图3中,用户PAFO-HR 304允许用户TUTOR 302或授予TUTOR 302 READ特权来访问PAFO-HR 304帐户内的表中存储的信息和对象。因而TUTOR 302能够查询PAFO-HR的帐户内的表并且访问PAFO-HR 304帐户中的这种信息。另一方面,一个第三用户″SCOTT″(未示出)没有被授予这种涉及PAFO-HR帐户的READ特权,所以SCOTT不能访问PAFO-HR 304控制的表。
图3的系统中具有的另一个特权是″CREATE TABLE″特权或特权集合,上述特权也可以从一个用户授予另一个用户。在得到一个用户的授权的情况下,CREATE-TABLE特权允许其它用户在某个用户的帐户内创建表并且在表中存储对象。
由于为其它用户提供更强的单方面选择修改或删除另一个用户帐户内存储的信息的能力,用户经常不希望向数据库系统中其它用户授予CREATE TABLE特权。因而在图3的数据库环境中,TUTOR 302没有被授予涉及PAFO-HR帐户的CREATE-TABLE特权。
在图3中,根据本发明的示例性实施例,在数据库306上存储一个名称为″Oracle方案分析器″(″PAFO″)316的软件包。这个软件包可以被数据库系统的用户302,304访问。与TUTOR 302不同的是,软件包PAFO 316具有授予PAFO 316的PAFO-HR 304 CREATE TABLE特权和数据库管理员(DBA)授予的若干其它特权。因而一个登录到TUTOR 302帐户上的用户可以使用PAFO软件包316实现访问和试验PAFO-HR 304帐户中的表和索引的任务,如果没有登录则不具有完成上述任务的特权。
在图3中,TUTOR 302调用软件包PAFO 316执行本发明的方法。当调用PAFO 316时,PAFO 316为PAFO-HR 304帐户创建并动态配置一个过程318。接着在PAFO-HR 304帐户中执行配置的过程318。配置的过程318可以向TUTOR 302帐户的用户授予访问PAFO-HR 304帐户的必要特权。配置的过程接着向TUTOR,即用户的帐户授予对虚拟表的READ(非写)特权。通过这种方式,TUTOR可以在没有CREATE TABLE特权的情况下访问原始表308和虚拟表312。此后参照图3和4描述配置的过程318的功能。
在图4的步骤402中,过程316识别SQL语句320中引用的原始表308并且复制原始表308以定义虚拟表312。在步骤402中,这个复制包含向新表中复制原始表统计数据,其中包含列统计,柱状图和分段存储。通过这种方式,表面上虚拟表包含的数据行和原始表一样多。然而最好从定义虚拟表312所复制的信息中排除原始表308中的任何实际数据。因而当数据被存储在原始表308的行中时,数据行不被复制到虚拟表312中。
在步骤402中,通过一个原始表复本进行创建和操作有许多好处。用户对原始表308的访问不被中断并且变化不降低性能。在生产环境中,执行的应用不受影响。当使用Oracle数据库时,不需要针对原始表308修改Oracle目录中的内容。此外由于虚拟表不包含任何数据行,因而索引建立非常快速。
在步骤402中,如果在PAFO-HR 304帐户中有其它原始表,则也可以复制这些表以便定义对应的虚拟表。并且由于如下所述的原因,最好维护一个列表(未示出),在该列表中虚拟表的名称与其建立所依据的原始表相关。
在步骤404中定义与虚拟表312相关的虚拟索引314。在这个步骤中,如果存在任何与原始表308相关的原始索引310,则过程316复制原始索引310以定义虚拟索引314。例如如果针对图3的原始表308中示出的两个列定义了原始索引,则通过复制原始索引针对虚拟表312中示出的两个列创建对应的虚拟索引。
与原始索引310相关的统计数据也被复制到虚拟索引314中,并且可以根据用户的指示来设置。通过这种方式,虚拟索引具有与原始索引相同的数据结构,其中包含相同的约束和定义。因而对于所涉及的任何优化方案,虚拟索引的结构均与原始索引相同。
在步骤404中,如果没有与原始表308相关的原始索引310,则用户可以通过过程316创建和定义虚拟索引314。并且在一个用户希望进行没有索引的试验的情况下,用户可以使用配置的过程316通过删除原始索引310中出现的任何索引来进行简单选择以定义虚拟索引314。这里,在PAFO-HR 304上创建过程318并且执行过程318以便向TUTOR 302授予READ特权。
在步骤406,当定义虚拟索引314之后,PAFO 316用一个针对虚拟表312的引用替换SQL语句320中任何针对原始表308的引用。另外,用虚拟索引314的名称替换SQL语句320中任何针对原始索引310的引用。
被替换名称修改的SQL语句322接着被发送到数据库服务器。帐户TUTOR 302的用户会相信其正在访问原始表308,但实际上正在访问虚拟表314。此外,通过创建原始表的一个复本并且简单改变SQL语句中引用的对象的名称,不必进行在原始表上费时又费资源的创建新索引的操作。
由于PAFO程序316已经改变SQL语句320并且定义了经过修改的SQL语句322,数据库在步骤408中解释经过修改的SQL语句322以确定虚拟表的新优化方案324。
在步骤410中,PAFO过程316接着修改数据库服务器返回的新优化方案324中的信息以便定义一个经过修改的优化方案326。具体地,分别参照原始索引310和原始表308替换新优化方案324中针对虚拟索引314和虚拟表312的任何引用。
接着在步骤412中向用户显示用替换名称修改的优化方案326。因而用户的感觉是仅仅在操作初始对象308和310。通过使用上述方法,改变索引和检索新优化方案所需的时间经常从若干小时减少到若干秒。因而用户在不需要关心或察觉虚拟表和虚拟索引的使用的情况下就能够得到改进新优化方案检索的速度与系统性能的好处。
用户可以将经过修改的优化方案326与任何针对原始表308和原始索引310创建的初始优化方案相互比较。如果新优化方案更好,例如似乎会改进数据库中执行SQL语句320的速度和效率,则用户可以选择在原始表308上实际建立虚拟索引314。反之,如果不会改进性能,则用户可以试验不同的虚拟索引314或在不浪费时间和资源的情况下继续使用原始索引310,其中如果不继续使用原始索引310则需要构造虚拟索引314。
可以由多个用户在相同对象上同时执行如图3和4所述的各个功能。这些功能不干扰对象的其它用户,也不对性能产生显著的影响,这允许在一个生产系统中执行这些功能。
例子
在一个例子中,一个用户登录到图3的TUTOR 302帐户上。在这个例子中,帐户PAFO-HR 304中的原始表308是一个存储某公司或企业的雇员名称的表,此后被称作″EMPLOYEES″表。TUTOR 302被授予涉及PAFO-HR帐户的READ特权,所以TUTOR 302能够向EMPLOYEES表发送查询。
已经针对EMPLOYEES表创建了虚拟表312,其中虚拟表名称是″T_########1″,初始SQL语句320如下所示:
SELECT*
FROM hr.employees e
WHERE hiredate>:H_Date
下面的SQL语句作为修改后的SQL语句322被发送到服务器,其中原始表名称″EMPLOYEES″被虚拟表名称″T_########1″替换:
SELECT*
FROM hr.″T_########1″e
WHERE hiredate>:H_Date
如果SQL语句320包含优化线索,则PAFO 316检查包含原始表名称″EMPLOYEES″的线索或一个与其相关的、作为线索的参数的索引。例如,假定用户正在操作下面SQL语句320:
SELECT/*+INDEX(e,I_EMP_HIREDATE)*/*
FROM EMPLOYEES e
WHERE hiredate>:H_Date
当用户请求观察SQL语句320的优化方案时,下面消息被发送到数据库服务器以作为修改的SQL语句322:
SELECT/*+INDEX(e,I_########5)*/*
FROM hr.T_########1 e
WHERE hiredate>:H_Date
为了避免系统中的性能下降,各个用户最好只被允许创建EMPLOYEES的一个单独复本以定义″T_########1″虚拟表。在已经为该用户创建一个复本的情况下最好限制用户创建新的复本。
对于下述过程,最好指定原始表的名称而不是虚拟表名称。所以如果用户在EMPLOYEES表上创建一个第一虚拟索引,用户可以在EMPLOYEES表的虚拟复本上创建一个第二虚拟索引或放弃一个索引,但是表名称参数应当是原始表的名称。在后一种情况下,即用户重新使用之前创建的一个虚拟表的情况下,PAFO软件包保证原始表中仍然存在检索的索引名称。例如,可以使用下面的SQL查询:
SELECT index_name FROM expl_indexes
WHERE owner=:Index_Owner
AND index_name=:Index_Name
AND table_name=:Table_Name
最终,由于通常只返回原始表上存在的索引的名称,应当通过如下所述的语句查询虚拟索引:
SELECT owner,index_name FROM expl_indexes
WHERE table_owner=:Virtual_table_Owner
AND table_name=:Virtual_Table_Name
AND(owner,index_name)NOT IN
((′owner 1′,′index1′),(′owner2′,′index2′),...),
其中(′owner1′,′index1′)对是返回索引的拥有者和名称。
在这个例子中,下面步骤被用于观察数据库表的索引变化对数据库查询优化方案的影响。
步骤1:创建虚拟表
可以执行下面过程以创建虚拟表,假定一个虚拟表尚未创建:
begin
pafo.explain_virtual.create_virtual_table(:table_owner,:table_name);
end;
如果虚拟表已经存在,则返回一个差错报告。参数的定义如下所述:
约束变量 | 模式 | 数据类型 | 描述 |
table_owner | Input | VARchar2(30) | 原始表拥有者的名称。将为其创建虚拟表。 |
table_name | Input | VARchar2(30) | 原始表的名称。 |
表1
在表1中,VARCHAR2(30)表示一个多达30个字符的字符串。并且,模式=INPUT指示数据被输入到过程中。反之,如以下表中所使用的,模式=OUTPUT表示从过程中检索出的数据。
步骤2:定义虚拟表和索引名称
在创建虚拟表之后,可以执行下面过程返回定义虚拟索引所复制的虚拟表名称和索引名称。
begin
pafo.explain_virtual.get_virtual_table_aliases(:table_owner,:table_name,:virtual_table_name,:virtual_index_count,:original_index_owners,:original_index_names,:virtual_index_names);
end:
约束变量 | 模式 | 数据类型 | 描述 |
table_ownertable_namevirtual_table_name | InputInputoutput | VARchar2(30)VARchar2(30)VARchar2(30) | 原始表拥有者原始表名称被用来创建虚拟表的名称。 |
virtual_index_count | Output | INTEGER | 原始表上存在的索引的数量。在虚拟表上重新创建所有这些索引但具有不同的名称。 |
original_index_owners | Output | Array ofVARchar2(30) | 索引拥有者数组。这些名称对于初始和虚拟索引均是相同的。(数组大小=:virtual_index_count) |
original_index_names | Output | Array ofVARchar2(30) | 索引名称数组。这些名称是原始表上使用的名称。(数组大小=:virtual_index_count) |
virtual_index_names | Output | Array ofVARchar2(30) | 索引名称数组。这些名称是被用 来 创 建 ″original_index_names″中列的索引的复本的名称。″original_index_names ″和″virtual_index_names″数组中的名称之间最好有1-1对应关系。(数组大小=:virtual_index_count) |
表2
步骤2的调用通常假定使用CREATE_VIRTUAL_TABLE过程创建虚拟表。这意味着如果虚拟表存在于一个集簇中,则该集簇与原始表所存在的集簇相同。即虚拟表不是将一个非集簇表变成集簇表的请求的产物。否则返回一个差错报告。
步骤3:缺省统计数据
新虚拟索引最好具有现实统计数据以便保证创建一个相当于具有在原始表上创建的索引的优化方案。EXPLAIN_VIRTUAL提供过程DEFAULT_NEW_INDEX_STATS协助用户设置适当的统计数据。
如果原始表具有已存在的索引,则那些索引的存储信息和统计数据会被用来产生虚拟索引的缺省存储信息和统计数据。如果没有分析出已存在的索引,则会使用有限制的缺省值。
在执行DEFAULT_NEW_INDEX_STATS之后,向PAFO返回缺省存储信息和统计数据以便显示和修改。允许用户改变这些统计数据以便较好地标识索引性质。为了帮助用户判定如何改变统计数据,PAFO允许用户显示关于当前在表上创建的其它索引的统计数据。
可以执行下面过程以获得缺省统计数据:
begin
pafo.explain_virtual.default_new_index_stats(:table_owner,:table_name,:ind_name,:ind_col_names,:num_ind_columns,:default_tablespace,:init_trans,:max_trans,:pct_free,:btree_levels,:leaf_bloeks,:avg_leaf_blocks,:avg_data_blocks,:cluster_factor,:blocks_allocated,:extents_allocated,:distinct_values);
end;
参数定义如下所述:
参数 | 模式 | 数据类型 | 用途 |
table_owner | input | VARchar2(30) | 拥有会在其上创建索引的表的ORACLE帐户。 |
table_name | Input | VARchar2(30) | 表名称。 |
ind_name | Input | VARchar2(30) | 建议创建的索引的名称。 |
ind_col_names*1 | Input | Array of VARchar2(30) | 将创建索引的列。数组中列的顺序应当匹配用户请求的顺序。 |
num_ind_columns | Input | NUMBER | 列的数量;即数组IND_COL_NAMES中的元素数量。 |
default_tablespace | Output | VARchar2(30) | 将在其上创建索引的表空间名称。 |
init_trans | Output | NUMBER | 创建索引的INIT_TRANS参数。 |
max_trans | Output | NUMBER | 创建索引的MAX_RANS参数。 |
pct_free | Output | NUMBER | 创建索引的PCT_FREE参数。 |
btree_levels | Output | NUMBER | 将通过索引存储的统计数据。 |
leaf_blocks | Output | NUMBER | " |
avg_leaf_blocks | Output | NUMBER | " |
avg_data_blocks | Output | NUMBER | " |
cluster_factor | Output | NUMBER | " |
blocks_allocated | Output | NUMBER | " |
extents_allocated | Output | NUMBER | " |
distinct_values | Output | NUMBER | " |
表3
*1-保证各个数组元素的数值为null结束并且在适当的OCI约束参数中指定数组的各个元素的实际长度。
当执行过程DEFAULT_NEW_INDEX_STATS时可以产生下面的差错代码。第二列包含有关差错的描述,并且在括号中包含有关用户如何能够排除差错的建议。
-20001 | 用户既不是表的拥有者;也不具有表的INDEX特权;也不具有CREATE_ANY_INDEX特权。(应当获得适当的特权。) |
-20002 | 表不存在。(检查表名称和拥有者。) |
-20003 | 指定列已经有索引。(表已经具有一个针对所请求的列的索引。) |
-20004 | 列__未找到。(索引列不存在。) |
-20005 | 非法的表拥有者。(输入的表拥有者Oracle帐户不存在。) |
-20006 | 索引名称不唯一。(为虚拟索引输入一个不同的索引名称。) |
-20010 | 在表上先执行CLEAN_UP。(表已经具有一个由用户创建的虚拟索引。) |
表4
输出参数会被输入到下一个要执行的过程EXPLAIN_VIRTUAL.CREATE_VIRTUAL_INDEX。并且注意,用户可能会试图在用户没有访问的表空间上创建索引。
步骤4:创建虚拟索引
最好复制原始表的任何现有索引以定义虚拟索引。还复制索引统计数据和存储信息。因此可以执行下面过程:
begin
pafo.explain_virtual.create_virtual_index(:table_owner,:table_name,:ind_name,:ind_col_names,:num_ind_columns,:default_tablespace,:init_trans,:max_trans,:pct_free,:btree_levels,:leaf_blocks,:avg_leaf_blocks,:avg_data_blocks,:cluster_factor,:blocks_allocated,:extents_allocated,:distinct_values);
end;
前面在步骤3中定义了这些参数。
步骤5:最终步骤
这里,PAFO如上所述创建一个显示初始SQL文本的新WHAT IF框架(frame)。允许用户修改文本和增加线索。复制SQL框架的″标签″并且使用相同的序号。例如,如果SQL框架标记是SQL:HISTORY;1,则WHAT IF框架应当被标记成WHAT IF:HISTORY;1。
当用户请求一个优化方案时,PAFO应当改变所解释的SQL文本,但不是在SQL框架上。但是SQL应当看上去类似初始SQL语句。因而过程期望得到SQL文本的一个复本并且用表复本的名称(:temp_table_name)替换原始表名称(:table_name)的所有出现。
如果SQL语句使用一个同义词(局部或公共)指向原始表,则修改的SQL文本应当包含虚拟表拥有者和虚拟表名称。在线索引用表或表上一个索引的情况下也可能需要改变线索参数。接着创建方案并且将方案检索到存储器中。
对于OPERATION列从′TABLE′开始的各个OBJECT_OWNER和OBJECT_NAME组合,应当将临时表名称改变成初始名称(:table_name)。
对于前面步骤2中返回的各个虚拟索引,应当在优化方案中搜寻这些虚拟索引名称并且用原始索引名称替换。在数组(:original_index_owners,:original_index_names)中标识虚拟索引。在数组(:virtual_index_names)中存储相关的替换索引名称。所以每当OPERATION列以文本″INDEX″为开始时PAFO便进行搜寻。如果OBJECT_OWNER和OBJECT_NAME匹配ORIGINAL_INDEX_OWNER(0)和VIRTUAL_INDEX_NAME(0)数值,则索引名称应当被改变成ORIGINAL_INDEX_NAME(0)。最好针对各个数组元素重复这个处理。
接着显示修改的方案并且在创建的虚拟索引对性能有影响时通知用户。
当显示″OBJECT″标签中的信息时,PAFO最好如步骤4&5中所述进行相同的改变;即PAFO显示T_########1而不是EMPLOYEES的索引。但在向用户显示信息时PAFO应当使用名称EMPLOYEES代替T_########1。并且当显示索引时,应当显示相关的ORIGINAL_INDEX_NAME数值。
当用户点击一个包含虚拟表名称或其某个索引的方案步骤时,应当显示相关虚拟索引的统计数据。因而,用户点击EMPLOYEES,用户看见名称EMPLOYEES,但PAFO列出T_########1的统计数据。对于EMPLOYEES的索引也是如此。
放弃一个虚拟索引
这个过程最好只能放弃那些属于一个虚拟表的索引。所以如果一个虚拟表不存在,则应当创建这个虚拟表。通过过程CREATE_VIRTUAL_TABLE创建虚拟表。接着用户可以指示其希望放弃一个索引的表。接着可以使用下面的步骤:
步骤1.列出所有用户要访问的表
SELECT owner,table_name
FROM exp1_tables
步骤2.确定选择的表是否虚拟表
SELECT table_id,new_table_name
FROM my_explain_virtual_tables
WHERE orig_table_name=:Table_name
如果查询返回一个结果行,则虚拟复本存在。否则创建虚拟表(参见上面创建虚拟索引中的步骤1)。
步骤3.列出虚拟表上的虚拟索引
列出虚拟表上的虚拟索引(参见上面创建虚拟索引中的步骤2)。
步骤4.放弃虚拟索引
为了放弃一个虚拟索引,执行下面的过程:
begin
pafo.explain_virtual.drop_virtual_index(:table_owner,:table_name,:virtual_index_name)
end;
参数 | 模式 | 数据类型 | 用途 |
table_owner | Input | VARchar2(30) | 拥有原始表的ORACLE帐户。 |
table_name | Input | VARchar2(30) | 原始表的名称。 |
index_name | Input | VARchar2(30) | 虚拟索引的名称;(EXPLAIN_VIRTUAL_INDEXES.NEWINDEX_NAME) |
表5
清除
为了放弃一个具体虚拟表并且在PAFO注册表中清除相关信息,可以执行下面的过程:
begin
pafo.explain_virtual.clean_up_table
(:virtual_table_creator,:original_table_owner,:original_table_name);
end;
参数 | 模式 | 数据类型 | 用途 |
virtual_table_owner | Input | VARCIEIAR2(30) | 创建虚拟表的ORACLE帐户。 |
original_table_owner | Input | VARchar2(30) | 拥有原始表的ORACLE帐户。 |
original_table_name | Input | VARcharZ(30) | 原始表的名称。 |
表6
为了放弃所有虚拟表,执行下面过程:
begin
pafo.explain_virtual.clean_up_all;
end;
应当理解,上述具体实施例只是为了图解本发明的原理,本领域的技术人员在不偏离本发明的范围和宗旨的前提下可以进行各种修改。因而本发明的范围仅受后面的权利要求书的范围的限制。
Claims (9)
1.在数据库管理系统中观察一个查询的初始优化方案的变化的方法,上述查询具有一个针对某个原始表的引用,上述原始表具有在一个数据库中存储的数据,上述方法包括:
复制排除了数据的原始表以定义一个虚拟表;
提供一个与虚拟表相关的虚拟索引;
在查询中用针对虚拟表的引用替换针对原始表的引用;
向查询增加针对虚拟索引的引用;
确定查询的一个新优化方案;和
2.如权利要求1所述的方法,其中还包括比较新优化方案和初始优化方案的步骤。
3.如权利要求2所述的方法,其中在比较新优化方案和初始优化方案之前还包括:
在新优化方案中用针对原始表的引用替换针对虚拟表的引用;和
向用户显示具有针对原始表的引用的新优化方案。
4.在数据库管理系统观察查询的初始优化方案的变化的方法,上述查询具有:(i)针对原始表的引用,上述原始表具有在一个数据库中存储的数据;和(ii)针对与原始表相关的原始索引的引用,上述方法包括:
复制排除了数据的原始表以定义一个虚拟表;
改变原始索引以定义一个与虚拟表相关的虚拟索引;
确定查询的一个新优化方案;和
5.如权利要求4所述的方法,其中还包括比较新优化方案和初始优化方案的步骤。
6.如权利要求5所述的方法,其中在比较新优化方案和初始优化方案之前还包括:在新优化方案中分别用针对原始表和原始索引的引用替换针对虚拟表和虚拟索引的引用;和
向用户显示具有针对原始表和原始索引的引用的新优化方案。
7.在数据库管理系统观察查询的初始优化方案的变化的方法,上述查询具有:(i)针对原始表的引用,上述原始表具有在一个数据库中存储的数据;和(ii)针对与原始表相关的原始索引的引用,上述方法包括:
复制排除了数据的原始表以定义一个虚拟表;
在查询中用针对虚拟表的引用替换针对原始表的引用;
从查询中删除针对虚拟表的引用;
确定查询的一个新优化方案;和
8.如权利要求7所述的方法,其中还包括比较新优化方案和初始优化方案的步骤。
9.如权利要求8所述的方法,其中在比较新优化方案和初始优化方案之前还包括:
在新优化方案中用针对原始表的引用替换针对虚拟表的引用;和
向用户显示具有针对原始表的引用的新优化方案。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/356,797 | 1999-07-20 | ||
US09/356,797 US6560593B1 (en) | 1999-07-20 | 1999-07-20 | Method and apparatus for viewing the effect of changes to an index for a database table on an optimization plan for a database query |
Publications (1)
Publication Number | Publication Date |
---|---|
CN1361890A true CN1361890A (zh) | 2002-07-31 |
Family
ID=23402992
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN00810565A Pending CN1361890A (zh) | 1999-07-20 | 2000-07-19 | 观察改变索引对查询优化方案的影响的数据库系统 |
Country Status (12)
Country | Link |
---|---|
US (2) | US6560593B1 (zh) |
EP (1) | EP1206746B1 (zh) |
JP (1) | JP2003505766A (zh) |
KR (1) | KR20020031390A (zh) |
CN (1) | CN1361890A (zh) |
AU (1) | AU768487B2 (zh) |
BR (1) | BR0012684A (zh) |
CA (1) | CA2379767A1 (zh) |
HK (1) | HK1046177A1 (zh) |
IL (2) | IL147694A0 (zh) |
WO (1) | WO2001006417A1 (zh) |
ZA (1) | ZA200200389B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1323366C (zh) * | 2003-09-23 | 2007-06-27 | 国际商业机器公司 | 查询处理操作中利用辅助属性进行查询重写的方法和设备 |
CN101021874B (zh) * | 2007-03-21 | 2010-05-26 | 金蝶软件(中国)有限公司 | 一种对查询sql请求进行优化的方法及装置 |
CN101223522B (zh) * | 2004-03-19 | 2011-08-31 | 微软公司 | 调用表值函数的查询的有效评估系统和方法 |
CN103793457A (zh) * | 2012-10-31 | 2014-05-14 | 国际商业机器公司 | 用于使用利用率分析管理存储器利用率的系统和方法 |
CN111367892A (zh) * | 2020-03-31 | 2020-07-03 | 中国建设银行股份有限公司 | 数据迁移方法及装置 |
CN113704246A (zh) * | 2020-10-23 | 2021-11-26 | 天翼智慧家庭科技有限公司 | 一种基于虚拟索引的数据库索引优化方法和系统 |
Families Citing this family (51)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040225865A1 (en) * | 1999-09-03 | 2004-11-11 | Cox Richard D. | Integrated database indexing system |
US6938031B1 (en) * | 2001-10-19 | 2005-08-30 | Data Return Llc | System and method for accessing information in a replicated database |
US6938044B1 (en) * | 2001-12-28 | 2005-08-30 | Ncr Corporation | Tracking usage of resources of a database system |
US7797286B2 (en) * | 2004-05-21 | 2010-09-14 | Sap Ag | System and method for externally providing database optimizer statistics |
WO2005114480A2 (en) * | 2004-05-21 | 2005-12-01 | Computer Associates Think, Inc. | Uninterrupted database index reorganization/movement |
US7711692B2 (en) * | 2004-11-12 | 2010-05-04 | International Business Machines Corporation | Method, system and program product for rewriting view statements in structured query language (SQL) statements |
US20060136380A1 (en) * | 2004-12-17 | 2006-06-22 | Purcell Terence P | System and method for executing a multi-table query |
US7457797B2 (en) * | 2005-03-30 | 2008-11-25 | International Business Machines Corporation | Method and apparatus for associating logical conditions with the re-use of a database query execution strategy |
US7908242B1 (en) * | 2005-04-11 | 2011-03-15 | Experian Information Solutions, Inc. | Systems and methods for optimizing database queries |
US7610265B2 (en) * | 2005-04-29 | 2009-10-27 | Sap Ag | Data query verification |
US7805434B2 (en) * | 2006-01-12 | 2010-09-28 | International Business Machines Corporation | Performing a non-invasive runtime simulation for a database system |
JP4749899B2 (ja) * | 2006-03-15 | 2011-08-17 | 株式会社日立ソリューションズ | テーブル構造決定及び通知システム |
JP5068062B2 (ja) * | 2006-10-30 | 2012-11-07 | インターナショナル・ビジネス・マシーンズ・コーポレーション | データベースを統合するためのシステム、方法、およびプログラム |
KR100833540B1 (ko) * | 2006-11-30 | 2008-05-29 | 인하대학교 산학협력단 | 다중 연속 질의에서 슬라이딩 윈도우 집계 질의 최적화를위한 시스템 및 그 방법 |
KR100778328B1 (ko) * | 2007-01-19 | 2007-11-21 | 주식회사 퓨전소프트 | 가상칼럼을 이용한 데이터베이스에서의 질의 최적화 방법 |
US8285656B1 (en) | 2007-03-30 | 2012-10-09 | Consumerinfo.Com, Inc. | Systems and methods for data verification |
US7761471B1 (en) | 2007-10-16 | 2010-07-20 | Jpmorgan Chase Bank, N.A. | Document management techniques to account for user-specific patterns in document metadata |
US7970757B2 (en) * | 2008-03-17 | 2011-06-28 | International Business Machines Corporation | Computer program product for database query optimization |
US9189047B2 (en) | 2008-05-08 | 2015-11-17 | International Business Machines Corporation | Organizing databases for energy efficiency |
US8312007B2 (en) * | 2008-05-08 | 2012-11-13 | International Business Machines Corporation | Generating database query plans |
US8312033B1 (en) | 2008-06-26 | 2012-11-13 | Experian Marketing Solutions, Inc. | Systems and methods for providing an integrated identifier |
KR200453964Y1 (ko) * | 2008-08-20 | 2011-06-09 | 신유진 | 위치추적기능 및 위급상황송출기능을 갖는 머리핀 |
KR101022643B1 (ko) * | 2008-11-20 | 2011-03-22 | 서울대학교산학협력단 | 전자 카탈로그 관리 장치 및 방법 |
US9665620B2 (en) * | 2010-01-15 | 2017-05-30 | Ab Initio Technology Llc | Managing data queries |
US9147042B1 (en) | 2010-11-22 | 2015-09-29 | Experian Information Solutions, Inc. | Systems and methods for data verification |
US9116955B2 (en) | 2011-05-02 | 2015-08-25 | Ab Initio Technology Llc | Managing data queries |
US8635195B2 (en) * | 2011-05-19 | 2014-01-21 | International Business Machines Corporation | Index compression in a database system |
US11030562B1 (en) | 2011-10-31 | 2021-06-08 | Consumerinfo.Com, Inc. | Pre-data breach monitoring |
GB2504716A (en) | 2012-08-07 | 2014-02-12 | Ibm | A data migration system and method for migrating data objects |
CN103049521B (zh) * | 2012-12-19 | 2015-11-11 | 广东电子工业研究院有限公司 | 可实现多属性复合条件查询的虚拟表索引系统及方法 |
US9697263B1 (en) | 2013-03-04 | 2017-07-04 | Experian Information Solutions, Inc. | Consumer data request fulfillment system |
US10102536B1 (en) | 2013-11-15 | 2018-10-16 | Experian Information Solutions, Inc. | Micro-geographic aggregation system |
US9529851B1 (en) | 2013-12-02 | 2016-12-27 | Experian Information Solutions, Inc. | Server architecture for electronic data quality processing |
CA3092699C (en) | 2013-12-06 | 2023-07-25 | Ab Initio Technology Llc | Source code translation |
US10262362B1 (en) | 2014-02-14 | 2019-04-16 | Experian Information Solutions, Inc. | Automatic generation of code for attributes |
US10437819B2 (en) | 2014-11-14 | 2019-10-08 | Ab Initio Technology Llc | Processing queries containing a union-type operation |
US10417281B2 (en) | 2015-02-18 | 2019-09-17 | Ab Initio Technology Llc | Querying a data source on a network |
US10628393B2 (en) * | 2015-06-24 | 2020-04-21 | International Business Machines Corporation | Generating data tables |
JP6669571B2 (ja) | 2016-04-19 | 2020-03-18 | 株式会社シスバンク | リレーショナルデータベースのチューニング装置及び方法 |
CN116205724A (zh) | 2017-01-31 | 2023-06-02 | 益百利信息解决方案公司 | 大规模异构数据摄取和用户解析 |
CN108460079B (zh) * | 2018-01-08 | 2021-03-26 | 平安科技(深圳)有限公司 | 数据库监控方法、装置、终端设备及存储介质 |
CN109145004A (zh) * | 2018-08-29 | 2019-01-04 | 智慧互通科技有限公司 | 一种创建数据库索引的方法及装置 |
US10963434B1 (en) | 2018-09-07 | 2021-03-30 | Experian Information Solutions, Inc. | Data architecture for supporting multiple search models |
US11119998B1 (en) | 2018-11-26 | 2021-09-14 | Amazon Technologies, Inc. | Index and view updates in a ledger-based database |
US11196567B2 (en) | 2018-11-26 | 2021-12-07 | Amazon Technologies, Inc. | Cryptographic verification of database transactions |
US11036708B2 (en) * | 2018-11-26 | 2021-06-15 | Amazon Technologies, Inc. | Indexes on non-materialized views |
US10942910B1 (en) | 2018-11-26 | 2021-03-09 | Amazon Technologies, Inc. | Journal queries of a ledger-based database |
US11093223B2 (en) | 2019-07-18 | 2021-08-17 | Ab Initio Technology Llc | Automatically converting a program written in a procedural programming language into a dataflow graph and related systems and methods |
US11941065B1 (en) | 2019-09-13 | 2024-03-26 | Experian Information Solutions, Inc. | Single identifier platform for storing entity data |
US12045235B2 (en) * | 2020-12-14 | 2024-07-23 | International Business Machines Corporation | Access path for database optimizer |
US11880377B1 (en) | 2021-03-26 | 2024-01-23 | Experian Information Solutions, Inc. | Systems and methods for entity resolution |
Family Cites Families (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0320266A3 (en) * | 1987-12-11 | 1992-03-11 | Hewlett-Packard Company | View composition in a data base management system |
US5335345A (en) * | 1990-04-11 | 1994-08-02 | Bell Communications Research, Inc. | Dynamic query optimization using partial information |
US5555409A (en) | 1990-12-04 | 1996-09-10 | Applied Technical Sysytem, Inc. | Data management systems and methods including creation of composite views of data |
US5347653A (en) | 1991-06-28 | 1994-09-13 | Digital Equipment Corporation | System for reconstructing prior versions of indexes using records indicating changes between successive versions of the indexes |
US5367675A (en) * | 1991-12-13 | 1994-11-22 | International Business Machines Corporation | Computer automated system and method for optimizing the processing of a query in a relational database system by merging subqueries with the query |
FR2696853B1 (fr) * | 1992-10-12 | 1994-12-23 | Bull Sa | Procédé d'aide à l'optimisation d'une requête d'un système de gestion, de base de données relationnel et procédé d'analyse syntaxique en résultant. |
US5301317A (en) * | 1992-04-27 | 1994-04-05 | International Business Machines Corporation | System for adapting query optimization effort to expected execution time |
US5404510A (en) | 1992-05-21 | 1995-04-04 | Oracle Corporation | Database index design based upon request importance and the reuse and modification of similar existing indexes |
FR2696852B1 (fr) * | 1992-10-12 | 1994-12-23 | Bull Sa | Procédé d'aide à l'optimisation d'une requête d'un système de gestion de base de données relationnel. |
US5560007A (en) | 1993-06-30 | 1996-09-24 | Borland International, Inc. | B-tree key-range bit map index optimization of database queries |
US5675785A (en) | 1994-10-04 | 1997-10-07 | Hewlett-Packard Company | Data warehouse which is accessed by a user using a schema of virtual tables |
US5671403A (en) * | 1994-12-30 | 1997-09-23 | International Business Machines Corporation | Iterative dynamic programming system for query optimization with bounded complexity |
US5608904A (en) * | 1995-02-13 | 1997-03-04 | Hewlett-Packard Company | Method and apparatus for processing and optimizing queries having joins between structured data and text data |
US5758145A (en) | 1995-02-24 | 1998-05-26 | International Business Machines Corporation | Method and apparatus for generating dynamic and hybrid sparse indices for workfiles used in SQL queries |
US5694591A (en) * | 1995-05-02 | 1997-12-02 | Hewlett Packard Company | Reducing query response time using tree balancing |
US5745904A (en) | 1996-01-12 | 1998-04-28 | Microsoft Corporation | Buffered table user index |
US5765168A (en) | 1996-08-09 | 1998-06-09 | Digital Equipment Corporation | Method for maintaining an index |
US5765147A (en) | 1996-11-21 | 1998-06-09 | International Business Machines Corportion | Query rewrite for extended search capabilities |
US5913207A (en) * | 1997-08-15 | 1999-06-15 | Microsoft Corporation | Database system index selection using index configuration enumeration for a workload |
US5960428A (en) * | 1997-08-28 | 1999-09-28 | International Business Machines Corporation | Star/join query optimization |
US5943666A (en) * | 1997-09-15 | 1999-08-24 | International Business Machines Corporation | Method and apparatus for optimizing queries across heterogeneous databases |
US6006220A (en) * | 1997-09-30 | 1999-12-21 | International Business Machines Corporation | Determining the optimal access path for a query at execution time using an actual value for each variable in a query for estimating a filter factor |
-
1999
- 1999-07-20 US US09/356,797 patent/US6560593B1/en not_active Expired - Lifetime
-
2000
- 2000-07-19 BR BR0012684-5A patent/BR0012684A/pt not_active IP Right Cessation
- 2000-07-19 KR KR1020027000823A patent/KR20020031390A/ko not_active Application Discontinuation
- 2000-07-19 EP EP00960157.6A patent/EP1206746B1/en not_active Expired - Lifetime
- 2000-07-19 WO PCT/US2000/040424 patent/WO2001006417A1/en active IP Right Grant
- 2000-07-19 IL IL14769400A patent/IL147694A0/xx active IP Right Grant
- 2000-07-19 AU AU71357/00A patent/AU768487B2/en not_active Ceased
- 2000-07-19 CN CN00810565A patent/CN1361890A/zh active Pending
- 2000-07-19 JP JP2001511602A patent/JP2003505766A/ja active Pending
- 2000-07-19 CA CA002379767A patent/CA2379767A1/en not_active Abandoned
-
2001
- 2001-07-06 US US09/900,791 patent/US6898588B2/en not_active Expired - Lifetime
-
2002
- 2002-01-16 ZA ZA200200389A patent/ZA200200389B/en unknown
- 2002-01-17 IL IL147694A patent/IL147694A/en not_active IP Right Cessation
- 2002-10-22 HK HK02107667.5A patent/HK1046177A1/zh unknown
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1323366C (zh) * | 2003-09-23 | 2007-06-27 | 国际商业机器公司 | 查询处理操作中利用辅助属性进行查询重写的方法和设备 |
CN101223522B (zh) * | 2004-03-19 | 2011-08-31 | 微软公司 | 调用表值函数的查询的有效评估系统和方法 |
CN101021874B (zh) * | 2007-03-21 | 2010-05-26 | 金蝶软件(中国)有限公司 | 一种对查询sql请求进行优化的方法及装置 |
CN103793457A (zh) * | 2012-10-31 | 2014-05-14 | 国际商业机器公司 | 用于使用利用率分析管理存储器利用率的系统和方法 |
CN103793457B (zh) * | 2012-10-31 | 2017-07-11 | 国际商业机器公司 | 用于使用利用率分析管理存储器利用率的系统和方法 |
US9830347B2 (en) | 2012-10-31 | 2017-11-28 | International Business Machines Corporation | Management of memory usage using usage analytics |
US10698875B2 (en) | 2012-10-31 | 2020-06-30 | International Business Machines Corporation | Management of memory usage using usage analytics |
US11573946B2 (en) | 2012-10-31 | 2023-02-07 | International Business Machines Corporation | Management of memory usage using usage analytics |
CN111367892A (zh) * | 2020-03-31 | 2020-07-03 | 中国建设银行股份有限公司 | 数据迁移方法及装置 |
CN111367892B (zh) * | 2020-03-31 | 2024-01-19 | 中国建设银行股份有限公司 | 数据迁移方法及装置 |
CN113704246A (zh) * | 2020-10-23 | 2021-11-26 | 天翼智慧家庭科技有限公司 | 一种基于虚拟索引的数据库索引优化方法和系统 |
Also Published As
Publication number | Publication date |
---|---|
AU7135700A (en) | 2001-02-05 |
CA2379767A1 (en) | 2001-01-25 |
WO2001006417A1 (en) | 2001-01-25 |
AU768487B2 (en) | 2003-12-11 |
US6898588B2 (en) | 2005-05-24 |
JP2003505766A (ja) | 2003-02-12 |
EP1206746B1 (en) | 2016-09-07 |
EP1206746A1 (en) | 2002-05-22 |
KR20020031390A (ko) | 2002-05-01 |
ZA200200389B (en) | 2003-03-26 |
EP1206746A4 (en) | 2004-09-15 |
BR0012684A (pt) | 2002-04-16 |
IL147694A0 (en) | 2002-08-14 |
IL147694A (en) | 2007-02-11 |
HK1046177A1 (zh) | 2002-12-27 |
US20020010701A1 (en) | 2002-01-24 |
US6560593B1 (en) | 2003-05-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1361890A (zh) | 观察改变索引对查询优化方案的影响的数据库系统 | |
CN1768325A (zh) | 公开内容的抽象数据库抽象中的规则应用管理 | |
CN1198220C (zh) | 用于在单聚集过程中载入多数据集市的方法 | |
CN1759397A (zh) | 对数据的函数应用的结果进行结构化索引 | |
US7406477B2 (en) | Database system with methodology for automated determination and selection of optimal indexes | |
CN1725219A (zh) | 管理多用户存取预定义查询的系统与方法 | |
US7685104B2 (en) | Dynamic bitmap processing, identification and reusability | |
CN1573753A (zh) | 数据库对象脚本生成方法和系统 | |
CN1786955A (zh) | 用于管理相互相关的数据对象的方法和系统 | |
CN1761962A (zh) | 将非结构化数据实时聚集为结构化数据以便关系数据库引擎进行sql处理 | |
US7844623B2 (en) | Method to provide management of query output | |
US6886016B2 (en) | Method and system for supporting multivalue attributes in a database system | |
CN1705945A (zh) | 全局查询相关属性 | |
CN1647076A (zh) | 查询关系数据库的方法和设备 | |
CN1688977A (zh) | 智能使用用户数据以抢先阻止违反访问控制的查询的执行 | |
CN1846207A (zh) | 类型路径索引 | |
CN1556482A (zh) | 一种用于实现数据库多表查询的数据处理方法 | |
CN1882943A (zh) | 使用超单元的搜索处理的系统和方法 | |
CN1609859A (zh) | 搜索结果聚类的方法 | |
CN1315017A (zh) | 包含内部引用的两种版本数据表格之间的差别提取 | |
CN1653452A (zh) | 管理数据库系统中的表达式 | |
CN1967560A (zh) | 业务操作权限控制方法、关系数据库的生成方法 | |
CN1967538A (zh) | 存储状态指定健康相关情节数据的方法和系统 | |
CN1896994A (zh) | 用于显示零件信息的装置、系统和方法 | |
CN1228728C (zh) | 在web应用中产生定制商业报表的系统和方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |