IP Library › Granted Patent US 8,818,989
Granted Patent B2
US 8,818,989 · App. 12/956,745 · Granted Aug 26, 2014

Memory usage query governor

Inventors: Eric L. Barsness (Pine Island, MN); Paul S. Nelsestuen (Oronoco, MN); John M. Santosuosso (Rochester, MN)
Assignee: International Business Machines Corporation
View Patent ↗
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 8,818,989
App. No.
12/956,745
Filed
Nov 30, 2010
Granted
Aug 26, 2014
Kind
B2
Examiner
LU, KUEN S
Art Unit
2165
USPC
707/720
Abstract

Techniques for managing query execution based on memory usage using memory compression. Embodiments may receive a query from a requesting entity and estimate an amount of memory required to execute the query. Upon determining that executing the query would consume an impermissible amount of memory, embodiments may optimize the query by adjusting an amount of memory compression used in executing the query. The optimized query may then be executed to produce a set of query results, which may then be returned to the requesting entity.

Claims (104)

1. A computer-implemented method for managing query execution, comprising:

calculating an estimated memory usage value for executing a query, based at least in part on historical memory usage data relating to previously processed queries, wherein the estimated memory usage value approximates a total amount of memory that will be used when the query is executed, and wherein the estimated memory usage value is calculated before the received query is executed;

determining whether executing the query would satisfy a memory consumption condition by comparing the estimated memory usage value with a predetermined threshold amount of memory; and

upon determining that executing the query would not satisfy the memory consumption condition, and by operation of one or more computer processors:

determining one or more optimizations for the query adapted to reduce an amount of memory used when the query is executed, such that the memory consumption condition will be satisfied when the query is executed;

optimizing the query based on the determined one or more optimizations; and

executing the optimized query to produce a first set of query results.

2. The computer-implemented method of claim 1 , wherein the query was received from a requesting entity, and further comprising:

upon executing the optimized query, returning the first set of query results to the requesting entity; and

upon determining that executing the query would satisfy the memory consumption condition:

executing the query to produce a second set of query results; and

returning the second set of query results to the requesting entity.

3. The computer-implemented method of claim 1 , wherein optimizing the query further comprises:

determining a first rate of compression for use in optimizing the query; and

compressing at least a portion of memory used in executing the query at the first rate of compression, such that the amount of memory used in executing the query is reduced and such that the memory consumption condition is satisfied.

4. The computer-implemented method of claim 3 , wherein optimizing the query further comprises:

determining whether memory compression is enabled for executing the query; and

upon determining memory compression is disabled, enabling memory compression for at least the execution of the received query.

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

while the query is executing, determining that the memory consumption condition is no longer satisfied when an actual amount of memory used in executing the query exceeds the predetermined threshold amount of memory; and

increasing the rate of compression from the first compression rate to a second compression rate, wherein the second compression rate specifies that data associated with executing the query should be further compressed relative to the first compression rate.

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

determining a priority value associated with the received query that describes how much delay is acceptable in executing the query, and

wherein determining whether executing the query would satisfy the memory consumption condition is further based on the determined priority value associated with the received query.

7. The computer-implemented method of claim 6 , wherein determining whether executing the query would satisfy the memory consumption condition is further based on a relative priority between the predetermined threshold amount of memory and the determined priority value associated with the received query.

8. The computer-implemented method of claim 1 , wherein optimizing the query further comprises:

determining a plurality of query execution plans for executing the received query;

calculating an estimated memory usage value for each query execution plan in the plurality of query execution plans; and

selecting a particular query execution plan for use in executing the query, based on the estimated memory usage value for the particular query execution plan.

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

executing the query;

monitoring the execution of the optimized query to determine an actual memory usage value; and

upon determining the actual memory usage value exceeds the predetermined threshold amount of memory, compressing an amount of memory used in executing the query at a first rate of compression in order to reduce the amount of memory used in executing the query and such that the memory consumption condition is satisfied.

10. A computer program product for managing query execution, comprising:

a computer-readable memory having computer readable program code embodied therewith, the computer readable program code comprising:

computer readable program code to calculate an estimated memory usage value for executing a query, based at least in part on historical memory usage data relating to previously processed queries, wherein the estimated memory usage value approximates a total amount of memory that will be used when the query is executed, and wherein the estimated memory usage value is calculated before the received query is executed;

computer readable program code to determine whether executing the query would satisfy a memory consumption condition by comparing the estimated memory usage value with a predetermined threshold amount of memory; and

computer readable program code to, upon determining that executing the query would not satisfy the memory consumption condition:

determine one or more optimizations for the query adapted to reduce an amount of memory used when the query is executed, such that the memory consumption condition will be satisfied when the query is executed;

optimize the query to reduce an amount of memory used in executing the query; and

execute the optimized query to produce a first set of query results.

11. The computer program product of claim 10 , wherein the query was received from a requesting entity, and further comprising:

computer readable program code to, upon executing the optimized query, return the first set of query results to the requesting entity; and

computer readable program code to, upon determining that executing the query would satisfy the memory consumption condition:

execute the query to produce a second set of query results; and

return the second set of query results to the requesting entity.

12. The computer program product of claim 10 , wherein the computer readable program code to optimize the query further comprises:

computer readable program code to determine a first rate of compression for use in optimizing the query; and

computer readable program code to compress at least a portion of memory used in executing the query at the first rate of compression, such that the amount of memory used in executing the query is reduced and such that the memory consumption condition is satisfied.

13. The computer program product of claim 12 , wherein the computer readable program code to optimize the query further comprises:

computer readable program code to determine whether memory compression is enabled for executing the query; and

computer readable program code to, upon determining memory compression is disabled, enable memory compression for at least the execution of the received query.

14. The computer program product of claim 12 , further comprising:

computer readable program code to, while the query is executing, determine that the memory consumption condition is no longer satisfied when an actual amount of memory used in executing the query exceeds the predetermined threshold amount of memory; and

computer readable program code to increase the rate of compression from the first compression rate to a second compression rate, wherein the second compression rate specifies that data associated with executing the query should be further compressed relative to the first compression rate.

15. The computer program product of claim 10 , further comprising:

computer readable program code to determine a priority value associated with the received query that describes how much delay is acceptable in executing the query, and

wherein the computer readable program code to determine whether executing the query would satisfy the memory consumption condition is further based on:

the determined priority value associated with the received query; and

a relative priority between the predetermined threshold amount of memory and the determined priority value associated with the received query.

16. The computer program product of claim 10 , wherein the computer readable program code to optimize the query further comprises:

computer readable program code to determine a plurality of query execution plans for executing the received query;

computer readable program code to calculate an estimated memory usage value for each query execution plan in the plurality of query execution plans; and

computer readable program code to select a particular query execution plan for use in executing the query, based on the estimated memory usage value for the particular query execution plan.

17. The computer program product of claim 10 , further comprising:

computer readable program code to execute the query;

computer readable program code to monitor the execution of the optimized query to determine an actual memory usage value; and

computer readable program code to, upon determining the actual memory usage value exceeds the predetermined threshold amount of memory, compress an amount of memory used in executing the query at a first rate of compression in order to reduce the amount of memory used in executing the query and such that the memory consumption condition is satisfied.

18. A system, comprising:

a computer processor; and

a memory containing a program that, when executed on the computer processor, performs an operation for managing query execution, comprising:

calculating an estimated memory usage value for executing a query, based at least in part on historical memory usage data relating to previously processed queries, wherein the estimated memory usage value approximates a total amount of memory that will be used when the query is executed, and wherein the estimated memory usage value is calculated before the received query is executed;

determining whether executing the query would satisfy a memory consumption condition by comparing the estimated memory usage value with a predetermined threshold amount of memory; and

upon determining that executing the query would not satisfy the memory consumption condition, and by operation of one or more computer processors:

determining one or more optimizations for the query adapted to reduce an amount of memory used when the query is executed, such that the memory consumption condition will be satisfied when the query is executed;

optimizing the query based on the determined one or more optimizations; and

executing the optimized query to produce a first set of query results.

19. The system of claim 18 , wherein the query was received from a requesting entity, and further comprising:

upon executing the optimized query, returning the first set of query results to the requesting entity; and

upon determining that executing the query would satisfy the memory consumption condition:

executing the query to produce a second set of query results; and

returning the second set of query results to the requesting entity.

20. The system of claim 19 , wherein optimizing the query further comprises:

determining a first rate of compression for use in optimizing the query; and

compressing at least a portion of memory used in executing the query at the first rate of compression, such that the amount of memory used in executing the query is reduced and such that the memory consumption condition is satisfied.

21. The system of claim 20 , wherein optimizing the query further comprises:

determining whether memory compression is enabled for executing the query; and

upon determining memory compression is disabled, enabling memory compression for at least the execution of the received query.

22. The system of claim 20 , the operation further comprising:

while the query is executing, determining that the memory consumption condition is no longer satisfied when an actual amount of memory used in executing the query exceeds the predetermined threshold amount of memory; and

increasing the rate of compression from the first compression rate to a second compression rate, wherein the second compression rate specifies that data associated with executing the query should be further compressed relative to the first compression rate.

23. The system of claim 18 , the operation further comprising:

determining a priority value associated with the received query that describes how much delay is acceptable in executing the query, and

wherein determining whether executing the query would satisfy the memory consumption condition is further based on:

the determined priority value associated with the received query; and

a relative priority between the predetermined threshold amount of memory and the determined priority value associated with the received query.

24. The system of claim 18 , wherein optimizing the query further comprises:

determining a plurality of query execution plans for executing the received query;

calculating an estimated memory usage value for each query execution plan in the plurality of query execution plans; and

selecting a particular query execution plan for use in executing the query, based on the estimated memory usage value for the particular query execution plan.

25. The system of claim 18 , the operation further comprising:

executing the query;

monitoring the execution of the optimized query to determine an actual memory usage value; and

upon determining the actual memory usage value exceeds the predetermined threshold amount of memory, compressing an amount of memory used in executing the query at a first rate of compression in order to reduce the amount of memory used in executing the query and such that the memory consumption condition is satisfied.

Assignments (2)
CORRECTIVE ASSIGNMENT TO CORRECT THE APPLICATION NUMBER PREVIOUSLY RECORDED ON REEL 025401 FRAME 0836. ASSIGNOR(S) HEREBY CONFIRMS THE APPLICATION NUMBER 11956745 SHOULD BE APPLICATION NUMBER 12956745. Recorded Oct 19, 2011
From: BARSNESS, ERIC L.; NELSESTUEN, PAUL S.; SANTOSUOSSO, JOHN M.
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 027088/0142 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 30, 2010
From: BARSNESS, ERIC L.; NELSESTUEN, PAUL S.; SANTOSUOSSO, JOHN M.
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 025401/0836 →
Continuity (1)
Related Publication 20120136850A1 · May 31, 2012