IP Library Granted Patent US 11,544,263
Granted Patent B2
US 11,544,263 · App. 17/657,468 · Granted Jan 3, 2023

Dynamic query execution using estimated execution time

Inventors: Sangyong Hwang (Sammamish, WA); Sourav Sikdar (Houston, TX); Li Yan (Redmond, WA)
Assignee: Snowflake Inc.
G06F16/24542G06F11/3419G06F16/24549G06F16/24565G06F2201/80G06F2201/81
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 11,544,263
App. No.
17/657,468
Granted
Jan 3, 2023
Kind
B2
Abstract

The subject technology receives a first query plan corresponding to a first query, the first query plan comprising a new query plan different than a previous query plan for the first query. The subject technology determines a value indicating an estimated improvement in execution time of the first query plan in comparison to a previous execution time of the previous query plan. The subject technology, in response to determining that the value is greater than a threshold value, attempting to execute the first query using the first query plan, the attempting comprising determining that a second query plan selected among a plurality of query plans has a second estimated execution time that is less than an estimated execution time of the first query plan, and executing the first query at a subsequent time using the second query plan.

Claims (89)

1. A system comprising:

at least one hardware processor; and

a memory storing instructions that cause the at least one hardware processor to perform operations comprising:

receiving a first query plan corresponding to a first query, the first query plan comprising a new query plan different than a previous query plan for the first query, the receiving the first query plan comprising:

tracking a plurality of queries corresponding to a plurality of query plans based on join operations contained in each of the plurality of queries and a previous time of executing each query from the plurality of query plans, the previous query plan for the first query being included in the plurality of query plans, the join operations contained in each of the plurality of queries resulting in a table size larger than a particular number of rows and the previous time of executing each query falling within a particular period of time, and

selecting the new query plan among the plurality of query plans;

determining a value indicating an estimated improvement in execution time of the first query plan in comparison to a previous execution time of the previous query plan; and

in response to determining that the value is greater than a threshold value, attempting to execute the first query using the first query plan, the attempting comprising:

determining that a second query plan selected among a plurality of query plans has a second estimated execution time that is less than an estimated execution time of the first query plan; and

executing the first query at a subsequent time using the second query plan, the executing the second query plan facilitating a decrease in execution time of the first query compared to using the first query plan.

2. The system of claim 1 , wherein the operations further comprise:

during execution of the first query using the first query plan, determining whether a current execution time of the first query plan is reduced in comparison with the previous execution time of the previous query plan; and

in response to determining that the current execution time is not reduced, cancelling the execution and re-executing the first query using the previous query plan.

3. The system of claim 2 , wherein the operations further comprise:

in response to the determining that the current execution time is not reduced, performing a rollback operation to switch back to the previous query plan for a subsequent execution of the first query, and the operations further comprise:

increasing the threshold value in response to the performing the rollback operation.

4. The system of claim 1 , wherein the determining the value comprises:

determining a first set of constants in the first query plan;

determining a second set of constants in the previous query plan; and

determining the value based at least in part on differences between the first set of constants and the second set of constants decreasing an estimated execution time of the first query plan in comparison with the previous execution time of the previous query plan.

5. The system of claim 4 , wherein the first query includes at least one constant value embedded in a first query string corresponding to the first query.

6. The system of claim 5 , wherein the first set of constants includes the at least one constant value embedded in the first query string.

7. The system of claim 5 , wherein the operations further comprise:

in response to determining that the first set of constants decrease the estimated execution time of the first query plan, selecting the first query plan instead of the previous query plan for execution.

8. The system of claim 7 , wherein the operations further comprise:

detecting at least one new change in software for query plan selection, the software utilized at least in part for the selecting the new query plan; and

activating the at least one new change.

9. The system of claim 8 , wherein the operations further comprise:

deactivating the at least one new change in response to determining that a current execution time of the first query plan is greater than the previous execution time of the previous query plan.

10. The system of claim 1 , wherein

the table size comprises a million number of rows and the particular period of time comprises a week.

11. A method comprising:

receiving a first query plan corresponding to a first query, the first query plan comprising a new query plan different than a previous query plan for the first query, the receiving the first query plan comprising:

tracking a plurality of queries corresponding to a plurality of query plans based on join operations contained in each of the plurality of queries and a previous time of executing each query from the plurality of query plans, the previous query plan for the first query being included in the plurality of query plans, the join operations contained in each of the plurality of queries resulting in a table size larger than a particular number of rows and the previous time of executing each query falling within a particular period of time, and

selecting the new query plan among the plurality of query plans;

determining a value indicating an estimated improvement in execution time of the first query plan in comparison to a previous execution time of the previous query plan; and

in response to determining that the value is greater than a threshold value, attempting to execute the first query using the first query plan, the attempting comprising:

determining that a second query plan selected among a plurality of query plans has a second estimated execution time that is less than an estimated execution time of the first query plan; and

executing the first query at a subsequent time using the second query plan, the executing the second query plan facilitating a decrease in execution time of the first query compared to using the first query plan.

12. The method of claim 11 , further comprising:

during execution of the first query using the first query plan, determining whether a current execution time of the first query plan is reduced in comparison with the previous execution time of the previous query plan; and

in response to determining that the current execution time is not reduced, cancelling the execution and re-executing the first query using the previous query plan.

13. The method of claim 12 , further comprising:

in response to the determining that the current execution time is not reduced, performing a rollback operation to switch back to the previous query plan for a subsequent execution of the first query, and further comprising:

increasing the threshold value in response to the performing the rollback operation.

14. The method of claim 11 , wherein the determining the value comprises:

determining a first set of constants in the first query plan;

determining a second set of constants in the previous query plan; and

determining the value based at least in part on differences between the first set of constants and the second set of constants decreasing an estimated execution time of the first query plan in comparison with the previous execution time of the previous query plan.

15. The method of claim 14 , wherein the first query includes at least one constant value embedded in a first query string corresponding to the first query.

16. The method of claim 15 , wherein the first set of constants includes the at least one constant value embedded in the first query string.

17. The method of claim 15 , further comprising:

in response to determining that the first set of constants decrease the estimated execution time of the first query plan, selecting the first query plan instead of the previous query plan for execution.

18. The method of claim 17 , further comprising:

detecting at least one new change in software for query plan selection, the software utilized at least in part for the selecting the new query plan; and

activating the at least one new change.

19. The method of claim 18 , further comprising:

deactivating the at least one new change in response to determining that a current execution time of the first query plan is greater than the previous execution time of the previous query plan.

20. The method of claim 11 , wherein

the table size comprises a million number of rows and the particular period of time comprises a week.

21. A non-transitory computer-storage medium comprising instructions that, when executed by one or more processors of a machine, configure the machine to perform operations comprising:

receiving a first query plan corresponding to a first query, the first query plan comprising a new query plan different than a previous query plan for the first query, the receiving the first query plan comprising:

tracking a plurality of queries corresponding to a plurality of query plans based on join operations contained in each of the plurality of queries and a previous time of executing each query from the plurality of query plans, the previous query plan for the first query being included in the plurality of query plans, the join operations contained in each of the plurality of queries resulting in a table size larger than a particular number of rows and the previous time of executing each query falling within a particular period of time, and

selecting the new query plan among the plurality of query plans;

determining a value indicating an estimated improvement in execution time of the first query plan in comparison to a previous execution time of the previous query plan; and

in response to determining that the value is greater than a threshold value, attempting to execute the first query using the first query plan, the attempting comprising:

determining that a second query plan selected among a plurality of query plans has a second estimated execution time that is less than an estimated execution time of the first query plan; and

executing the first query at a subsequent time using the second query plan, the executing the second query plan facilitating a decrease in execution time of the first query compared to using the first query plan.

22. The non-transitory computer-storage medium claim 21 , wherein the operations further comprise:

during execution of the first query using the first query plan, determining whether a current execution time of the first query plan is reduced in comparison with the previous execution time of the previous query plan; and

in response to determining that the current execution time is not reduced, cancelling the execution and re-executing the first query using the previous query plan.

23. The non-transitory computer-storage medium claim 22 , wherein the operations further comprise:

in response to the determining that the current execution time is not reduced, performing a rollback operation to switch back to the previous query plan for a subsequent execution of the first query, and the operations further comprise:

increasing the threshold value in response to the performing the rollback operation.

24. The non-transitory computer-storage medium claim 21 , wherein the determining the value comprises:

determining a first set of constants in the first query plan;

determining a second set of constants in the previous query plan; and

determining the value based at least in part on differences between the first set of constants and the second set of constants decreasing an estimated execution time of the first query plan in comparison with the previous execution time of the previous query plan.

25. The non-transitory computer-storage medium claim 24 , wherein the first query includes at least one constant value embedded in a first query string corresponding to the first query.

26. The non-transitory computer-storage medium claim 25 , wherein the first set of constants includes the at least one constant value embedded in the first query string.

27. The non-transitory computer-storage medium claim 25 , wherein the operations further comprise:

in response to determining that the first set of constants decrease the estimated execution time of the first query plan, selecting the first query plan instead of the previous query plan for execution.

28. The non-transitory computer-storage medium claim 27 , wherein the operations further comprise:

detecting at least one new change in software for query plan selection, the software utilized at least in part for the selecting the new query plan; and

activating the at least one new change.

29. The non-transitory computer-storage medium claim 28 , wherein the operations further comprise:

deactivating the at least one new change in response to determining that a current execution time of the first query plan is greater than the previous execution time of the previous query plan.

30. The non-transitory computer-storage medium claim 21 , wherein

the table size comprises a million number of rows and the particular period of time comprises a week.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 31, 2022
From: HWANG, SANGYONG; SIKDAR, SOURAV; YAN, LI
To: SNOWFLAKE INC.
Reel/Frame 059460/0496 →
Continuity (3)
Continuation 17236471 · Apr 21, 2021
Provisional Application 63143671 · Jan 29, 2021
Related Publication 20220245148A1 · Aug 4, 2022
Cited By (2)
US 12,488,001 US 12,730,811