IP Library › Granted Patent US 11,868,359
Granted Patent B2
US 11,868,359 · App. 17/722,222 · Granted Jan 9, 2024

Dynamically assigning queries to secondary query processing resources

Inventors: Gaurav Saxena (Cupertino, CA); Ippokratis Pandis (Menlo Park, CA); Mengchu Cai (San Jose, CA); Mingda Li (Los Angeles, CA); Mohammad Rezaur Rahman (Fremont, CA); Naresh Chainani (Mountain View, CA)
Assignee: Amazon Technologies, Inc.
G06F16/2458G06F16/24561G06F16/285G06F9/3877
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,868,359
App. No.
17/722,222
Granted
Jan 9, 2024
Kind
B2
Abstract

A primary query engine may receive a query and determine whether the query is eligible for performance at a secondary query engine. If eligible, the primary query engine may evaluate the availability of the first query engine to perform the query. The first query engine may determine whether to assign the query to the primary query engine or to the secondary query according to availability evaluation. For queries assigned to the secondary query engine, the primary query engine may send a request to the secondary query engine to being processing of the query.

Claims (71)

1. A system, comprising:

at least one processor; and

a memory, storing program instructions that when executed by the at least one processor, cause the at least one processor to implement a primary query engine for a database;

wherein the primary query engine is configured to:

receive a query to the database;

determine whether the query is eligible to be performed by at least the primary query engine and a secondary query engine, wherein the primary query engine and the secondary query engine are provisioned to perform queries to the database in response to the query or a prior query to the database; and

responsive to a determination that the query is eligible to be performed by the primary query engine and the secondary query engine:

predict a first execution time for the primary query engine to perform the query and a second execution time for the secondary query engine to perform the query,

assign one of the primary query engine or the secondary query engine to begin performing the query based on a comparison between the first execution time and the second execution time, and

responsive to an assignment of the query to the secondary query engine, send a request to the secondary query engine to begin performing the query to the database.

2. The system of claim 1 , wherein the primary query engine is further configured to:

detect a failure of the query at the second query engine; and

responsive to the detection of the failure, perform the query.

3. The system of claim 1 , wherein the primary query engine is further configured to:

perform the query at the primary query engine; and

return a result from a first one of the primary query engine or secondary query engine to complete the query.

4. The system of claim 1 , wherein the primary query engine and the secondary query engine are a primary processing cluster and a secondary processing cluster respectively implemented as part of a data warehouse service of a provider network, wherein the query is determined to be eligible according to a request that specifies a source of queries to be identified as eligible for performance at the secondary query engine.

5. The system of claim 1 , wherein the secondary query engine queues the query until the secondary query engine is available to begin performing the query.

6. The system of claim 1 , wherein the primary query engine is further configured to reassign the query to the primary query engine to begin performance of the query when the primary query engine becomes available to begin performing the query.

7. A method, comprising:

receiving a query to a database at a first query engine;

determining, by the first query engine, that the query is eligible to be performed by the first query engine and a second query engine, wherein the first query engine and the second query engine are provisioned to perform queries to the database in response to the query or a prior query to the database;

determining, by the first query engine, a first predicted query execution time for the first query engine to perform the query and a second predicted query execution time for the second query engine to perform the query to determine whether to assign the first query engine or the second query engine to perform the query; and

responsive to an assignment of the query to the second query engine based on a comparison between the first predicted query execution time and the second predicted query execution time, causing, by the first query engine, the second query engine to begin performing the query to the database.

8. The method of claim 7 , further comprising:

determining, by the second query engine, that performance of the query by the second query engine exceeds a performance threshold for the query; and

responsive to determining that the performance of the query by the second query engine exceeds the performance threshold, sending, by the second query engine, the query to the first query engine to be performed by the first query engine.

9. The method of claim 7 , further comprising:

evaluating an availability of the first query engine and an availability of the second query engine to perform the query to determine whether to assign the first query engine or the second query engine to perform the query; and

wherein the assignment of the query to the second query engine is further based on:

a comparison between the availability of the first query engine and the availability of the second query engine.

10. The method of claim 9 , wherein evaluating the availability of the first query engine to perform the query to determine whether to assign the query to be performed by the first query engine or the second query engine comprises determining that an execution slot was not available for the query at the first query engine.

11. The method of claim 7 , further comprising:

detecting, by the first query engine, availability to perform another query at the second query engine;

evaluating, by the first query engine, a queue of waiting queries at the first query engine to select one of the waiting queries to perform at the second query engine; and

sending, by the first query engine, a request to the second query engine to perform the selected query.

12. The method of claim 7 , further comprising:

queuing, by the first query engine, another query assigned to the second query engine to be performed;

determining, by the first query engine, that an execution slot for performing the other query is available at the first query engine; and

performing, by the first query engine, the other query at the first query engine instead of at the second query engine.

13. The method of claim 7 , further comprising:

receiving an assignment policy for assigning queries to the second query engine; and

wherein determining the first predicted query execution time for the first query engine to perform the query and the second predicted query execution time for the second query engine to perform the query to determine whether to assign the first query engine or the second query engine to perform the query is performed according to the assignment policy.

14. The method of claim 7 , further comprising:

detecting, by the first query engine, a failure of the query at the second query engine; and

responsive to the detection of the failure, performing, by the first query engine, the query.

15. The method of claim 7 , further comprising:

performing, by the first query engine, the query at a primary query engine; and

returning, by the first query engine, a result from a first one of the primary query engine or a secondary query engine to complete the query.

16. One or more non-transitory, computer-readable storage media, storing program instructions that when executed on or across one or more computing devices cause the one or more computing devices to implement:

receiving a query to a database at a first query engine to be performed by the first query engine;

evaluating, by the first query engine, an eligibility of the query to be performed by at least the first query engine and a second query engine provisioned in response to the query or a prior query;

identifying the query as eligible to be performed by the first query engine and the second query engine according to the evaluation of the eligibility of the query;

predict, by the first query engine, a first execution time for the first query engine to perform the query and a second execution time for the second query engine to perform the query;

assigning, by the first query engine, the query to the second query engine based on a comparison between the first execution time and the second execution time; and

sending, by the first query engine, a request to the second query engine to begin performing the query to the database.

17. The one or more non-transitory, computer-readable storage media of claim 16 , wherein the one or more non-transitory computer-readable storage media comprise additional program instructions that when executed by the one or more computing devices cause the one or more computing devices to implement:

evaluating, by the first query engine, an eligibility of the query to be performed by a third query engine provisioned in response to the query or the prior query;

identifying the query as eligible to be performed by the third query engine according to the evaluation of the eligibility of the query;

predicting a third execution time for the query at the third query engine; and

comparing the first execution time, the second execution time, and the third execution time to select the second query engine.

18. The one or more non-transitory, computer-readable storage media of claim 16 , wherein the one or more non-transitory computer-readable storage media comprise additional program instructions that when executed by the one or more computing devices cause the one or more computing devices to implement:

detecting, by the first query engine, availability to perform another query at the second query engine;

evaluating, by the first query engine, a queue of waiting queries at the first query engine to select one of the waiting queries to perform at the second query engine; and

sending, by the first query engine, a request to the second query engine to perform the selected query.

19. The one or more non-transitory, computer-readable storage media of claim 16 , wherein the one or more non-transitory computer-readable storage media comprise additional program instructions that when executed by the one or more computing devices cause the one or more computing devices to implement:

determining, by the first query engine, that performance of another query by the first query engine exceeds a performance threshold for the other query; and

responsive to determining that the performance of the other query by the first query engine exceeds the performance threshold, sending, by the first query engine, the other query to the second query engine to be performed by the second query engine.

20. The one or more non-transitory, computer-readable storage media of claim 16 , wherein the one or more non-transitory computer-readable storage media comprise additional program instructions that when executed by the one or more computing devices cause the one or more computing devices to implement:

receiving, by the first query engine, a request that specifies a source of queries to be identified as eligible for performance at the second query engine; and

wherein the identifying the query as eligible is received from the specified source.

Continuity (2)
Continuation 16452385 · Jun 25, 2019
Related Publication 20220237184A1 · Jul 28, 2022
Cited By (3)
US 12,248,473 US 12,452,081 US 12,737,355