| CPC G06F 16/283 (2019.01) [G06F 16/24534 (2019.01); G06F 16/2457 (2019.01); G06F 16/248 (2019.01); G06F 16/256 (2019.01)] | 20 Claims |

|
1. A computing device comprising:
one or more processors; and
memory storing instructions that, when executed by the one or more processors, cause the computing device to:
receive, from a user device, a request to execute a query on at least one of a plurality of data warehouses;
predict, based on an execution plan for the query, a processing complexity of the query, wherein the processing complexity of the query indicates a quantity of computing resources required to execute the query;
determine, based on the processing complexity of the query and for each of a plurality of virtual warehouses, a plurality of predicted processing times, wherein each predicted processing time of the plurality of predicted processing times predicts how long a given virtual warehouse of the plurality of virtual warehouses will take to execute the query;
select, based on the plurality of predicted processing times, a first virtual warehouse, of the plurality of virtual warehouses, to execute the query, wherein each of the plurality of virtual warehouses comprises a respective set of computing resources;
modify, based on the plurality of predicted processing times and based on first computing resources available to the selected first virtual warehouse:
the query, and
a quantity of the first computing resources used to execute one or more other queries executing on the first virtual warehouse; and
cause the first virtual warehouse to execute the modified query.
|