|Publication number||US20050177557 A1|
|Application number||US 10/936,779|
|Publication date||Aug 11, 2005|
|Filing date||Sep 7, 2004|
|Priority date||Sep 6, 2003|
|Also published as||US7634456, US7664730, US7664778, US7739263, US7747606, US7805411, US8825629, US8983934, US20050097091, US20050119999, US20050120000, US20050120001, US20050125393, US20050125398, US20050125427, US20050125452, US20050138015, US20050187917|
|Publication number||10936779, 936779, US 2005/0177557 A1, US 2005/177557 A1, US 20050177557 A1, US 20050177557A1, US 2005177557 A1, US 2005177557A1, US-A1-20050177557, US-A1-2005177557, US2005/0177557A1, US2005/177557A1, US20050177557 A1, US20050177557A1, US2005177557 A1, US2005177557A1|
|Inventors||Mohamed Ziauddin, Benoit Dageville, Khaled Yagoub, Mohamed Zait|
|Original Assignee||Oracle International Corporation|
|Export Citation||BiBTeX, EndNote, RefMan|
|Patent Citations (99), Referenced by (47), Classifications (12), Legal Events (1)|
|External Links: USPTO, USPTO Assignment, Espacenet|
This application claims the benefit of U.S. Provisional Application No. 60/500,490, filed Sep. 6, 2003, which is incorporated herein by reference in its entirety. This application is related to co-pending applications “SQL TUNING SETS,” Attorney Docket No. OI7036272001; “AUTO-TUNING SQL STATEMENTS,” Attorney Docket No. OI7037042001; “SQL PROFILE,” Attorney Docket No. OI7037052001; “GLOBAL HINTS,” Attorney Docket No. OI7037062001; “SQL TUNING BASE,” Attorney Docket No. OI7037072001; “AUTOMATIC LEARNING OPTIMIZER,” Attorney Docket No. OI7037082001; “METHOD FOR INDEX TUNING OF A SQL STATEMENT, AND INDEX MERGING FOR A MULTI-STATEMENT SQL WORKLOAD, USING A COST-BASED RELATIONAL QUERY OPTIMIZER,” Attorney Docket No. OI7037102001; “SQL STRUCTURE ANALYZER,” Attorney Docket No. OI7037112001; “HIGH-LOAD SQL DRIVEN STATISTICS COLLECTION,” Attorney Docket No. OI7037122001; “AUTOMATIC SQL TUNING ADVISOR,” Attorney Docket No. OI7037132001, all of which are filed Sep. 7, 2004 and are incorporated herein by reference in their entirety.
This invention is related to the field of electronic database management.
The generation of optimal execution plans is critical to the performance of applications. For example, a single SQL statement with very poor performance can bring an application down to its knees. Sometimes a poorly performing SQL statement is due to user error, such as a blind query issued with without filtering conditions that would have reduced the amount of data processed. Other times the SQL statement is well formed, but the associated execution plan that is generated by the optimizer is suboptimal.
The suboptimal plan results in a run-away execution of the query. In other words, the plan, when executed, causes a SQL statement to run for a long time with enormous use of system resources. The problem of fixing the execution plan is usually addressed through a manual SQL tuning process. This process involves a tuning expert analyzing the SQL statement as well as its associated execution plan, then determining that the problem lies in the execution plan and not in the way the SQL statement is used (for example, an accidental use of a Cartesian join by not joining one of the tables to any of the other tables in the query). The manual SQL analysis process is a time-consuming task.
After this analysis, the expert performs a manual SQL tuning process to influence the optimizer to generate a good plan. This involves the tuning expert adding one or more tuning actions to the statement. These actions may be to identify and collect missing statistics and refresh stale statistics, change the value of some configuration parameter which directly affects the plan generation methodology of the optimizer, add one or more hints to the SQL statement which will give the directives to the optimizer in coming up with the right plan, create a new access path (such as an index) or modify an existing one to help avoid large scans of data. The manual SQL tuning process is also a time-consuming and complex task.
Many vendors have addressed the problem of run-away query execution by using a query governor control mechanism. The query governor can be either reactive or proactive. In a reactive mode, an execution-time threshold is set to abort any query whose cumulative execution time exceeds to threshold. In a proactive mode, an optimized-estimated-time threshold is set which is applied to the time optimizer has estimated for the query to run. Any query having an estimated run-time that exceeds the threshold is never run. With either of these methods, there is no attempt made to look at the root cause of the problem.
Some vendors have used the idea of setting execution-time thresholds at various places in the execution plan to detect a case of run-away query execution. When a threshold is crossed during query execution, the run is aborted and the query sent back to the optimizer for re-optimization. But this method suffers from two drawbacks: setting of the thresholds and monitoring them at runtime incurs overhead, which can be significant and undesirable especially for light-weight queries, and the method of aborting a run and re-optimizing a query can be quite disruptive, especially if the run is aborted right before it was about to complete.
A run-away query execution is automatically identified by a background process that periodically looks at each of the currently executing queries and compares the current execution time with the execution time estimated by the optimizer. Each query execution having a negative execution time difference can be automatically identified as a run-away query execution. The query execution plans that result in run-away executions can then be automatically tuned to produce more efficient execution plans.
The embodiments of the invention are described using the term “SQL”, however, the invention is not limited to just this exact database query language, and indeed may be used in conjunction with other database query languages and constructs.
The automatic performance monitoring of query executions identifies run-away query executions, then performs a re-optimization for the corresponding execution plans in a background process. The automatic prevention of run-away query executions may abort a current execution of a query run if the automatic process has produced an improved plan in the background, and further, has determined a benefit to aborting the current execution and performing an execution of the new plan.
This process can be implemented by an automatic SQL tuning optimizer and a SQL tuning base. In one embodiment, the run-away query execution is identified by a background process that periodically looks at each of the currently executing queries and compares the time spent in executing it so far (current-time) vs. the time the optimizer has estimated the execution to take (estimate-time). The top N queries with the largest negative difference (estimate-time−current-time) may be selected as run-away executions. An alternate method of identifying run-away query executions can be based on the current-time, that is, the process can select the top N queries with the longest current execution time as run-away query executions.
The automatic tuning optimizer (ATO), in a background process, then optimizes the execution plan for each query having a run-away execution by performing various analyses of the corresponding SQL statement, such as automatic identification and correction of inaccurate statistics, cardinality estimates, and cost estimates related to the statement, for example. If the execution plan built by the ATO is different from the one that is currently executing, the ATO can estimate how much more time the current plan execution is going to take to complete (remaining-time), as well as estimate how much time the new plan will take to execute (new-time). If the new-time is less than the remaining-time then the current plan run may be aborted and replaced with the new plan.
Since the ATO uses validated estimates of the cost, selectivity and cardinality, it can compute the total execution time of the new plan much more accurately. Similarly, it can regenerate the original run-away plan that is currently executing with validated estimates to compute its remaining execution time. Because the identification of run-away query executions, and the automatic generation of improved plans for the corresponding queries are performed by the ATO in the background, this automatic process is transparent to the database user.
Automatic Identification and Tuning of Run-Away Execution Plans
The automatic prevention of run-away query executions is performed by a process as shown in
Then, a new execution plan, along with a time estimate for executing the new plan, can be generated using the profile. Also, a revised estimate of the execution time of the run-away execution plan is generated using the profile, 150. If the new plan can be executed faster than the currently executing run-away plan, then the current plan is identified as a run-away plan. A second comparison of execution times is performed to determine whether to abort the current execution of the run-away plan and executing the new plan, or to allow the run-away plan to run to completion, 160. If the remaining execution time of the run-away plan is less than the execution time of the new plan, then the current plan is allowed to finish. If the execution time of the new plan is less than the remaining execution time of the currently executing run-away plan, then the run-away plan is aborted and the new plan is executed.
Automatic Prevention Architecture
An example of a system 200 for automatic prevention of run-away queries is shown in
A profiling process is performed by the automatic tuning optimizer to produce a set of tuning actions in generating an execution plan for a SQL statement. The profiling process verifies that statistics are not missing or stale, validates the estimates made by the query optimizer for intermediate results, and determines the correct optimizer settings. Tuning actions are created based on the results of the profiling process, to provide missing statistics for an object, validate intermediate results estimate, and select the best setting for optimizer parameters. Then, the Automatic Tuning Optimizer builds a SQL Profile for these tuning actions.
The statistics analysis verifies that statistics are not missing or stale. The query optimizer logs the types of statistics that are actually used during the plan generation process, in preparation for the verification process. For example, when a SQL statement contains an equality predicate, it logs the column number of distinct values, whereas for a range predicate it logs the minimum and maximum column values information. Once the logging of used statistics is complete, the query optimizer checks if each of these statistics is available on the associated query object (i.e. table, index or materialized view). If the statistic is available then it verifies whether the statistic is up-to-date. To verify the accuracy of a statistic, it samples data from the corresponding query object and compares it to the statistic. If a statistic is found to be missing, the query optimizer will generate auxiliary information to supply the missing statistic. If a statistic is available but stale, it will generate auxiliary information to compensate for staleness.
One feature of a cost-based query optimizer is its ability to derive the size of intermediate results. For example, the optimizer estimates the number of rows from applying table filters when deciding which join algorithm to pick. One factor that causes the optimizer to generate a sub-optimal plan is wrong estimate of intermediate result sizes. Wrong estimates can be caused by a combination of the following factors: The predicate (filter or join) is too complex to use standard statistical methods to derive the number of rows (e.g., the columns are compared thru a complex expression like (a*b)/c=10), The data distribution of the column used in the predicate is skewed, and there is no histogram, leading the optimizer to assume a uniform data distribution, or The data in column values is correlated but the optimizer is not aware of it, causing the optimizer to assume data independence. During SQL Profiling, the Automatic Tuning Optimizer validates the estimates made by the query optimizer, and compensates for missing information or wrong estimates. The validation process may involve running part of the query on a sample of the input data.
The Automatic Tuning Optimizer uses the past execution history of a SQL statement to determine the correct optimizer settings. For example, if the execution history shows that a SQL statement is only partially executed in the majority of times then the appropriate setting will be to optimize it for first n rows, where n is derived from the execution history. This constitutes a customized parameter setting for the SQL statement. (Note that past execution statistics are available in the Automatic Workload Repository (AWR) presented later).
The tuning information produced from the statistics, estimates, and settings analyses is stored in a SQL Profile. Once a SQL Profile is created, it is used in conjunction with the existing statistics by the compiler to produce a well-tuned plan for the corresponding SQL statement.
The automatic prevention of run-away queries can identify a plan that is a potential run-away plan. The process analyzes the SQL statement for the plan to determine if the potential run-away plan is caused by a bad plan. For example, the process can create a profile for the statement, use the profile to generate a new plan, and compare the new plan to the old plan to determine if the old plan is a run-away plan. The process can also use the profile to determine whether the run-away plan is close to finishing, and therefore should run to completion, or if the run-away plan should be aborted and the new plan should be executed in its place. Thus, the automatic prevention of run-away query executions eliminates the overhead incurred by conventional methods, such as monitoring of thresholds and aborting a run just before it finishes.
According to one embodiment of the invention, computer system 400 performs specific operations by processor 404 executing one or more sequences of one or more instructions contained in system memory 406. Such instructions may be read into system memory 406 from another computer readable medium, such as static storage device 408 or disk drive 410. In alternative embodiments, hard-wired circuitry may be used in place of or in combination with software instructions to implement the invention.
The term “computer readable medium” as used herein refers to any medium that participates in providing instructions to processor 404 for execution. Such a medium may take many forms, including but not limited to, non-volatile media, volatile media, and transmission media. Non-volatile media includes, for example, optical or magnetic disks, such as disk drive 410. Volatile media includes dynamic memory, such as system memory 406. Transmission media includes coaxial cables, copper wire, and fiber optics, including wires that comprise bus 402. Transmission media can also take the form of acoustic or light waves, such as those generated during radio wave and infrared data communications.
Common forms of computer readable media includes, for example, floppy disk, flexible disk, hard disk, magnetic tape, any other magnetic medium, CD-ROM, any other optical medium, punch cards, paper tape, any other physical medium with patterns of holes, RAM, PROM, EPROM, FLASH-EPROM, any other memory chip or cartridge, carrier wave, or any other medium from which a computer can read.
In an embodiment of the invention, execution of the sequences of instructions to practice the invention is performed by a single computer system 400. According to other embodiments of the invention, two or more computer systems 400 coupled by communication link 420 (e.g., LAN, PTSN, or wireless network) may perform the sequence of instructions to practice the invention in coordination with one another. Computer system 400 may transmit and receive messages, data, and instructions, including program, i.e., application code, through communication link 420 and communication interface 412. Received program code may be executed by processor 404 as it is received, and/or stored in disk drive 410, or other non-volatile storage for later execution.
In the foregoing specification, the invention has been described with reference to specific embodiments thereof. It will, however, be evident that various modifications and changes may be made thereto without departing from the broader spirit and scope of the invention. The specification and drawings are, accordingly, to be regarded in an illustrative rather than restrictive sense.
|Cited Patent||Filing date||Publication date||Applicant||Title|
|US5140685 *||Sep 16, 1991||Aug 18, 1992||Unisys Corporation||Record lock processing for multiprocessing data system with majority voting|
|US5260697 *||Nov 13, 1990||Nov 9, 1993||Wang Laboratories, Inc.||Computer with separate display plane and user interface processor|
|US5398183 *||Dec 10, 1990||Mar 14, 1995||Biomedical Systems Corporation||Holter ECG report generating system|
|US5408653 *||Apr 15, 1992||Apr 18, 1995||International Business Machines Corporation||Efficient data base access using a shared electronic store in a multi-system environment with shared disks|
|US5481712 *||Apr 6, 1993||Jan 2, 1996||Cognex Corporation||Method and apparatus for interactively generating a computer program for machine vision analysis of an object|
|US5504917 *||Jan 14, 1994||Apr 2, 1996||National Instruments Corporation||Method and apparatus for providing picture generation and control features in a graphical data flow environment|
|US5544355 *||Jun 14, 1993||Aug 6, 1996||Hewlett-Packard Company||Method and apparatus for query optimization in a relational database system having foreign functions|
|US5577240 *||Dec 7, 1994||Nov 19, 1996||Xerox Corporation||Identification of stable writes in weakly consistent replicated databases while providing access to all writes in such a database|
|US5634134 *||Jun 19, 1992||May 27, 1997||Hitachi, Ltd.||Method and apparatus for determining character and character mode for multi-lingual keyboard based on input characters|
|US5737601 *||Jan 16, 1997||Apr 7, 1998||Oracle Corporation||Method and apparatus for peer-to-peer data replication including handling exceptional occurrences|
|US5761660 *||Aug 1, 1996||Jun 2, 1998||International Business Machines Corporation||Computer program product and program storage device for database access using a shared electronic store in a multi-system environment having shared disks|
|US5765159 *||May 21, 1997||Jun 9, 1998||International Business Machines Corporation||System and method for generating an optimized set of relational queries for fetching data from a relational database management system in response to object queries received from an object oriented environment|
|US5781912 *||Dec 19, 1996||Jul 14, 1998||Oracle Corporation||Recoverable data replication between source site and destination site without distributed transactions|
|US5794229 *||Dec 11, 1995||Aug 11, 1998||Sybase, Inc.||Database system with methodology for storing a database table by vertically partitioning all columns of the table|
|US5806076 *||Oct 29, 1996||Sep 8, 1998||Oracle Corporation||Tracking dependencies between transactions in a database|
|US5860069 *||Apr 11, 1997||Jan 12, 1999||Bmc Software, Inc.||Method of efficient collection of SQL performance measures|
|US5870760 *||Dec 19, 1996||Feb 9, 1999||Oracle Corporation||Dequeuing using queue batch numbers|
|US5870761 *||Dec 19, 1996||Feb 9, 1999||Oracle Corporation||Parallel queue propagation|
|US5940826 *||Jan 7, 1997||Aug 17, 1999||Unisys Corporation||Dual XPCS for disaster recovery in multi-host computer complexes|
|US5991765 *||May 6, 1997||Nov 23, 1999||Birdstep Technology As||System and method for storing and manipulating data in an information handling system|
|US6052694 *||Mar 18, 1998||Apr 18, 2000||Electronic Data Systems Corporation||Method and apparatus for logging database performance characteristics|
|US6122640 *||Sep 22, 1998||Sep 19, 2000||Platinum Technology Ip, Inc.||Method and apparatus for reorganizing an active DBMS table|
|US6195653 *||Jan 13, 2000||Feb 27, 2001||International Business Machines Corporation||System and method for selectively preparing customized reports of query explain data|
|US6275818 *||Nov 5, 1998||Aug 14, 2001||International Business Machines Corporation||Cost based optimization of decision support queries using transient views|
|US6321218 *||Feb 24, 1999||Nov 20, 2001||Oracle Corporation||Automatically determining data that is best suited for index tuning|
|US6330552 *||Sep 28, 1998||Dec 11, 2001||Compaq||Database query cost model optimizer|
|US6349310 *||Jul 6, 1999||Feb 19, 2002||Compaq Computer Corporation||Database management system and method for accessing rows in a partitioned table|
|US6353818 *||Aug 19, 1998||Mar 5, 2002||Ncr Corporation||Plan-per-tuple optimizing of database queries with user-defined functions|
|US6356889 *||Sep 30, 1999||Mar 12, 2002||International Business Machines Corporation||Method for determining optimal database materializations using a query optimizer|
|US6374257 *||Jun 16, 1999||Apr 16, 2002||Oracle Corporation||Method and system for removing ambiguities in a shared database command|
|US6397207 *||Nov 2, 2000||May 28, 2002||International Business Machines Corp.||System and method for selectively preparing customized reports of query explain data|
|US6397227 *||Jul 6, 1999||May 28, 2002||Compaq Computer Corporation||Database management system and method for updating specified tuple fields upon transaction rollback|
|US6434545 *||Dec 16, 1998||Aug 13, 2002||Microsoft Corporation||Graphical query analyzer|
|US6434568 *||Aug 31, 1999||Aug 13, 2002||Accenture Llp||Information services patterns in a netcentric environment|
|US6442748 *||Aug 31, 1999||Aug 27, 2002||Accenture Llp||System, method and article of manufacture for a persistent state and persistent object separator in an information services patterns environment|
|US6460027 *||Sep 14, 1998||Oct 1, 2002||International Business Machines Corporation||Automatic recognition and rerouting of queries for optimal performance|
|US6460043 *||Feb 26, 1999||Oct 1, 2002||Microsoft Corporation||Method and apparatus for operating on data with a conceptual data manipulation language|
|US6493701 *||Jul 5, 2001||Dec 10, 2002||Sybase, Inc.||Database system with methodogy providing faster N-ary nested loop joins|
|US6496850 *||Aug 31, 1999||Dec 17, 2002||Accenture Llp||Clean-up of orphaned server contexts|
|US6513029 *||Aug 1, 2000||Jan 28, 2003||Microsoft Corporation||Interesting table-subset selection for database workload materialized view selection|
|US6529901 *||Feb 25, 2000||Mar 4, 2003||Microsoft Corporation||Automating statistics management for query optimizers|
|US6560606 *||May 4, 1999||May 6, 2003||Metratech||Method and apparatus for processing data with multiple processing modules and associated counters|
|US6615223 *||Feb 29, 2000||Sep 2, 2003||Oracle International Corporation||Method and system for data replication|
|US6701345 *||Apr 13, 2000||Mar 2, 2004||Accenture Llp||Providing a notification when a plurality of users are altering similar data in a health care solution environment|
|US6714943 *||Jan 31, 2001||Mar 30, 2004||Oracle International Corporation||Method and mechanism for tracking dependencies for referential integrity constrained tables|
|US6721724 *||Mar 31, 2000||Apr 13, 2004||Microsoft Corporation||Validating multiple execution plans for database queries|
|US6728719 *||Jan 31, 2001||Apr 27, 2004||Oracle International Corporation||Method and mechanism for dependency tracking for unique constraints|
|US6728720 *||Jun 13, 2000||Apr 27, 2004||Robert Stephen Gerard Lenzie||Identifying preferred indexes for databases|
|US6744449 *||Jun 11, 2002||Jun 1, 2004||Microsoft Corporation||Graphical query analyzer|
|US6804672 *||Jan 31, 2001||Oct 12, 2004||Oracle International Corporation||Method and mechanism for dependency tracking|
|US6816874 *||Sep 10, 1999||Nov 9, 2004||International Business Machines Corporation||Method, system, and program for accessing performance data|
|US6839713 *||Jul 12, 2001||Jan 4, 2005||Advanced Micro Devices, Inc.||System and software for database structure in semiconductor manufacturing and method thereof|
|US6865567 *||Jan 19, 2000||Mar 8, 2005||Basantkumar John Oommen||Method of generating attribute cardinality maps|
|US6910109 *||Sep 30, 1998||Jun 21, 2005||Intel Corporation||Tracking memory page state|
|US6912547 *||Jun 26, 2002||Jun 28, 2005||Microsoft Corporation||Compressing database workloads|
|US6934701 *||Jan 4, 2000||Aug 23, 2005||International Business Machines Corporation||Using a stored procedure to access index configuration data in a remote database management system|
|US6947927 *||Jul 9, 2002||Sep 20, 2005||Microsoft Corporation||Method and apparatus for exploiting statistics on query expressions for optimization|
|US6961931 *||Jan 10, 2001||Nov 1, 2005||International Business Machines Corporation||Dependency specification using target patterns|
|US6999958 *||Jun 7, 2002||Feb 14, 2006||International Business Machines Corporation||Runtime query optimization for dynamically selecting from multiple plans in a query based upon runtime-evaluated performance criterion|
|US7007013 *||Jul 26, 2002||Feb 28, 2006||International Business Machines Corporation||Fast computation of spatial queries in location-based services|
|US7031958 *||Feb 6, 2003||Apr 18, 2006||International Business Machines Corporation||Patterned based query optimization|
|US7047231 *||Oct 18, 2002||May 16, 2006||Software Engineering Gmbh||Getpage-workload based index optimizer|
|US20020120617 *||Jul 24, 2001||Aug 29, 2002||Fujitsu Limited||Database retrieving method, apparatus and storage medium thereof|
|US20020198867 *||Jun 6, 2001||Dec 26, 2002||International Business Machines Corporation||Learning from empirical results in query optimization|
|US20030018618 *||Mar 15, 2001||Jan 23, 2003||International Business Machines Corporation||Representation for data used in query optimization|
|US20030065648 *||Oct 3, 2001||Apr 3, 2003||International Business Machines Corporation||Reduce database monitor workload by employing predictive query threshold|
|US20030088541 *||Jun 21, 2002||May 8, 2003||Zilio Daniel C.||Method for recommending indexes and materialized views for a database workload|
|US20030093408 *||Oct 12, 2001||May 15, 2003||Brown Douglas P.||Index selection in a database system|
|US20030110153 *||Dec 11, 2001||Jun 12, 2003||Sprint Communications Company L.P.||Database performance monitoring method and tool|
|US20030115183 *||Dec 13, 2001||Jun 19, 2003||International Business Machines Corporation||Estimation and use of access plan statistics|
|US20030126143 *||May 31, 2002||Jul 3, 2003||Nicholas Roussopoulos||Dwarf cube architecture for reducing storage sizes of multidimensional data|
|US20030130985 *||Dec 17, 2002||Jul 10, 2003||Volker Driesen||Systems, methods and articles of manufacture for upgrading a database with a shadow system|
|US20030135478 *||May 31, 2002||Jul 17, 2003||Computer Associates Think, Inc.||Method and system for online reorganization of databases|
|US20030154216 *||Feb 14, 2002||Aug 14, 2003||International Business Machines Corporation||Database optimization apparatus and method|
|US20030177137 *||Jun 11, 2002||Sep 18, 2003||Microsoft Corporation||Graphical query analyzer|
|US20030182276 *||Feb 24, 2003||Sep 25, 2003||International Business Machines Corporation||Method, system, and program for performance tuning a database query|
|US20030187831 *||Mar 29, 2002||Oct 2, 2003||International Business Machines Corporation||Database query optimizer framework with dynamic strategy dispatch|
|US20030200537 *||Apr 18, 2002||Oct 23, 2003||International Business Machines Corporation||Apparatus and method for using database knowledge to optimize a computer program|
|US20030229621 *||Aug 29, 2002||Dec 11, 2003||International Business Machines Corporation||Apparatus and method for refreshing a database query|
|US20030229639 *||Jun 7, 2002||Dec 11, 2003||International Business Machines Corporation||Runtime query optimization for dynamically selecting from multiple plans in a query based upon runtime-evaluated performance criterion|
|US20040003004 *||Jun 28, 2002||Jan 1, 2004||Microsoft Corporation||Time-bound database tuning|
|US20040019587 *||Apr 16, 2003||Jan 29, 2004||You-Chin Fuh||Method and device for processing a query in a database management system|
|US20040034643 *||Aug 19, 2002||Feb 19, 2004||International Business Machines Corporation||System and method for real time statistics collection for use in the automatic management of a database system|
|US20040181521 *||Mar 24, 2004||Sep 16, 2004||Simmen David E.||Query optimization technique for obtaining improved cardinality estimates using statistics on pre-defined queries|
|US20040215626 *||Apr 9, 2003||Oct 28, 2004||International Business Machines Corporation||Method, system, and program for improving performance of database queries|
|US20050033734 *||Aug 5, 2003||Feb 10, 2005||International Business Machines Corporation||Performance prediction system with query mining|
|US20050097078 *||Oct 31, 2003||May 5, 2005||Lohman Guy M.||System, method, and computer program product for progressive query processing|
|US20050097091 *||Sep 7, 2004||May 5, 2005||Oracle International Corporation||SQL tuning base|
|US20050102305 *||Dec 8, 2004||May 12, 2005||Microsoft Corporation||Compressing database workloads|
|US20050119999 *||Sep 7, 2004||Jun 2, 2005||Oracle International Corporation||Automatic learning optimizer|
|US20050120000 *||Sep 7, 2004||Jun 2, 2005||Oracle International Corporation||Auto-tuning SQL statements|
|US20050120001 *||Sep 7, 2004||Jun 2, 2005||Oracle International Corporation||SQL structure analyzer|
|US20050125393 *||Sep 7, 2004||Jun 9, 2005||Oracle International Corporation||SQL tuning sets|
|US20050125398 *||Sep 7, 2004||Jun 9, 2005||Oracle International Corporation||Global hints|
|US20050125427 *||Sep 7, 2004||Jun 9, 2005||Oracle International Corporation||Automatic SQL tuning advisor|
|US20050125452 *||Sep 7, 2004||Jun 9, 2005||Oracle International Corporation||SQL profile|
|US20050138015 *||Sep 7, 2004||Jun 23, 2005||Oracle International Corporation||High load SQL driven statistics collection|
|US20050187917 *||Sep 7, 2004||Aug 25, 2005||Oracle International Corporation||Method for index tuning of a SQL statement, and index merging for a multi-statement SQL workload, using a cost-based relational query optimizer|
|US20050251523 *||May 7, 2004||Nov 10, 2005||Oracle International Corporation||Minimizing downtime for application changes in database systems|
|Citing Patent||Filing date||Publication date||Applicant||Title|
|US7340448 *||Nov 13, 2003||Mar 4, 2008||International Business Machines Corporation||Method, apparatus, and computer program product for implementing enhanced query governor functions|
|US7644063||Aug 17, 2007||Jan 5, 2010||International Business Machines Corporation||Apparatus, system, and method for ensuring query execution plan stability in a database management system|
|US7664730||Sep 7, 2004||Feb 16, 2010||Oracle International Corporation||Method and system for implementing a SQL profile|
|US7664778||Sep 7, 2004||Feb 16, 2010||Oracle International Corporation||SQL tuning sets|
|US7739263||Sep 7, 2004||Jun 15, 2010||Oracle International Corporation||Global hints|
|US7757226||Mar 17, 2004||Jul 13, 2010||Oracle International Corporation||Method and mechanism for performing a rolling upgrade of distributed computer software|
|US7774357||Nov 26, 2007||Aug 10, 2010||International Business Machines Corporation||Method, apparatus, and computer program product for implementing enhanced query governor functions|
|US7788285||May 14, 2004||Aug 31, 2010||Oracle International Corporation||Finer grain dependency tracking for database objects|
|US7805411||Sep 7, 2004||Sep 28, 2010||Oracle International Corporation||Auto-tuning SQL statements|
|US8060495||Oct 21, 2008||Nov 15, 2011||International Business Machines Corporation||Query execution plan efficiency in a database management system|
|US8122010 *||Oct 31, 2007||Feb 21, 2012||International Business Machines Corporation||Dynamic query optimization|
|US8285707 *||Nov 8, 2006||Oct 9, 2012||International Business Machines Corporation||Method of querying relational database management systems|
|US8335767||Aug 8, 2008||Dec 18, 2012||Oracle International Corporation||Maintaining and utilizing SQL execution plan histories|
|US8341178 *||Aug 8, 2008||Dec 25, 2012||Oracle International Corporation||SQL performance analyzer|
|US8346761 *||Aug 5, 2004||Jan 1, 2013||International Business Machines Corporation||Method and system for data mining for automatic query optimization|
|US8417690||May 15, 2009||Apr 9, 2013||International Business Machines Corporation||Automatically avoiding unconstrained cartesian product joins|
|US8566307||Apr 30, 2010||Oct 22, 2013||International Business Machines Corporation||Database query governor with tailored thresholds|
|US8577871||Mar 31, 2008||Nov 5, 2013||Oracle International Corporation||Method and mechanism for out-of-the-box real-time SQL monitoring|
|US8600977||Aug 8, 2008||Dec 3, 2013||Oracle International Corporation||Automatic recognition and capture of SQL execution plans|
|US8700608||Aug 8, 2008||Apr 15, 2014||Oracle International Corporation||SQL execution plan verification|
|US8775412 *||Jan 8, 2004||Jul 8, 2014||International Business Machines Corporation||Method and system for a self-healing query access plan|
|US8788532 *||Jun 20, 2012||Jul 22, 2014||Salesforce.Com, Inc.||Firewalls for securing customer data in a multi-tenant environment|
|US8799320 *||Jun 20, 2012||Aug 5, 2014||Salesforce.Com, Inc.||Firewalls for securing customer data in a multi-tenant environment|
|US8805852||Mar 2, 2009||Aug 12, 2014||International Business Machines Corporation||Automatic query execution plan management and performance stabilization for workloads|
|US8825629||Sep 7, 2004||Sep 2, 2014||Oracle International Corporation||Method for index tuning of a SQL statement, and index merging for a multi-statement SQL workload, using a cost-based relational query optimizer|
|US8849797||Feb 20, 2013||Sep 30, 2014||International Business Machines Corporation||Database query governor with tailored thresholds|
|US8903801 *||Aug 8, 2008||Dec 2, 2014||Oracle International Corporation||Fully automated SQL tuning|
|US8903805||Aug 20, 2010||Dec 2, 2014||Oracle International Corporation||Method and system for performing query optimization using a hybrid execution plan|
|US8938644 *||Dec 3, 2010||Jan 20, 2015||Teradata Us, Inc.||Query execution plan revision for error recovery|
|US8983934||Sep 7, 2004||Mar 17, 2015||Oracle International Corporation||SQL tuning base|
|US20050108188 *||Nov 13, 2003||May 19, 2005||International Business Machines Corporation||Method, apparatus, and computer program product for implementing enhanced query governor functions|
|US20050119999 *||Sep 7, 2004||Jun 2, 2005||Oracle International Corporation||Automatic learning optimizer|
|US20050154740 *||Jan 8, 2004||Jul 14, 2005||International Business Machines Corporation||Method and system for a self-healing query access plan|
|US20050192937 *||Feb 26, 2004||Sep 1, 2005||International Business Machines Corporation||Dynamic query optimization|
|US20050210461 *||Mar 17, 2004||Sep 22, 2005||Oracle International Corporation||Method and mechanism for performing a rolling upgrade of distributed computer software|
|US20060031189 *||Aug 5, 2004||Feb 9, 2006||International Business Machines Corporation||Method and system for data mining for automatic query optimization|
|US20080065590 *||Sep 7, 2006||Mar 13, 2008||Microsoft Corporation||Lightweight query processing over in-memory data structures|
|US20080109424 *||Nov 8, 2006||May 8, 2008||Paul Reuben Day||Method of Querying Relational Database Management Systems|
|US20090077016 *||Aug 8, 2008||Mar 19, 2009||Oracle International Corporation||Fully automated sql tuning|
|US20090077017 *||Aug 8, 2008||Mar 19, 2009||Oracle International Corporation||Sql performance analyzer|
|US20090094191 *||Oct 8, 2007||Apr 9, 2009||Microsoft Corporation||Exploiting execution feedback for optimizing choice of access methods|
|US20120144234 *||Jun 7, 2012||Teradata Us, Inc.||Automatic error recovery mechanism for a database system|
|US20120173498 *||Oct 4, 2011||Jul 5, 2012||International Business Machines Corporation||Verifying Correctness of a Database System|
|US20120215764 *||Feb 17, 2011||Aug 23, 2012||International Business Machines Corporation||Energy usage and performance query governor|
|US20120260341 *||Oct 11, 2012||Salesforce.Com, Inc.||Firewalls for securing customer data in a multi-tenant environment|
|US20130262436 *||Mar 30, 2012||Oct 3, 2013||International Business Machines Corporation||Obtaining partial results from a database query|
|US20140250103 *||May 15, 2014||Sep 4, 2014||International Business Machines Corporation||Obtaining partial results from a database query|
|U.S. Classification||1/1, 707/999.003|
|International Classification||G06F17/00, G06F17/30, G06F7/00|
|Cooperative Classification||G06F17/30306, Y10S707/99944, G06F17/30474, Y10S707/99932, Y10S707/99934|
|European Classification||G06F17/30S4P3T7, G06F17/30S1T|
|Feb 1, 2005||AS||Assignment|
Owner name: ORACLE INTERNATIONAL CORPORATION, CALIFORNIA
Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:ZIAUDDIN, MOHAMED;DAGEVILLE, BENOIT;YAGOUB, KHALED;AND OTHERS;REEL/FRAME:015644/0930;SIGNING DATES FROM 20041227 TO 20050110