HeatWave MySQL uses a workload-aware, priority-based, automated scheduling mechanism to schedule concurrently issued queries for execution. The scheduling mechanism prioritizes short-running queries but considers wait time in the queue so that costlier queries are eventually scheduled for execution. This scheduling approach reduces query execution wait times overall.
Concurrency queues queries within a HeatWave Cluster, and is not the same as replication.
When a HeatWave Cluster is idle, an arriving query is immediately scheduled for execution. It is not queued. A query is queued only if the HeatWave Cluster is running a preceding query.
A light-weight cost estimate is performed for each query at query compilation time.
Queries cancelled via Ctrl-C
are removed
from the scheduling queue.
To view the HeatWave query history including query start time, end time, and wait time in the scheduling queue, see Section 7.1, “HeatWave MySQL Monitoring”.
MySQL 9.0.0 introduces a novel scheduler that a HeatWave Cluster uses to run multiple concurrent queries before placing further queries on the queue. The scheduler can interleave queries inside each HeatWave node within a HeatWave Cluster to achieve the following scheduling improvements:
Maximise query processing throughput.
Make the query wait time proportional to the query execution time.
Ensure that queries only receive an out of memory error if they would also receive an out of memory error when they run in isolation. If a query does raise an out of memory error, the scheduler will run the query a second time in isolation.
The scheduler can run up to 12 concurrent queries within a HeatWave Cluster. The actual number of concurrent queries depends upon the predicted memory requirements, and available memory.
The scheduler runs HeatWave AutoML, HeatWave GenAI, HeatWave Lakehouse and data load queries one at a time.
The scheduler can run multiple analytical queries if there is no more than one data load query running.
The scheduler can run multiple data load queries if there is no more than one analytical query running.