システム変数
StarRocks は、多くのシステム変数を提供しており、要件に応じて設定および変更できます。このセクションでは、StarRocks がサポートする変数について説明します。これらの変数の設定は、MySQL クライアントで SHOW VARIABLES コマンドを実行することで確認できます。また、SET コマンドを使用して、変数を動的に設定または変更することもできます。これらの変数は、システム全体でグローバルに、現在のセッションのみで、または単一のクエリ文でのみ有効にすることができます。
StarRocks の変数は MySQL の変数セットを参照していますが、一部の変数は MySQL クライアントプロトコルと互換性があるだけで、MySQL データベースでは機能しません。
注意
どのユーザーも SHOW VARIABLES を実行し、セッションレベルで変数を有効にする権限を持っています。しかし、システムレベルの OPERATE 権限を持つユーザーのみが変数をグローバルに有効にできます。グローバルに有効な変数は、すべての将来のセッションに影響を与えます(現在のセッションを除く)。
現在のセッションの設定変更を行い、さらにその設定変更をすべての将来のセッションに適用したい場合は、
GLOBAL
修飾子を使用せずに一度、使用してもう一度変更を行うことができます。例:SET query_mem_limit = 137438953472; -- 現在のセッションに適用。
SET GLOBAL query_mem_limit = 137438953472; -- すべての将来のセッションに適用。
変数の階層と種類
StarRocks は、グローバル変数、セッション変数、および SET_VAR
ヒントの3種類(レベル)の変数をサポートしています。それらの階層関係は以下の通りです:
- グローバル変数はグローバルレベルで有効であり、セッション変数や
SET_VAR
ヒントによって上書きされることがあります。 - セッション変数は現在のセッションでのみ有効であり、
SET_VAR
ヒントによって上書きされることがあります。 SET_VAR
ヒントは、単一のクエリ文でのみ有効です。
変数の表示
SHOW VARIABLES [LIKE 'xxx']
を使用して、すべてまたは一部の変数を表示できます。例:
-- システム内のすべての変数を表示。
SHOW VARIABLES;
-- 特定のパターンに一致する変数を表示。
SHOW VARIABLES LIKE '%time_zone%';
変数の設定
変数をグローバルまたは単一セッションで設定
変数を グローバルに または 現在のセッションのみで 有効に設定できます。グローバルに設定すると、新しい値はすべての将来のセッションで使用されますが、現在のセッションでは元の値が使用されます。「現在のセッションのみ」に設定すると、変数は現在のセッションでのみ有効になります。
SET <var_name> = xxx;
で設定された変数は、現在のセッションでのみ有効です。例:
SET exec_mem_limit = 137438953472;
SET forward_to_master = true;
SET time_zone = "Asia/Shanghai";
SET GLOBAL <var_name> = xxx;
で設定された変数はグローバルに有効です。例:
SET GLOBAL exec_mem_limit = 137438953472;
以下の変数はグローバルにのみ有効です。単一セッションでは有効にできないため、これらの変数には SET GLOBAL <var_name> = xxx;
を使用する必要があります。単一セッションでそのような変数を設定しようとすると(SET <var_name> = xxx;
)、エラーが返されます。
- character_set_database
- default_rowset_type
- enable_query_queue_select
- enable_query_queue_statistic
- enable_query_queue_load
- init_connect
- lower_case_table_names
- license
- language
- query_cache_size
- query_queue_fresh_resource_usage_interval_ms
- query_queue_concurrency_limit
- query_queue_mem_used_pct_limit
- query_queue_cpu_used_permille_limit
- query_queue_pending_timeout_second
- query_queue_max_queued_queries
- system_time_zone
- version_comment
- version
さらに、変数設定は定数式もサポートしています。例:
SET exec_mem_limit = 10 * 1024 * 1024 * 1024;
SET forward_to_master = concat('tr', 'u', 'e');
単一のクエリ文で変数を設定
特定のクエリに対して変数を設定する必要がある場合があります。SET_VAR
ヒントを使用することで、単一の文内でのみ有効なセッション変数を設定できます。例:
SELECT /*+ SET_VAR(exec_mem_limit = 8589934592) */ name FROM people ORDER BY name;
SELECT /*+ SET_VAR(query_timeout = 1) */ sleep(3);
注意
SET_VAR
はSELECT
キーワードの後にのみ配置でき、/*+...*/
で囲む必要があります。
単一の文で複数の変数を設定することもできます。例:
SELECT /*+ SET_VAR
(
exec_mem_limit = 515396075520,
query_timeout=10000000,
batch_size=4096,
parallel_fragment_exec_instance_num=32
)
*/ * FROM TABLE;
変数の説明
変数は アルファベット順 に説明されています。global
ラベルの付いた変数はグローバルにのみ有効です。他の変数はグローバルまたは単一セッションで有効にできます。
auto_increment_increment
MySQL クライアント互換性のために使用されます。実用的な使用法はありません。
autocommit
MySQL クライアント互換性のために使用されます。実用的な使用法はありません。
chunk_size
クエリ実行中に各ノードが送信する単一パケットの行数を指定するために使用されます。デフォルトは 4096 で、ソースノードによって生成されたデータの 4096 行ごとにパッケージ化され、宛先ノードに送信されます。行数が多いほど、大量データシナリオでのクエリスループットが向上しますが、小規模データシナリオでのクエリ遅延が増加する可能性があります。また、クエリのメモリオーバーヘッドが増加する可能性があります。batch_size
を 1024 から 4096 の間に設定することをお勧めします。
cbo_enable_low_cardinality_optimize
低基数最適化を有効にするかどうかを指定します。この機能を有効にすると、STRING 列のクエリパフォーマンスが約 3 倍向上します。デフォルト値:true。
cbo_eq_base_type (2.5.14 以降)
DECIMAL データと STRING データ間のデータ比較に使用されるデータ型を指定します。デフォルト値は VARCHAR
で、DECIMAL も有効な値です。
enable_materialized_view_union_rewrite (2.5.20 以降)
マテリアライズドビューのユニオン書き換えを有効にするかどうかを指定します。この項目が true
に設定されている場合、マテリアライズドビューの述語がクエリの述語を満たさない場合に、UNION ALL を使用して述語を補完しようとします。デフォルト値は true
です。
enable_materialized_view_plan_cache (2.5.13 以降)
マテリアライズドビューのプランキャッシュを有効にするかどうかを指定します。これにより、マテリアライズドビューの自動書き換えパフォーマンスが最適化されます。デフォルト値 true
は有効化を示します。
follower_query_forward_mode (2.5.20 以降)
クエリ文がどの FE ノードにルーティングされるかを指定します。
-
有効な値:
default
: クエリ文を Leader FE または Follower FEs にルーティングします。Follower のリプレイ進行状況に依存します。Follower FE ノードがリプレイ進行状況を完了していない場合、クエリは Leader FE ノードにルーティングされます。リプレイ進行状況が完了している場合、クエリは優先的に Follower FE ノードにルーティングされます。leader
: クエリ文を Leader FE にルーティングします。follower
: クエリ文を Follower FE にルーティングします。
character_set_database (global)
StarRocks がサポートする文字セット。UTF8 (utf8
) のみがサポートされています。
connector_io_tasks_per_scan_operator (2.5 以降)
外部テーブルクエリ中にスキャンオペレーターが発行できる最大同時 I/O タスク数。値は整数です。デフォルト値:16。
現在、StarRocks は外部テーブルをクエリする際に同時 I/O タスク数を自動的に調整できます。この機能は、デフォルトで有効になっている変数 enable_connector_adaptive_io_tasks
によって制御されます。
count_distinct_column_buckets (2.5 以降)
グループバイカウントディスティンクトクエリにおける COUNT DISTINCT 列のバケット数。この変数は、enable_distinct_column_bucketization
が true
に設定されている場合にのみ有効です。デフォルト値:1024。
default_rowset_type (global)
グローバル変数。計算ノードのストレージエンジンで使用されるデフォルトのストレージ形式を設定するために使用されます。現在サポートされているストレージ形式は alpha
と beta
です。
disable_colocate_join
Colocation Join を有効にするかどうかを制御するために使用されます。デフォルト値は false
で、この機能が有効であることを意味します。この機能が無効化されると、クエリプランニングは Colocation Join を実行しようとしません。
disable_streaming_preaggregations
ストリーミング事前集計を有効にするために使用されます。デフォルト値は false
で、有効であることを意味します。
div_precision_increment
MySQL クライアント互換性のために使用されます。実用的な使用法はありません。
enable_connector_adaptive_io_tasks (2.5 以降)
外部テーブルをクエリする際に同時 I/O タスク数を自動的に調整するかどうかを指定します。デフォルト値:true。
この機能が有効でない場合、変数 connector_io_tasks_per_scan_operator
を使用して同時 I/O タスク数を手動で設定できます。
enable_distinct_column_bucketization (2.5 以降)
グループバイカウントディスティンクトクエリにおける COUNT DISTINCT 列のバケット化を有効にするかどうかを指定します。クエリ select a, count(distinct b) from t group by a;
を例にとります。GROUP BY 列 a
が低基数列で、COUNT DISTINCT 列 b
が高基数列でデータスキューが深刻な場合、パフォーマンスボトルネックが発生します。この状況では、COUNT DISTINCT 列のデータを複数のバケットに分割してデータを均等にし、データスキューを防ぐことができます。
デフォルト値:false、この機能が無効であることを意味します。この変数は、変数 count_distinct_column_buckets
と一緒に使用する必要があります。
また、クエリに skew
ヒントを追加することで、COUNT DISTINCT 列のバケット化を有効にすることもできます。例:select a,count(distinct [skew] b) from t group by a;
。
enable_insert_strict
INSERT 文を使用してデータをロードする際に厳密モードを有効にするために使用されます。デフォルト値は true
で、厳密モードがデフォルトで有効であることを示します。詳細については、Strict mode を参照してください。
enable_materialized_view_for_insert
- 説明: StarRocks が INSERT INTO SELECT 文でクエリを書き換えることを許可するかどうか。
- デフォルト: false、このシナリオでのクエリの書き換えがデフォルトで無効であることを意味します。
- 導入バージョン: v2.5.18, v3.0.9, v3.1.7, v3.2.2
enable_materialized_view_union_rewrite (2.5 以降)
マテリアライズドビューのユニオンクエリ書き換えを有効にするかどうかを制御するブール値。デフォルト: true
。
enable_rule_based_materialized_view_rewrite (2.5 以降)
ルールベースのマテリアライズドビュークエリ書き換えを有効にするかどうかを制御するブール値。この変数は主に単一テーブルクエリ書き換えに使用されます。デフォルト: true
。
enable_strict_order_by
ORDER BY で参照される列名が曖昧であるかどうかをチェックするために使用されます。この変数がデフォルト値 TRUE
に設定されている場合、次のようなクエリパターンでエラーが報告されます:クエリの異なる式で重複したエイリアスが使用され、このエイリアスが ORDER BY のソートフィールドでもある場合、例:select distinct t1.* from tbl1 t1 order by t1.k1;
。このロジックは v2.3 以前と同じです。この変数が FALSE
に設定されている場合、緩やかな重複排除メカニズムが使用され、そのようなクエリを有効な SQL クエリとして処理します。
この変数は v2.5.18 および v3.1.7 からサポートされています。
enable_profile
クエリのプロファイルを分析のために送信するかどうかを指定します。デフォルト値は false
で、プロファイルが必要ないことを意味します。
デフォルトでは、クエリエラーが BE で発生した場合にのみプロファイルが FE に送信されます。プロファイルの送信はネットワークオーバーヘッドを引き起こし、したがって高い同時実行性に影響を与えます。
クエリのプロファイルを分析する必要がある場合、この変数を true
に設定できます。クエリが完了した後、現在接続している FE のウェブページ(アドレス:fe_host:fe_http_port/query
)でプロファイルを表示できます。このページには、enable_profile
がオンになっている最新の 100 件のクエリのプロファイルが表示されます。
enable_query_queue_load (global)
ロードタスクのためのクエリキューを有効にするブール値。デフォルト: false
。
enable_query_queue_select (global)
SELECT クエリのためのクエリキューを有効にするブール値。デフォルト: false
。
enable_query_queue_statistic (global)
統計クエリのためのクエリキューを有効にするブール値。
enable_scan_block_cache (2.5 以降)
Data Cache 機能を有効にするかどうかを指定します。この機能が有効になると、StarRocks は外部ストレージシステムから読み取ったホットデータをブロックにキャッシュし、クエリと分析を加速します。詳細については、Data Cache を参照してください。
enable_populate_block_cache (2.5 以降)
StarRocks に外部ストレージシステムから読み取ったデータブロックをキャッシュするかどうかを指定します。外部ストレージシステムから読み取ったデータブロックをキャッシュしたくない場合、この変数を false
に設定します。デフォルト値:true
。この変数は 2.5 からサポートされています。
enable_tablet_internal_parallel (2.3 以降)
タブレットの適応並行スキャンを有効にするかどうかを指定します。この機能が有効になると、複数のスレッドを使用してセグメントごとに 1 つのタブレットをスキャンでき、スキャンの並行性が向上します。デフォルト値:true
。
enable_query_cache (2.5 以降)
Query Cache 機能を有効にするかどうかを指定します。有効な値:true および false。true
はこの機能を有効にし、false
はこの機能を無効にします。この機能が有効な場合、Query Cache の適用シナリオで指定された条件を満たすクエリに対してのみ機能します。
enable_adaptive_sink_dop (2.5 以降)
データロードの適応並行性を有効にするかどうかを指定します。この機能が有効になると、システムは INSERT INTO および Broker Load ジョブのロード並行性を自動的に設定し、pipeline_dop
のメカニズムと同等になります。新しくデプロイされた v2.5 StarRocks クラスターでは、デフォルトで値は true
です。v2.4 からアップグレードされた v2.5 クラスターでは、値は false
です。
enable_pipeline_engine
パイプライン実行エンジンを有効にするかどうかを指定します。true
は有効を示し、false
は無効を示します。デフォルト値:true
。
enable_sort_aggregate (2.5 以降)
ソートストリーミングを有効にするかどうかを指定します。true
はソートストリーミングが有効で、データストリーム内のデータをソートします。
enable_query_tablet_affinity(2.5 以降)
同じタブレットに対する複数のクエリを固定レプリカに指示するかどうかを制御するブール値。
クエリするテーブルに多数のタブレットがあるシナリオでは、この機能によりクエリパフォーマンスが大幅に向上します。なぜなら、タブレットのメタ情報とデータがメモリにより迅速にキャッシュされるからです。
しかし、ホットスポットタブレットがある場合、この機能はクエリパフォーマンスを低下させる可能性があります。なぜなら、クエリを同じ BE に指示し、高い同時実行性 シナリオで複数の BE のリソースを十分に活用できなくなるからです。
デフォルト値:false
、システムが各クエリに対してレプリカを選択することを意味します。この機能は 2.5.6、3.0.8、および 3.1.4 からサポートされています。
tablet_internal_parallel_mode
- 説明: タブレットの内部並行スキャン戦略。有効な値:
auto
: BE または CN ノードでスキャンされるタブレットの数が並行度 (DOP) より少ない場合、システムはタブレットの推定サイズに基づいて並行スキャンが必要かどうかを自動的に判断します。force_split
: タブレットを強制的に分割し、並行スキャンを実行します。
- デフォルト: auto
- データ型: String
- 導入バージョン: v2.5.0
enable_scan_datacache
- 説明: Data Cache 機能を有効にするかどうかを指定します。この機能が有効になると、StarRocks は外部ストレージシステムから読み取ったホットデータをブロックにキャッシュし、クエリと分析を加速します。詳細については、Data Cache を参照してください。バージョン 3.2 以前では、この変数は
enable_scan_block_cache
として名前が付けられていました。 - デフォルト: false
- 導入バージョン: v2.5
enable_populate_datacache
- 説明: StarRocks に外部ストレージシステムから読み取ったデータブロックをキャッシュするかどうかを指定します。外部ストレージシステムから読み取ったデータブロックをキャッシュしたくない場合、この変数を
false
に設定します。デフォルト値:true。この変数は 2.5 からサポートされています。バージョン 3.2 以前では、この変数はenable_scan_block_cache
として名前が付けられていました。 - デフォルト: true
- 導入バージョン: v2.5
enable_global_runtime_filter
グローバルランタイムフィルター (RF) を有効にするかどうかを指定します。RF はランタイムでデータをフィルタリングします。データフィルタリングは通常、ジョイン段階で発生します。マルチテーブルジョイン中に、述語プッシュダウンなどの最適化を使用してデータをフィルタリングし、ジョインのスキャン行数と Shuffle 段階の I/O を減らし、クエリを高速化します。
StarRocks は 2 種類の RF を提供します:ローカル RF とグローバル RF。ローカル RF は Broadcast Hash Join に適しており、グローバル RF は Shuffle Join に適しています。
デフォルト値:true
、グローバル RF が有効であることを意味します。この機能が無効化されると、グローバル RF は効果を発揮しません。ローカル RF は引き続き機能します。
enable_multicolumn_global_runtime_filter
マルチカラムグローバルランタイムフィルターを有効にするかどうかを指定します。デフォルト値:false
、マルチカラムグローバル RF が無効であることを意味します。
ジョイン(Broadcast Join および Replicated Join を除く)に複数の等価ジョイン条件がある場合:
- この機能が無効化されている場合、ローカル RF のみが機能します。
- この機能が有効化されている場合、マルチカラムグローバル RF が有効になり、
multi-column
を partition by 句に含みます。
event_scheduler
MySQL クライアント互換性のために使用されます。実用的な使用法はありません。
exec_mem_limit
単一のクエリプランインスタンスで使用できるメモリ制限を設定するために使用されます。デフォルト値は 2GB で、デフォルト単位は B です。B/K/KB/M/MB/G/GB/T/TB/P/PB
がサポートされています。
クエリプランには複数のインスタンスが存在する可能性があり、BE ノードは 1 つ以上のインスタンスを実行する可能性があります。したがって、このパラメータはクラスター全体でのクエリのメモリ使用量を正確に制限するものではなく、単一の BE ノードでのクエリのメモリ使用量を正確に制限するものでもありません。生成されたクエリプランに基づいて評価する必要があります。
通常、ブロッキングノード(例:Sort Node、Aggregate Node、Join Node)でより多くのメモリが消費されます。ノンブロッキングノード(例:Scan Node)はストリームでデータを送信し、あまり多くのメモリを消費しません。
Memory Exceed Limit
エラーが発生した場合、このパラメータを増やしてみてください。
force_streaming_aggregate
集計ノードがストリーミング集計を有効にするかどうかを制御するために使用されます。デフォルト値は false で、機能が有効でないことを意味します。
forward_to_master
一部のコマンドがリーダー FE に転送されて実行されるかどうかを指定するために使用されます。デフォルト値は false
で、リーダー FE に転送されないことを意味します。StarRocks クラスターには複数の FE があり、そのうちの 1 つがリーダー FE です。通常、ユーザーは任意の FE に接続してフル機能の操作を行うことができます。ただし、一部の情報はリーダー FE にのみ存在します。
例えば、SHOW BACKENDS コマンドがリーダー FE に転送されない場合、基本情報(例:ノードが生存しているかどうか)しか表示されません。リーダー FE に転送することで、ノードの起動時間や最終ハートビート時間などの詳細情報を取得できます。
この変数に影響を受けるコマンドは次の通りです:
-
SHOW FRONTENDS: リーダー FE に転送することで、ユーザーは最終ハートビートメッセージを表示できます。
-
SHOW BACKENDS: リーダー FE に転送することで、ユーザーは起動時間、最終ハートビート情報、ディスク容量情報を表示できます。
-
SHOW BROKER: リーダー FE に転送することで、ユーザーは起動時間と最終ハートビート情報を表示できます。
-
SHOW TABLET
-
ADMIN SHOW REPLICA DISTRIBUTION
-
ADMIN SHOW REPLICA STATUS: リーダー FE に転送することで、ユーザーはリーダー FE のメタデータに格納されているタブレット情報を表示できます。通常、タブレット情報は異なる FE のメタデータで同じであるべきです。エラーが発生した場合、この方法を使用して現在の FE とリーダー FE のメタデータを比較できます。
-
Show PROC: リーダー FE に転送することで、ユーザーはメタデータに格納されている PROC 情報を表示できます。これは主にメタデータの比較に使用されます。
hash_join_push_down_right_table
ジョインクエリで右テーブルに対するフィルター条件を使用して左テーブルのデータをフィルタリングできるかどうかを制御するために使用されます。これにより、クエリ中に処理する必要のあるデータ量を減らすことができます。
true
は操作が許可され、システムが左テーブルをフィルタリングできるかどうかを決定することを示します。false
は操作が無効であることを示します。デフォルト値は true
です。
init_connect (global)
MySQL クライアント互換性のために使用されます。実用的な使用法はありません。
interactive_timeout
MySQL クライアント互換性のために使用されます。実用的な使用法はありません。
io_tasks_per_scan_operator (2.5 以降)
スキャンオペレーターが発行できる同時 I/O タスクの数。この値を増やすと、HDFS や S3 などのリモートストレージシステムにアクセスする際の待ち時間が高い場合に役立ちます。ただし、値が大きいとメモリ消費が増加します。
値は整数です。デフォルト値:4。
language (global)
MySQL クライアント互換性のために使用されます。実用的な使用法はありません。
license (global)
StarRocks のライセンスを表示します。
load_mem_limit
インポート操作のメモリ制限を指定します。デフォルト値は 0 で、この変数が使用されず、exec_mem_limit
が代わりに使用されることを意味します。
この変数は、クエリとインポートの両方を含む INSERT
操作にのみ使用されます。ユーザーがこの変数を設定しない場合、クエリとインポートのメモリ制限は exec_mem_limit
として設定されます。それ以外の場合、クエリのメモリ制限は exec_mem_limit
として設定され、インポートのメモリ制限は load_mem_limit
として設定されます。
他のインポート方法(BROKER LOAD
、STREAM LOAD
など)は、メモリ制限に exec_mem_limit
を引き続き使用します。
lower_case_table_names (global)
MySQL クライアント互換性のために使用されます。実用的な使用法はありません。StarRocks のテーブル名は大文字小文字を区別します。
max_allowed_packet
JDBC 接続プール C3P0 との互換性のために使用されます。この変数は、クライアントとサーバー間で送信できるパケットの最大サイズを指定します。デフォルト値:32 MB。単位:バイト。クライアントが "PacketTooBigException" を報告する場合、この値を上げることができます。
max_scan_key_num
各クエリによってセグメント化されるスキャンキーの最大数。デフォルト値:-1、be.conf
ファイルの値が使用されることを示します。この変数が 0 より大きい値に設定されている場合、be.conf
の値は無視されます。
max_pushdown_conditions_per_column
列に対してプッシュダウンできる述語の最大数。デフォルト値:-1、be.conf
ファイルの値が使用されることを示します。この変数が 0 より大きい値に設定されている場合、be.conf
の値は無視されます。
nested_mv_rewrite_max_level
クエリ書き換えに使用できるネストされたマテリアライズドビューの最大レベル。タイプ:INT。範囲:[1, +∞)。値が 1
の場合、ベーステーブルに作成されたマテリアライズドビューのみがクエリ書き換えに使用されます。デフォルト:3
。
net_buffer_length
MySQL クライアント互換性のために使用されます。実用的な使用法はありません。
net_read_timeout
MySQL クライアント互換性のために使用されます。実用的な使用法はありません。
net_write_timeout
MySQL クライアント互換性のために使用されます。実用的な使用法はありません。
new_planner_optimize_timeout
クエリオプティマイザーのタイムアウト期間。オプティマイザーがタイムアウトすると、エラーが返され、クエリが停止され、クエリパフォーマンスに影響を与えます。この変数をクエリに基づいて大きな値に設定するか、StarRocks の技術サポートに連絡してトラブルシューティングを行うことができます。タイムアウトは、クエリにジョインが多すぎる場合によく発生します。
デフォルト値:3000。単位:ms。
parallel_exchange_instance_num
上位ノードが実行プランで下位ノードからデータを受信するために使用する交換ノードの数を設定するために使用されます。デフォルト値は -1 で、交換ノードの数が下位ノードの実行インスタンスの数と等しいことを意味します。この変数が 0 より大きく、下位ノードの実行インスタンスの数より小さい場合、交換ノードの数は設定値と等しくなります。
分散クエリ実行プランでは、上位ノードには通常、下位ノードの実行インスタンスから異なる BEs 上でデータを受信するための 1 つ以上の交換ノードがあります。通常、交換ノードの数は下位ノードの実行インスタンスの数と等しいです。
集計クエリシナリオでは、集計後にデータ量が大幅に減少する場合、この変数を小さな値に変更してリソースオーバーヘッドを削減することができます。例として、重複キーテーブルを使用して集計クエリを実行する場合があります。
parallel_fragment_exec_instance_num
各 BE でノードをスキャンするために使用されるインスタンスの数を設定するために使用されます。デフォルト値は 1 です。
クエリプランは通常、スキャン範囲のセットを生成します。このデータは複数の BE ノードに分散されます。BE ノードは 1 つ以上のスキャン範囲を持ち、デフォルトでは、各 BE ノードのスキャン範囲のセットは 1 つの実行インスタンスによってのみ処理されます。マシンリソースが十分な場合、この変数を増やして、より多くの実行インスタンスがスキャン範囲を同時に処理できるようにすることで効率を向上させることができます。
スキャンインスタンスの数は、上位レベルの他の実行ノード(例:集計ノードやジョインノード)の数を決定します。したがって、クエリプラン実行全体の並行性が向上します。この変数を変更することで効率を向上させることができますが、値が大きいほど、CPU、メモリ、ディスク IO などのマシンリソースをより多く消費します。
performance_schema
MySQL JDBC バージョン 8.0.16 以降との互換性のために使用されます。実用的な使用法はありません。
prefer_compute_node
FEs がクエリ実行プランを CN ノードに配布するかどうかを指定します。有効な値:
- true: FEs がクエリ実行プランを CN ノードに配布することを示します。
- false: FEs がクエリ実行プランを CN ノードに配布しないことを示します。
pipeline_dop
パイプラインインスタンスの並行性で、クエリの並行性を調整するために使用されます。デフォルト値:0、各パイプラインインスタンスの並行性をシステムが自動的に調整することを示します。この変数を 0 より大きい値に設定することもできます。一般的には、物理 CPU コア数の半分の値を設定します。
query_cache_entry_max_bytes (2.5 以降)
パススルーモードをトリガーするしきい値。有効な値:0 から 9223372036854775807。クエリによってアクセスされる特定のタブレットの計算結果のバイト数または行数が query_cache_entry_max_bytes
または query_cache_entry_max_rows
で指定されたしきい値を超えると、クエリはパススルーモードに切り替わります。
query_cache_entry_max_rows (2.5 以降)
キャッシュできる行の上限。query_cache_entry_max_bytes
の説明を参照してください。デフォルト値:409600。
query_cache_agg_cardinality_limit (2.5 以降)
Query Cache における GROUP BY の基数の上限。GROUP BY によって生成される行がこの値を超える場合、Query Cache は有効になりません。デフォルト値:5000000。query_cache_entry_max_bytes
または query_cache_entry_max_rows
が 0 に設定されている場合、関連するタブレットから計算結果が生成されなくてもパススルーモードが使用されます。
query_cache_size (global)
MySQL クライアント互換性のために使用されます。実用的な使用法はありません。
query_cache_type
JDBC 接続プール C3P0 との互換性のために使用されます。実用的な使用法はありません。
query_mem_limit
各 BE ノードでのクエリのメモリ制限を設定するために使用されます。単位:バイト。デフォルト値は 0 で、制限がないことを意味します。この項目は Pipeline Engine が有効になった後にのみ有効です。
Memory Exceed Limit
エラーが発生した場合、この変数を増やしてみてください。
query_queue_concurrency_limit (global)
BE 上の同時クエリの上限。0
より大きい値に設定された場合にのみ有効です。デフォルト:0
。
query_queue_cpu_used_permille_limit (global)
BE 上の CPU 使用率のパーミル(CPU 使用率 * 1000)の上限。0
より大きい値に設定された場合にのみ有効です。デフォルト:0
。範囲:[0, 1000]
query_queue_max_queued_queries (global)
キュー内のクエリの上限。このしきい値に達すると、受信したクエリは拒否されます。0
より大きい値に設定された場合にのみ有効です。デフォルト:1024
。
query_queue_mem_used_pct_limit (global)
BE 上のメモリ使用率の上限。0
より大きい値に設定された場合にのみ有効です。デフォルト:0
。範囲:[0, 1]
query_queue_pending_timeout_second (global)
キュー内の保留中クエリの最大タイムアウト。このしきい値に達すると、対応するクエリは拒否されます。単位:秒。デフォルト:300
。
query_timeout
クエリのタイムアウトを「秒」で設定するために使用されます。この変数は、現在の接続のすべてのクエリ文および INSERT 文に影響を与えます。デフォルト値は 300 秒です。値の範囲:[1, 259200]。
rewrite_count_distinct_to_bitmap_hll
count distinct クエリを bitmap_union_count および hll_union_agg に書き換えるかどうかを決定するために使用されます。
runtime_filter_on_exchange_node
GRF が Exchange オペレーターを越えて下位レベルのオペレーターにプッシュダウンされた後、Exchange ノードに GRF を配置するかどうかを指定します。デフォルト値は false
で、GRF が Exchange オペレーターを越えて下位レベルのオペレーターにプッシュダウンされた後、Exchange ノードに GRF を配置しないことを意味します。これにより、GRF の重複使用が防止され、計算時間が短縮されます。
しかし、GRF の配信は「ベストを尽くす」プロセスです。下位レベルのオペレーターが GRF を受信できない場合、GRF が Exchange ノードに配置されていないと、データをフィルタリングできず、フィルターパフォーマンスが低下します。true
は、GRF が Exchange オペレーターを越えて下位レベルのオペレーターにプッシュダウンされた後でも、Exchange ノードに GRF を配置することを意味します。
runtime_join_filter_push_down_limit
Bloom フィルターのローカル RF が生成されるハッシュテーブルの最大行数。この値を超えると、ローカル RF は生成されません。この変数は、過度に長いローカル RF の生成を防ぎます。
値は整数です。デフォルト値:1024000。
SQL_AUTO_IS_NULL
JDBC 接続プール C3P0 との互換性のために使用されます。実用的な使用法はありません。
sql_mode
特定の SQL 方言に対応する SQL モードを指定するために使用されます。有効な値には以下が含まれます:
PIPES_AS_CONCAT
: パイプ記号|
を使用して文字列を連結します。例:select 'hello ' || 'world'
。ONLY_FULL_GROUP_BY
(デフォルト): SELECT リストには GROUP BY 列または集計関数のみを含めることができます。ALLOW_THROW_EXCEPTION
: 型変換が失敗した場合に NULL の代わりにエラーを返します。FORBID_INVALID_DATE
: 無効な日付を禁止します。MODE_DOUBLE_LITERAL
: 浮動小数点型を DECIMAL ではなく DOUBLE として解釈します。SORT_NULLS_LAST
: ソート後に NULL 値を最後に配置します。ERROR_IF_OVERFLOW
: 算術オーバーフローの場合に NULL の代わりにエラーを返します。現在、このオプションは DECIMAL データ型のみサポートしています。
1 つの SQL モードのみを設定できます。例:
set sql_mode = 'PIPES_AS_CONCAT';
または、複数のモードを一度に設定することもできます。例:
set sql_mode = 'PIPES_AS_CONCAT,ERROR_IF_OVERFLOW,GROUP_CONCAT_LEGACY';
sql_safe_updates
MySQL クライアント互換性のために使用されます。実用的な使用法はありません。
sql_select_limit
MySQL クライアント互換性のために使用されます。実用的な使用法はありません。
storage_engine
StarRocks がサポートするエンジンの種類:
- olap: StarRocks システム所有のエンジン。
- mysql: MySQL 外部テーブル。
- broker: ブローカープログラムを通じて外部テーブルにアクセスします。
- elasticsearch または es: Elasticsearch 外部テーブル。
- hive: Hive 外部テーブル。
- iceberg: Iceberg 外部テーブル、v2.1 からサポート。
- hudi: Hudi 外部テーブル、v2.2 からサポート。
- jdbc: JDBC 互換データベースの外部テーブル、v2.3 からサポート。
streaming_preaggregation_mode
GROUP BY の最初のフェーズの事前集計モードを指定するために使用されます。最初のフェーズでの事前集計効果が満足できない場合、ストリーミングモードを使用できます。このモードでは、データをストリーミング先に送信する前に簡単なデータシリアル化を行います。有効な値:
auto
: システムは最初にローカル事前集計を試みます。効果が満足できない場合、ストリーミングモードに切り替えます。これがデフォルト値です。force_preaggregation
: システムは直接ローカル事前集計を行います。force_streaming
: システムは直接ストリーミングを行います。
system_time_zone
現在のシステムのタイムゾーンを表示するために使用されます。変更できません。
time_zone
現在のセッションのタイムゾーンを設定するために使用されます。タイムゾーンは特定の時間関数の結果に影響を与える可能性があります。
tx_isolation
MySQL クライアント互換性のために使用されます。実用的な使用法はありません。
use_compute_nodes
使用できる CN ノードの最大数。この変数は prefer_compute_node=true
の場合に有効です。有効な値:
-1
: すべての CN ノードが使用されることを示します。0
: CN ノードが使用されないことを示します。
use_v2_rollup
セグメント v2 ストレージ形式のロールアップインデックスを使用してデータを取得するためのクエリを制御するために使用されます。この変数は、セグメント v2 でオンラインになる際の検証に使用されます。他のケースでは推奨されません。
vectorized_engine_enable (v2.4 以降廃止)
クエリを実行するためにベクトル化エンジンを使用するかどうかを制御するために使用されます。true
の場合、ベクトル化エンジンが使用され、そうでない場合は非ベクトル化エンジンが使用されます。デフォルトは true
です。この機能は v2.4 以降デフォルトで有効になっているため、廃止されています。
version (global)
クライアントに返される MySQL サーバーバージョン。
version_comment (global)
StarRocks のバージョン。変更できません。
wait_timeout
非対話型接続でのアクティビティを待機する秒数。この時間が経過すると、StarRocks は接続をアクティブに閉じます。クライアントがこの時間内に StarRocks と対話しない場合、StarRocks は接続をアクティブに閉じます。
単位:秒。デフォルト値:28800(8 時間)。