クエリキュー
このトピックでは、StarRocks におけるクエリキューの管理方法について説明します。
v2.5 から、StarRocks はクエリキューをサポートしています。クエリキューが有効になると、同時実行のしきい値やリソース制限に達した場合に、StarRocks は自動的に受信クエリをキューに入れ、過負荷の悪化を避けます。保留中のクエリは、実行を開始するのに十分な計算リソースが利用可能になるまでキューで待機します。
クエリキューには 2 つのバージョンがあります。
- Query Queue v1: クエリの同時実行数、BE のメモリ使用率、および BE の CPU 使用率に基づいてキューイングをトリガーします。このトピックの既存のクエリキュー設定と動作は v1 に属します。v3.1.4 以降、v1 はリソースグループレベルでのクエリキュー設定をサポートしています。
- Query Queue v2: v3.3 以降でサポートされています。v2 は各 Query が消費する BE リソースを見積もり、BE リソースを論理 slot として表現し、各 Query が必要とする slot 数に基づいてキューイングとスケジューリングを行います。
Query Queue v1
Query Queue v1 では、CPU 使用率、メモリ使用率、クエリの同時実行数にしきい値を設定して、クエリキューをトリガーできます。
ロードマップ:
| Version | Global query queue | Resource group-level query queue | Collective concurrency management | Dynamic concurrency adjustment |
|---|---|---|---|---|
| v2.5 | ✅ | ❌ | ❌ | ❌ |
| v3.1.4 | ✅ | ✅ | ✅ | ✅ |
Query Queue v1 を有効にする
クエリキューはデフォルトで無効になっています。INSERT ロード、SELECT クエリ、および統計クエリに対して、対応するグローバルセッション変数を設定することで、グローバルまたはリソースグループレベルのクエリキューを有効にできます。
グローバルクエリキューを有効にする
- ロードタスクのクエリキューを有効にする:
SET GLOBAL enable_query_queue_load = true;
- SELECT クエリのクエリキューを有効にする:
SET GLOBAL enable_query_queue_select = true;
- 統計クエリのクエリキューを有効にする:
SET GLOBAL enable_query_queue_statistic = true;