IP Library Patent Application 14640706
Patent Application
App. No. 14/640,706

DISCOVERY OF POTENTIAL PROBLEMATIC EXECUTION PLANS IN A BIND-SENSITIVE QUERY STATEMENT

Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US None
App. No.
14/640,706
Abstract

Aspects of the present invention provide systems and methods that can help generate potential execution plans for a query statement that have one or more bind variable, whether the one or more bind variables were originally in the query statement or replaced one or more literals in the query. Embodiments of the present invention also include systems and methods for testing performance of one or more of the potential execution plans before they emerge in the production environment.

Claims (77)

1 . A computer-implemented method for discovery of one or more execution plans for a bind-sensitive query statement comprising:

for each bind variable from a set of one or more bind variables identified in a bind-sensitive query statement, preparing how values are to be generated for the bind variable;

calculating a quota for evaluating the bind-sensitive query statement; and

performing the following steps while the quota is not exhausted:

generating a new set of bind values for at least one bind variable from the set of one or more bind variables;

evaluating whether a new execution plan is generated by a database system by the new set of bind values; and

responsive to a new execution plan being generated, storing the new execution plan with the set of bind values in a memory.

2 . The computer-implemented method of claim 1 further comprising:

flushing any cached execution plans from a cache memory of the database system in each iteration of the quota evaluation.

3 . The computer-implemented method of claim 1 further comprising:

responsive to the quota being exhausted, benchmarking at least some of the stored new execution plans.

4 . The computer-implemented method of claim 3 further comprising:

responsive to identifying a new execution plan that has an acceptable performance, selecting the new execution plan.

5 . The computer-implemented method of claim 1 wherein the step of preparing how values are to be generated for the bind variable comprises:

gathering information about how values may be generated for a bind variable by evaluating which of a set of methods may be used to obtain values for the bind variable.

6 . The computer-implemented method of claim 5 wherein the set of methods comprises:

using one or more database statistics related to at least some of the data associated with the bind variable;

sampling of data associated with the bind variable; and

using data associated with the bind variable and associated with one or more user-specified input parameters.

7 . The computer-implemented method of claim 6 wherein the step of using one or more database statistics related to at least some of the data associated with the bind variable comprising:

identifying a relevant portion of a database that is associated with a bind variable;

ascertain whether statistics are available for the relevant portion of the database; and

using the statistics to generate a value or values for the bind variable.

8 . The computer-implemented method of claim 1 wherein the step of generating a new set of bind values for at least one bind variable from the set of one or more bind variables comprises:

using, for each bind variable, one or more of methods from a set of methods that have been evaluated as being appropriate for the bind variable.

9 . A system for discovering an execution plan for a bind-sensitive query statement, the system comprising:

one or more processors;

one or more memory components communicatively coupled to the processor;

an interface communicatively coupled to the processor that facilitates accessing one or more databases; and

a bind-sensitive query execution plan discovery subsystem that comprises:

a bind value candidates preparer module that, for each bind variables from a set of one or more bind variables identified in a bind variable query statement, gathers information about how a value or values may be generated for the bind variable by evaluating which of a set of methods may be used to obtain a value or values for the bind variable;

a bind value generation module that:

receives the bind variable query statement;

receives information from the bind value candidates preparer module comprising one or more methods for generating a bind value or values for one or more bind variables in the bind variable query statement; and

generates, for each iteration in a set of iterations, a new set of bind values for at least one bind variable from the set of one or more bind variables for use in generating an execution plan using the new set of bind values:

and

a unique execution plan detection module that, for each iteration from the set of iterations:

receives the generated execution plans;

determines whether the generated execution plan is unique; and

responsive to the generated execution plan being unique, stores in memory the generated execution plan to a unique execution plan datastore along with the new set of bind values associated with the generated execution plan.

10 . The system of claim 9 wherein the bind-sensitive query execution plan discovery subsystem further comprises:

an execution plan benchmark module that benchmarks at least some of the generated execution plans in the unique execution plan datastore.

11 . The system of claim 9 wherein the bind-sensitive query execution plan discovery subsystem is further configured to perform the step of:

flushing any cached execution plans from a cache memory.

12 . The system of claim 9 wherein the bind-sensitive query execution plan discovery subsystem is further configured to perform the step of:

responsive to identifying an execution plan from the generated execution plans that has an acceptable performance, selecting the new execution plan for use with the bind variable query statement.

13 . The system of claim 9 wherein the set of methods comprises:

using one or more database statistics related to at least some of the data associated with the bind variable;

sampling of data associated with the bind variable; and

using data associated with the bind variable and associated with one or more user-specified input parameters.

14 . The system of claim 13 wherein the step of using one or more database statistics related to at least some of the data associated with the bind variable comprising:

identifying a relevant portion of a database that are associated with a bind variable;

ascertain whether statistics are available for the relevant portion of the database; and

using the statistics to generate a value or values for the bind variable.

15 . The system of claim 13 wherein the bind-sensitive query execution plan discovery subsystem further comprises:

a user interface module that receives the one or more user-specified input parameters from a user.

16 . A non-transitory computer readable medium or media comprising one or more sequences of instructions which, when executed by one or more processors, causes steps for discovery of one or more execution plans for a bind-sensitive query statement comprising:

for each bind variable from a set of one or more bind variables identified in a bind-sensitive query statement, preparing how values are to be generated for the bind variable;

calculating a quota for evaluating the bind-sensitive query statement; and

performing the following steps while the quota is not exhausted:

generating a new set of bind values for at least one bind variable from the set of one or more bind variables;

evaluating whether a new execution plan is generated by a database system by the new set of bind values; and

responsive to a new execution plan being generated, storing the new execution plan with the set of bind values in a memory.

17 . The non-transitory computer readable medium or media of claim 16 further comprising:

flushing cached execution plans from a cache memory of the database system in each iteration of the quota evaluation.

18 . The non-transitory computer readable medium or media of claim 16 further comprising:

responsive to the quota being exhausted, benchmarking at least some of the stored new execution plans; and

responsive to identifying a new execution plan that has an acceptable benchmark performance, selecting the new execution plan.

19 . The non-transitory computer readable medium or media of claim 16 wherein the step of preparing how values are to be generated for the bind variable comprises:

gathering information about how values may be generated for a bind variable by evaluating which of a set of methods may be used to obtain values for the bind variable, the set of methods comprising:

using one or more database statistics related to at least some of the data associated with the bind variable;

sampling of data associated with the bind variable; and

using data associated with the bind variable and associated with one or more user-specified input parameters.

20 . The non-transitory computer readable medium or media of claim 19 wherein the step of using one or more database statistics related to at least some of the data associated with the bind variable comprising:

identifying a relevant portion of a database that are associated with a bind variable;

ascertain whether statistics are available for the relevant portion of the database; and

using the statistics to generate a value or values for the bind variable.

Assignments (21)
RELEASE OF FIRST LIEN SECURITY INTEREST IN PATENTS Recorded Feb 2, 2022
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
To: QUEST SOFTWARE INC.
Reel/Frame 059105/0479 →
RELEASE OF SECOND LIEN SECURITY INTEREST IN PATENTS Recorded Feb 2, 2022
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
To: QUEST SOFTWARE INC.
Reel/Frame 059096/0683 →
FIRST LIEN PATENT SECURITY AGREEMENT Recorded Jun 7, 2018
From: QUEST SOFTWARE INC.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 046327/0347 →
SECOND LIEN PATENT SECURITY AGREEMENT Recorded Jun 7, 2018
From: QUEST SOFTWARE INC.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 046327/0486 →
RELEASE OF FIRST LIEN SECURITY INTEREST IN PATENTS RECORDED AT R/F 040581/0850 Recorded May 22, 2018
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
To: QUEST SOFTWARE INC. (F/K/A DELL SOFTWARE INC.); AVENTAIL LLC
Reel/Frame 046211/0735 →
CHANGE OF NAME Recorded Mar 21, 2018
From: DELL SOFTWARE INC.
To: QUEST SOFTWARE INC.
Reel/Frame 045660/0755 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 16, 2018
From: DELL PRODUCTS L.P.
To: DELL SOFTWARE INC.
Reel/Frame 045355/0817 →
CORRECTIVE ASSIGNMENT TO CORRECT THE ASSIGNEE PREVIOUSLY RECORDED AT REEL: 040587 FRAME: 0624. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Nov 28, 2017
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: QUEST SOFTWARE INC. (F/K/A DELL SOFTWARE INC.); AVENTAIL LLC
Reel/Frame 044811/0598 →
SECOND LIEN PATENT SECURITY AGREEMENT Recorded Nov 10, 2016
From: DELL SOFTWARE INC.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 040587/0624 →
FIRST LIEN PATENT SECURITY AGREEMENT Recorded Nov 9, 2016
From: DELL SOFTWARE INC.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 040581/0850 →
RELEASE OF SECURITY INTEREST Recorded Oct 31, 2016
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: AVENTAIL LLC; DELL PRODUCTS, L.P.; DELL SOFTWARE INC.
Reel/Frame 040521/0467 →
RELEASE OF SECURITY INTEREST IN CERTAIN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (040039/0642) Recorded Oct 31, 2016
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
To: AVENTAIL LLC; DELL PRODUCTS L.P.; DELL SOFTWARE INC.
Reel/Frame 040521/0016 →
RELEASE OF REEL 035860 FRAME 0878 (NOTE) Recorded Sep 14, 2016
From: BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
To: DELL SOFTWARE INC.; DELL PRODUCTS L.P.; COMPELLENT TECHNOLOGIES, INC.; SECUREWORKS, INC.; STATSOFT, INC.
Reel/Frame 040027/0158 →
RELEASE OF REEL 035860 FRAME 0797 (TL) Recorded Sep 14, 2016
From: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
To: DELL SOFTWARE INC.; DELL PRODUCTS L.P.; COMPELLENT TECHNOLOGIES, INC.; SECUREWORKS, INC.; STATSOFT, INC.
Reel/Frame 040028/0551 →
SECURITY AGREEMENT Recorded Sep 14, 2016
From: AVENTAIL LLC; DELL PRODUCTS, L.P.; DELL SOFTWARE INC.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 040030/0187 →
SECURITY AGREEMENT Recorded Sep 14, 2016
From: AVENTAIL LLC; DELL PRODUCTS L.P.; DELL SOFTWARE INC.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 040039/0642 →
RELEASE OF REEL 035858 FRAME 0612 (ABL) Recorded Sep 13, 2016
From: BANK OF AMERICA, N.A., AS ADMINISTRATIVE AGENT
To: DELL SOFTWARE INC.; DELL PRODUCTS L.P.; COMPELLENT TECHNOLOGIES, INC.; SECUREWORKS, INC.; STATSOFT, INC.
Reel/Frame 040017/0067 →
SUPPLEMENT TO PATENT SECURITY AGREEMENT (NOTES) Recorded Jun 9, 2015
From: DELL PRODUCTS L.P.; DELL SOFTWARE INC.; COMPELLENT TECHNOLOGIES, INC; SECUREWORKS, INC.; STATSOFT, INC.
To: BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 035860/0878 →
SUPPLEMENT TO PATENT SECURITY AGREEMENT (TERM LOAN) Recorded Jun 9, 2015
From: DELL PRODUCTS L.P.; DELL SOFTWARE INC.; COMPELLENT TECHNOLOGIES, INC.; SECUREWORKS, INC.; STATSOFT, INC.
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 035860/0797 →
SUPPLEMENT TO PATENT SECURITY AGREEMENT (ABL) Recorded Jun 9, 2015
From: DELL PRODUCTS L.P.; DELL SOFTWARE INC.; COMPELLENT TECHNOLOGIES, INC.; SECUREWORKS, INC.; STATSOFT, INC.
To: BANK OF AMERICA, N.A., AS ADMINISTRATIVE AGENT
Reel/Frame 035858/0612 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 6, 2015
From: TO, WAI YIP; LUK, KA WING ELLIS
To: DELL PRODUCTS L.P.
Reel/Frame 035105/0995 →