システム変数
StarRocks は、多くのシステム変数を提供しており、要件に応じて設定および変更できます。このセクションでは、StarRocks がサポートする変数について説明します。これらの変数の設定は、MySQL クライアントで SHOW VARIABLES コマンドを実行することで確認できます。また、SET コマンドを使用して、変数を動的に設定または変更することもできます。これらの変数は、システム全体でグローバルに、現在のセッションのみで、または単一のクエリ文でのみ有効にすることができます。
StarRocks の変数は MySQL の変数セットを参照していますが、一部の変数は MySQL クライアントプロトコルと互換性があるだけで、MySQL データベースでは機能しません。
注意
どのユーザーも SHOW VARIABLES を実行し、セッションレベルで変数を有効にする権限を持っています。ただし、SYSTEM レベルの 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 query_mem_limit = 137438953472;
SET forward_to_master = true;
SET time_zone = "Asia/Shanghai";
SET GLOBAL <var_name> = xxx;
で設定された変数は、グローバルに有効です。例:
SET GLOBAL query_mem_limit = 137438953472;
以下の変数はグローバルにのみ有効です。単一のセッションで有効にすることはできません。これらの変数を単一のセッションで設定しようとすると(SET <var_name> = xxx;
)、エラーが返されます。
- activate_all_roles_on_login
- 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 query_mem_limit = 10 * 1024 * 1024 * 1024;
SET forward_to_master = concat('tr', 'u', 'e');
単一のクエリ文で変数を設定
特定のクエリに対して変数を設定する必要がある場合があります。SET_VAR
ヒントを使用することで、単一のステートメント内でのみ有効なセッション変数を設定できます。
StarRocks は、以下のステートメントで SET_VAR
を使用することをサポートしています。
- SELECT
- INSERT(v3.1.12 および v3.2.0 以降)
- UPDATE(v3.1.12 および v3.2.0 以降)
- DELETE(v3.1.12 および v3.2.0 以降)
SET_VAR
は、上記のキーワードの後にのみ配置され、/*+...*/
で囲まれます。
例:
SELECT /*+ SET_VAR(query_mem_limit = 8589934592) */ name FROM people ORDER BY name;
SELECT /*+ SET_VAR(query_timeout = 1) */ sleep(3);
UPDATE /*+ SET_VAR(query_timeout=100) */ tbl SET c1 = 2 WHERE c1 = 1;
DELETE /*+ SET_VAR(query_mem_limit = 8589934592) */
FROM my_table PARTITION p1
WHERE k1 = 3;
INSERT /*+ SET_VAR(query_timeout = 10000000) */
INTO insert_wiki_edit
SELECT * FROM FILES(
"path" = "s3://inserttest/parquet/insert_wiki_edit_append.parquet",
"format" = "parquet",
"aws.s3.access_key" = "XXXXXXXXXX",
"aws.s3.secret_key" = "YYYYYYYYYY",
"aws.s3.region" = "us-west-2"
);
単一のステートメントで複数の変数を設定することもできます。例:
SELECT /*+ SET_VAR
(
exec_mem_limit = 515396075520,
query_timeout=10000000,
batch_size=4096,
parallel_fragment_exec_instance_num=32
)
*/ * FROM TABLE;
変数の説明
変数は アルファベット順 に説明されています。global
ラベルが付いた変数はグローバルにのみ有効です。他の変数は、グローバルまたは単一のセッションで有効にすることができます。
activate_all_roles_on_login (global)
- 説明: StarRocks ユーザーが StarRocks クラスタに接続する際に、すべてのロール(デフォルトロールおよび付与されたロールを含む)を有効にするかどうか。
- 有効にすると(
true
)、ユーザーのすべてのロールがログイン時に有効になります。これは SET DEFAULT ROLE で設定されたロールよりも優先されます。 - 無効にすると(
false
)、SET DEFAULT ROLE で設定されたロールが有効になります。
- 有効にすると(
- デフォルト: false
- 導入バージョン: v3.0
セッションで割り当てられたロールを有効にしたい場合は、SET ROLE コマンドを使用してください。
auto_increment_increment
MySQL クライアント互換性のために使用されます。実際の使用法はありません。
autocommit
MySQL クライアント互換性のために使用されます。実際の使用法はありません。
chunk_size
- 説明: クエリ実行中に各ノードが送信する単一パケットの行数を指定するために使用されます。デフォルトは 4096 で、ソースノードによって生成されたデータの 4096 行ごとにパッケージ化され、宛先ノードに送信されます。行数が多いほど、大量データシナリオでのクエリスループットが向上しますが、小量データシナリオでのクエリ遅延が増加する可能性があります。また、クエリのメモリオーバーヘッドが増加する可能性があります。
batch_size
を 1024 から 4096 の間に設定することをお勧めします。 - デフォルト: 4096
big_query_profile_threshold
-
説明: 大規模クエリのしきい値を設定するために使用されます。セッション変数
enable_profile
がfalse
に設定され、クエリにかかる時間が変数big_query_profile_threshold
で指定されたしきい値を超える場合、そのクエリのプロファイルが生成されます。注: バージョン v3.1.5 から v3.1.7、および v3.2.0 から v3.2.2 では、大規模クエリのしきい値を設定するために
big_query_profile_second_threshold
を導入しました。バージョン v3.1.8、v3.2.3、およびそれ以降のリリースでは、より柔軟な設定オプションを提供するために、このパラメータはbig_query_profile_threshold
に置き換えられました。 -
デフォルト: 0
-
単位: 秒
-
データ型: 文字列
-
導入バージョン: v3.1
cbo_decimal_cast_string_strict
- 説明: CBO が DECIMAL 型から STRING 型にデータを変換する方法を制御します。この変数が
true
に設定されている場合、v2.5.x 以降のバージョンで組み込まれたロジックが優先され、システムは厳密な変換を実施します(つまり、生成された文字列を切り捨て、スケール長に基づいて 0 を埋めます)。この変数がfalse
に設定されている場合、v2.5.x より前のバージョンで組み込まれたロジックが優先され、システムはすべての有効な数字を処理して文字列を生成します。 - デフォルト: true
- 導入バージョン: v2.5.14
cbo_enable_low_cardinality_optimize
- 説明: 低基数最適化を有効にするかどうか。この機能を有効にすると、STRING 列のクエリパフォーマンスが約3倍向上します。
- デフォルト: true
cbo_eq_base_type
- 説明: DECIMAL データと STRING データの間のデータ比較に使用されるデータ型を指定します。デフォルト値は
VARCHAR
で、DECIMAL も有効な値です。この変数は=
および!=
比較にのみ有効です。 - データ型: 文字列
- 導入バージョン: v2.5.14
cbo_materialized_view_rewrite_related_mvs_limit
- 説明: クエリプランニング中に許可される候補マテリアライズドビューの最大数を指定します。
- デフォルト: 64
- データ型: 整数
- 導入バージョン: v3.1.9, v3.2.5
enable_sync_materialized_view_rewrite
- 説明: 同期マテリアライズドビューに基づくクエリの書き換えを有効にするかどうか。
- デフォルト: true
- 導入バージョン: v3.1.11, v3.2.5
query_including_mv_names
- 説明: クエリ実行に含める非同期マテリアライズドビューの名前を指定します。この変数を使用して、候補マテリアライズドビューの数を制限し、オプティマイザでのクエリ書き換えパフォーマンスを向上させることができます。この項目は
query_excluding_mv_names
よりも優先されます。 - デフォルト: 空
- データ型: 文字列
- 導入バージョン: v3.1.11, v3.2.5
query_excluding_mv_names(
- 説明: クエリ実行から除外する非同期マテリアライズドビューの名前を指定します。この変数を使用して、候補マテリアライズドビューの数を制限し、オプティマイザでのクエリ書き換え時間を短縮することができます。
query_including_mv_names
はこの項目よりも優先されます。 - デフォルト: 空
- データ型: 文字列
- 導入バージョン: v3.1.11, v3.2.5
optimizer_materialized_view_timelimit
- 説明: マテリアライズドビュー書き換えルールが消費できる最大時間を指定します。しきい値に達すると、このルールはクエリ書き換えに使用されません。
- デフォルト: 1000
- 単位: ms
- 導入バージョン: v3.1.9, v3.2.5
enable_view_based_mv_rewrite
- 説明: ビューに基づくマテリアライズドビューのクエリ書き換えを有効にするかどうか。この項目が
true
に設定されている場合、ビューは統一ノードとして使用され、クエリはより良いパフォーマンスのために自身に対して書き換えられます。この項目がfalse
に設定されている場合、システムはビューに対するクエリを物理テーブルまたはマテリアライズドビューに対するクエリに書き換え、それから書き換えを行います。 - デフォルト: false
- 導入バージョン: v3.1.9, v3.2.5, v3.3.0
enable_materialized_view_union_rewrite
- 説明: マテリアライズドビューのユニオン書き換えを有効にするかどうか。この項目が
true
に設定されている場合、システムはマテリアライズドビューの述語がクエリの述語を満たせない場合に、UNION ALL を使用して述語を補完しようとします。 - デフォルト: true
- 導入バージョン: v2.5.20, v3.1.9, v3.2.7, v3.3.0
enable_materialized_view_plan_cache
- 説明: マテリアライズドビューのプランキャッシュを有効にするかどうか。これにより、マテリアライズドビューの自動書き換えパフォーマンスが最適化されます。
true
に設定すると、有効になります。 - デフォルト: true
- 導入バージョン: v2.5.13, v3.0.7, v3.1.4, v3.2.0, v3.3.0
follower_query_forward_mode
-
説明: クエリステートメントがどの FE ノードにルーティングされるかを指定します。
-
有効な値:
default
: クエリステートメントを Leader FE または Follower FEs にルーティングします。これは Follower のリプレイ進行状況に依存します。Follower FE ノードがリプレイ進行状況を完了していない場合、クエリは Leader FE ノードにルーティングされます。リプレイ進行状況が完了している場合、クエリは優先的に Follower FE ノードにルーティングされます。leader
: クエリステートメントを Leader FE にルーティングします。follower
: クエリステートメントを Follower FE にルーティングします。
-
-
デフォルト: default
-
データ型: 文字列
-
導入バージョン: v2.5.20, v3.1.9, v3.2.7, v3.3.0
character_set_database (global)
- データ型: 文字列 StarRocks がサポートする文字セット。UTF8 (
utf8
) のみがサポートされています。 - デフォルト: utf8
- データ型: 文字列
connector_io_tasks_per_scan_operator
- 説明: 外部テーブルクエリ中にスキャンオペレーターが発行できる最大同時 I/O タスク数。値は整数です。現在、StarRocks は外部テーブルをクエリする際に同時 I/O タスク数を適応的に調整できます。この機能は、デフォルトで有効になっている変数
enable_connector_adaptive_io_tasks
によって制御されます。 - デフォルト: 16
- データ型: 整数
- 導入バージョン: v2.5
count_distinct_column_buckets
- 説明: グループバイカウントディスティンクトクエリにおける COUNT DISTINCT 列のバケット数。この変数は
enable_distinct_column_bucketization
がtrue
に設定されている場合にのみ有効です。 - デフォルト: 1024
- 導入バージョン: v2.5
default_rowset_type (global)
コンピューティングノードのストレージエンジンで使用されるデフォルトのストレージ形式を設定するために使用されます。現在サポートされているストレージ形式は alpha
と beta
です。
default_table_compression
-
説明: テーブルストレージのデフォルト圧縮アルゴリズム。サポートされている圧縮アルゴリズムは
snappy, lz4, zlib, zstd
です。CREATE TABLE ステートメントで
compression
プロパティを指定した場合、compression
で指定された圧縮アルゴリズムが有効になります。 -
デフォルト: lz4_frame
-
導入バージョン: v3.0
disable_colocate_join
- 説明: Colocation Join を有効にするかどうかを制御するために使用されます。デフォルト値は
false
で、この機能は有効です。この機能が無効になっている場合、クエリプランニングは Colocation Join を実行しようとしません。 - デフォルト: false
disable_streaming_preaggregations
ストリーミング事前集計を有効にするために使用されます。デフォルト値は false
で、これは有効です。
div_precision_increment
MySQL クライアント互換性のために使用されます。実際の使用法はありません。
enable_connector_adaptive_io_tasks
- 説明: 外部テーブルをクエリする際に同時 I/O タスク数を適応的に調整するかどうか。デフォルト値は
true
です。この機能が有効でない場合、変数connector_io_tasks_per_scan_operator
を使用して同時 I/O タスク数を手動で設定できます。 - デフォルト: true
- 導入バージョン: v2.5
enable_distinct_column_bucketization
-
説明: グループバイカウントディスティンクトクエリにおける COUNT DISTINCT 列のバケット化を有効にするかどうか。クエリ
select a, count(distinct b) from t group by a;
を例にとります。GROUP BY 列a
が低基数列で、COUNT DISTINCT 列b
が高基数列でデータの偏りが激しい場合、パフォーマンスボトルネックが発生します。この状況では、COUNT DISTINCT 列のデータを複数のバケットに分割してデータを均衡させ、データの偏りを防ぐことができます。この変数は、変数count_distinct_column_buckets
と一緒に使用する必要があります。また、クエリに
skew
ヒントを追加することで、COUNT DISTINCT 列のバケット化を有効にすることもできます。例:select a,count(distinct [skew] b) from t group by a;
。 -
デフォルト: false、この機能は無効です。
-
導入バージョン: v2.5
enable_group_level_query_queue (global)
- 説明: リソースグループレベルの query queue を有効にするかどうか。
- デフォルト: false、この機能は無効です。
- 導入バージョン: v3.1.4
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_rule_based_materialized_view_rewrite
- 説明: ルールベースのマテリアライズドビュークエリ書き換えを有効にするかどうかを制御します。この変数は主に単一テーブルクエリ書き換えに使用されます。
- デフォルト: true
- データ型: ブール
- 導入バージョン: v2.5
enable_spill
- 説明: 中間結果のスピリングを有効にするかどうか。デフォルト:
false
。true
に設定すると、StarRocks はクエリ中の集計、ソート、またはジョインオペレーターを処理する際にメモリ使用量を削減するために中間結果をディスクにスピルします。 - デフォルト: false
- 導入バージョン: v3.0
enable_strict_order_by
- 説明: ORDER BY で参照される列名が曖昧かどうかをチェックするために使用されます。この変数がデフォルト値
TRUE
に設定されている場合、次のようなクエリパターンに対してエラーが報告されます: クエリの異なる式で重複するエイリアスが使用され、このエイリアスが ORDER BY のソートフィールドでもある場合。例:select distinct t1.* from tbl1 t1 order by t1.k1;
。ロジックは v2.3 およびそれ以前と同じです。この変数がFALSE
に設定されている場合、緩やかな重複排除メカニズムが使用され、これらのクエリは有効な SQL クエリとして処理されます。 - デフォルト: true
- 導入バージョン: v2.5.18 および v3.1.7
enable_profile
-
説明: クエリのプロファイルを分析のために送信するかどうかを指定します。デフォルト値は
false
で、プロファイルは必要ありません。デフォルトでは、クエリエラーが BE で発生した場合にのみプロファイルが FE に送信されます。プロファイルの送信はネットワークオーバーヘッドを引き起こし、したがって高い同時実行性に影響を与えます。
クエリのプロファイルを分析する必要がある場合、この変数を
true
に設定できます。クエリが完了した後、現在接続されている FE のウェブページ(アドレス:fe_host:fe_http_port/query
)でプロファイルを表示できます。このページには、enable_profile
がオンになっている最新の100クエリのプロファイルが表示されます。 -
デフォルト: false
enable_query_queue_load (global)
- 説明: ロードタスクのためのクエリキューを有効にするためのブール値。
- デフォルト: false
enable_query_queue_select (global)
- 説明: SELECT クエリのためのクエリキューを有効にするかどうか。
- デフォルト: false
enable_query_queue_statistic (global)
- 説明: 統計クエリのためのクエリキューを有効にするかどうか。
- デフォルト: false
enable_query_tablet_affinity
-
説明: 同じタブレットに対する複数のクエリを固定レプリカに向けるかどうかを制御するためのブール値。
クエリするテーブルに大量のタブレットがあるシナリオでは、この機能はクエリパフォーマンスを大幅に向上させます。なぜなら、タブレットのメタ情報とデータがメモリにより迅速にキャッシュされるからです。
しかし、ホットスポットタブレットがある場合、この機能はクエリパフォーマンスを低下させる可能性があります。なぜなら、クエリを同じ BE に向けることで、高い同時実行性 シナリオで複数の BE のリソースを十分に活用できなくなるからです。
-
デフォルト: false、システムは各クエリのためにレプリカを選択します。
-
導入バージョン: v2.5.6, v3.0.8, v3.1.4, および v3.2.0
enable_lake_tablet_internal_parallel
- 説明: 共有データクラスタ内のクラウドネイティブテーブルのための並列スキャンを有効にするかどうか。
- デフォルト: false
- データ型: ブール
- 導入バージョン: v3.3.0
tablet_internal_parallel_mode
- 説明: タブレットの内部並列スキャン戦略。有効な値:
auto
: BE または CN ノードでスキャンされるタブレットの数が並列度 (DOP) より少ない場合、システムはタブレットの推定サイズに基づいて並列スキャンが必要かどうかを自動的に判断します。force_split
: タブレットを強制的に分割し、並列スキャンを実行します。
- デフォルト: auto
- データ型: 文字列
- 導入バージョン: 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_tablet_internal_parallel
- 説明: タブレットの適応並列スキャンを有効にするかどうか。この機能が有効になると、複数のスレッドを使用してセグメントごとに1つのタブレットをスキャンし、スキャンの並行性を高めます。
- デフォルト: true
- 導入バージョン: v2.3
enable_query_cache
- 説明: Query Cache 機能を有効にするかどうかを指定します。有効な値: true と false。
true
はこの機能を有効にし、false
はこの機能を無効にします。この機能が有効な場合、Query Cache のアプリケーションシナリオで指定された条件を満たすクエリに対してのみ機能します。 - デフォルト: false
- 導入バージョン: v2.5
enable_adaptive_sink_dop
- 説明: データロードのための適応並列性を有効にするかどうかを指定します。この機能が有効になると、システムは INSERT INTO および Broker Load ジョブのロード並列性を自動的に設定します。これは
pipeline_dop
のメカニズムと同等です。新しくデプロイされた v2.5 StarRocks クラスタでは、デフォルトで値はtrue
です。v2.4 からアップグレードされた v2.5 クラスタでは、値はfalse
です。 - デフォルト: false
- 導入バージョン: v2.5
enable_pipeline_engine
- 説明: パイプライン実行エンジンを有効にするかどうかを指定します。
true
は有効を示し、false
は無効を示します。デフォルト値:true
。 - デフォルト: true
enable_sort_aggregate
- 説明: ソートされたストリーミングを有効にするかどうかを指定します。
true
はソートされたストリーミングが有効で、データストリーム内のデータをソートします。 - デフォルト: false
- 導入バージョン: v2.5
enable_global_runtime_filter
グローバルランタイムフィルター(RF)を有効にするかどうか。RF はランタイムでデータをフィルタリングします。データフィルタリングは通常、ジョインステージで発生します。マルチテーブルジョイン中、述語プッシュダウンなどの最適化が使用されてデータをフィルタリングし、ジョインのスキャン行数とシャッフルステージの 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 が有効になり、パーティション by 句に
multi-column
を含みます。
event_scheduler
MySQL クライアント互換性のために使用されます。実際の使用法はありません。
enable_strict_type
- 説明: すべての複合述語および WHERE 句内のすべての式に対して暗黙の変換を許可するかどうか。
- デフォルト: false
- 導入バージョン: v3.1
force_streaming_aggregate
集計ノードが計算のためにストリーミング集計を有効にするかどうかを制御するために使用されます。デフォルト値は false
で、この機能は有効ではありません。
forward_to_leader
一部のコマンドが実行のために leader FE に転送されるかどうかを指定するために使用されます。エイリアス: forward_to_master
。デフォルト値は false
で、leader FE に転送されません。StarRocks クラスタには複数の FE があり、そのうちの1つが leader FE です。通常、ユーザーは任意の FE に接続してフル機能の操作を行うことができます。ただし、一部の情報は leader FE のみで利用可能です。
例えば、SHOW BACKENDS コマンドが leader FE に転送されない場合、ノードが生きているかどうかなどの基本情報のみを表示できます。leader FE に転送することで、ノードの起動時間や最終ハートビート時間などの詳細情報を取得できます。
この変数に影響を受けるコマンドは次の通りです:
-
SHOW FRONTENDS: leader FE に転送することで、ユーザーは最終ハートビートメッセージを表示できます。
-
SHOW BACKENDS: leader FE に転送することで、ユーザーは起動時間、最終ハートビート情報、ディスク容量情報を表示できます。
-
SHOW BROKER: leader FE に転送することで、ユーザーは起動時間と最終ハートビート情報を表示できます。
-
SHOW TABLET
-
ADMIN SHOW REPLICA DISTRIBUTION
-
ADMIN SHOW REPLICA STATUS: leader FE に転送することで、ユーザーは leader FE のメタデータに保存されているタブレット情報を表示できます。通常、タブレット情報は異なる FE のメタデータで同じであるべきです。エラーが発生した場合、この方法を使用して現在の FE と leader FE のメタデータを比較できます。
-
Show PROC: leader FE に転送することで、ユーザーはメタデータに保存されている PROC 情報を表示できます。これは主にメタデータの比較に使用されます。
group_concat_max_len
- 説明: group_concat 関数によって返される文字列の最大長。
- デフォルト: 1024
- 最小値: 4
- 単位: 文字
- データ型: Long
hash_join_push_down_right_table
- 説明: ジョインクエリで右テーブルに対するフィルタ条件を使用して左テーブルのデータをフィルタリングできるかどうかを制御するために使用されます。これにより、クエリ中に処理する必要のあるデータ量を削減できます。
デフォルト:
true
は操作が許可され、システムが左テーブルをフィルタリングできるかどうかを決定します。false
は操作が無効であることを示します。デフォルト値はtrue
です。
init_connect (global)
MySQL クライアント互換性のために使用されます。実際の使用法はありません。
interactive_timeout
MySQL クライアント互換性のために使用されます。実際の使用法はありません。
io_tasks_per_scan_operator
- 説明: スキャンオペレーターが発行できる同時 I/O タスクの数。HDFS や S3 などのリモートストレージシステムにアクセスしたいが、レイテンシが高い場合、この値を増やします。ただし、値が大きいとメモリ消費が増えます。
- デフォルト: 4
- データ型: 整数
- 導入バージョン: v2.5
language (global)
MySQL クライアント互換性のために使用されます。実際の使用法はありません。
license (global)
- 説明: StarRocks のライセンスを表示します。
- デフォルト: Apache License 2.0
load_mem_limit
インポート操作のメモリ制限を指定します。デフォルト値は 0 で、この変数は使用されず、query_mem_limit
が代わりに使用されます。
この変数は、クエリとインポートの両方を含む INSERT
操作にのみ使用されます。ユーザーがこの変数を設定しない場合、クエリとインポートのメモリ制限は exec_mem_limit
に設定されます。それ以外の場合、クエリのメモリ制限は exec_mem_limit
に設定され、インポートのメモリ制限は load_mem_limit
に設定されます。
他のインポート方法、例えば BROKER LOAD
、STREAM LOAD
は、メモリ制限に exec_mem_limit
を使用します。
log_rejected_record_num (v3.1 以降)
ログに記録できる不適格データ行の最大数を指定します。有効な値: 0
、-1
、および任意の非ゼロ正の整数。デフォルト値: 0
。
- 値
0
は、フィルタリングされたデータ行がログに記録されないことを指定します。 - 値
-1
は、フィルタリングされたすべてのデータ行がログに記録されることを指定します。 n
などの非ゼロ正の整数は、フィルタリングされたデータ行が各 BE で最大n
行までログに記録されることを指定します。
lower_case_table_names (global)
MySQL クライアント互換性のために使用されます。実際の使用法はありません。StarRocks のテーブル名は大文字小文字を区別します。
max_allowed_packet
- 説明: JDBC 接続プール C3P0 との互換性のために使用されます。この変数は、クライアントとサーバー間で送信できるパケットの最大サイズを指定します。
- デフォルト: 33554432 (32 MB)。クライアントが "PacketTooBigException" を報告する場合、この値を上げることができます。
- 単位: バイト
- データ型: 整数
max_pushdown_conditions_per_column
- 説明: 列に対してプッシュダウンできる述語の最大数。
- デフォルト: -1、
be.conf
ファイルの値が使用されることを示します。この変数が 0 より大きい値に設定されている場合、be.conf
の値は無視されます。 - データ型: 整数
max_scan_key_num
- 説明: 各クエリによってセグメント化されるスキャンキーの最大数。
- デフォルト: -1、
be.conf
ファイルの値が使用されることを示します。この変数が 0 より大きい値に設定されている場合、be.conf
の値は無視されます。
nested_mv_rewrite_max_level
- 説明: クエリ書き換えに使用できるネストされたマテリアライズドビューの最大レベル。
- 値の範囲: [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 より大きく、下位ノードの実行インスタンスの数より小さい値に設定されている場合、エクスチェンジノードの数は設定された値と等しくなります。
分散クエリ実行プランでは、上位ノードには通常、下位ノードの実行インスタンスからデータを受信するための1つ以上のエクスチェンジノードがあります。通常、エクスチェンジノードの数は下位ノードの実行インスタンスの数と等しいです。
集計クエリシナリオでは、集計後にデータ量が大幅に減少する場合、この変数を小さい値に変更してリソースオーバーヘッドを削減することを試みることができます。例として、重複キーテーブルを使用して集計クエリを実行することが挙げられます。
parallel_fragment_exec_instance_num
各 BE でノードをスキャンするために使用されるインスタンスの数を設定するために使用されます。デフォルト値は 1 です。
クエリプランは通常、一連のスキャン範囲を生成します。このデータは複数の BE ノードに分散されています。BE ノードには1つ以上のスキャン範囲があり、デフォルトでは、各 BE ノードのスキャン範囲セットは1つの実行インスタンスによってのみ処理されます。マシンリソースが十分な場合、この変数を増やして、より多くの実行インスタンスが効率のために同時にスキャン範囲を処理できるようにすることができます。
スキャンインスタンスの数は、上位レベルの他の実行ノード(集計ノードやジョインノードなど)の数を決定します。したがって、クエリプラン実行全体の並行性を高めます。この変数を変更することで効率を向上させることができますが、値が大きいと CPU、メモリ、ディスク IO などのマシンリソースをより多く消費します。
partial_update_mode
-
説明: 部分更新のモードを制御するために使用されます。有効な値:
auto
(デフォルト): システムは UPDATE ステートメントと関与する列を分析して部分更新のモードを自動的に決定します。column
: 部分更新にカラムモードを使用します。これは、少数の列と多数の行を含む部分更新に特に適しています。
詳細については、UPDATE を参照してください。
-
デフォルト: auto
-
導入バージョン: v3.1
performance_schema (global)
MySQL JDBC バージョン 8.0.16 以降との互換性のために使用されます。実際の使用法はありません。
prefer_compute_node
- 説明: FEs がクエリ実行プランを CN ノードに配布するかどうかを指定します。有効な値:
true
: FEs がクエリ実行プランを CN ノードに配布することを示します。false
: FEs がクエリ実行プランを CN ノードに配布しないことを示します。
- デフォルト: false
- 導入バージョン: v2.4
pipeline_dop
-
説明: パイプラインインスタンスの並行性で、クエリの並行性を調整するために使用されます。デフォルト値: 0、これはシステムが各パイプラインインスタンスの並行性を自動的に調整することを示します。この変数を 0 より大きい値に設定することもできます。一般的に、物理 CPU コア数の半分の値に設定します。
v3.0 以降、StarRocks はクエリの並行性に基づいてこの変数を適応的に調整します。
-
デフォルト: 0
-
データ型: 整数
pipeline_profile_level
-
説明: クエリプロファイルのレベルを制御します。クエリプロファイルには通常、フラグメント、フラグメントインスタンス、パイプライン、パイプラインドライバー、オペレーターの5つのレイヤーがあります。異なるレベルはプロファイルの異なる詳細を提供します:
- 0: StarRocks はプロファイルのメトリクスを結合し、いくつかのコアメトリクスのみを表示します。
- 1: デフォルト値。StarRocks はプロファイルを簡略化し、プロファイルのレイヤーを減らすためにメトリクスを結合します。
- 2: StarRocks はプロファイルのすべてのレイヤーを保持します。このシナリオでは、特に SQL クエリが複雑な場合、プロファイルサイズが大きくなります。この値は推奨されません。
-
デフォルト: 1
-
データ型: 整数
query_cache_entry_max_bytes
- 説明: パススルーモードをトリガーするしきい値。特定のタブレットによってアクセスされるクエリの計算結果のバイト数または行数が
query_cache_entry_max_bytes
またはquery_cache_entry_max_rows
で指定されたしきい値を超えると、クエリはパススルーモードに切り替わります。 - 有効な値: 0 から 9223372036854775807
- デフォルト: 4194304
- 単位: バイト
- 導入バージョン: v2.5
query_cache_entry_max_rows
- 説明: キャッシュできる行の上限。
query_cache_entry_max_bytes
の説明を参照してください。デフォルト値: 。 - デフォルト: 409600
- 導入バージョン: v2.5
query_cache_agg_cardinality_limit
- 説明: Query Cache における GROUP BY の基数の上限。GROUP BY によって生成される行がこの値を超える場合、Query Cache は有効になりません。デフォルト値: 5000000。
query_cache_entry_max_bytes
またはquery_cache_entry_max_rows
が 0 に設定されている場合、関与するタブレットから計算結果が生成されていない場合でもパススルーモードが使用されます。 - デフォルト: 5000000
- データ型: Long
- 導入バージョン: v2.5
query_cache_size (global)
MySQL クライアント互換性のために使用されます。実際の使用法はありません。
query_cache_type
JDBC 接続プール C3P0 との互換性のために使用されます。実際の使用法はありません。
query_mem_limit
- 説明: 各 BE ノードでのクエリのメモリ制限を設定するために使用されます。デフォルト値は 0 で、これは制限がないことを意味します。この項目はパイプラインエンジンが有効になった後にのみ有効です。
Memory Exceed Limit
エラーが発生した場合、この変数を増やすことを試みることができます。0
に設定すると、制限が課されないことを示します。 - デフォルト: 0
- 単位: バイト
query_queue_concurrency_limit (global)
- 説明: BE 上の同時クエリの上限。
0
より大きい値に設定された場合にのみ有効です。0
に設定すると、制限が課されないことを示します。 - デフォルト: 0
- データ型: 整数
query_queue_cpu_used_permille_limit (global)
- 説明: BE 上の CPU 使用率のパーミル(CPU 使用率 * 1000)の上限。
0
より大きい値に設定された場合にのみ有効です。0
に設定すると、制限が課されないことを示します。 - 値の範囲: [0, 1000]
- デフォルト:
0
query_queue_max_queued_queries (global)
- 説明: キュー内のクエリの上限。このしきい値に達すると、受信クエリは拒否されます。
0
より大きい値に設定された場合にのみ有効です。0
に設定すると、制限が課されないことを示します。 - デフォルト:
1024
query_queue_mem_used_pct_limit (global)
- 説明: BE 上のメモリ使用率の上限。
0
より大きい値に設定された場合にのみ有効です。0
に設定すると、制限が課されないことを示します。 - 値の範囲: [0, 1]
- デフォルト: 0
query_queue_pending_timeout_second (global)
- 説明: キュー内の保留中クエリの最大タイムアウト。このしきい値に達すると、対応するクエリは拒否されます。
- デフォルト: 300
- 単位: 秒
query_timeout
- 説明: クエリのタイムアウトを「秒」で設定するために使用されます。この変数は、現在の接続のすべてのクエリステートメント、および INSERT ステートメントに影響を与えます。デフォルト値は 300 秒です。
- 値の範囲: [1, 259200]
- デフォルト: 300
- データ型: 整数
- 単位: 秒
range_pruner_max_predicate
- 説明: 範囲パーティションプルーニングに使用できる IN 述語の最大数。デフォルト値: 100。100 より大きい値は、システムがすべてのタブレットをスキャンする可能性があり、クエリパフォーマンスを損なう可能性があります。
- デフォルト: 100
- 導入バージョン: v3.0
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 が Exchange ノードに配置されていないと、データがフィルタリングされず、フィルタリングパフォーマンスが損なわれます。
true
は、GRF が Exchange オペレーターを介して下位オペレーターにプッシュダウンされた後でも、Exchange ノードに配置されることを意味します。 -
デフォルト: false
runtime_join_filter_push_down_limit
- 説明: Bloom フィルターローカル RF が生成されるハッシュテーブルに許可される最大行数。この値を超えると、ローカル RF は生成されません。この変数は、過度に長いローカル RF の生成を防ぎます。
- デフォルト: 1024000
- データ型: 整数
runtime_profile_report_interval
- 説明: ランタイムプロファイルが報告される時間間隔。
- デフォルト: 10
- 単位: 秒
- データ型: 整数
- 導入バージョン: v3.1.0
spill_mode (3.0 以降)
中間結果スピリングの実行モード。有効な値:
auto
: メモリ使用量のしきい値に達したときにスピリングが自動的にトリガーされます。force
: StarRocks はメモリ使用量に関係なく、すべての関連オペレーターに対してスピリングを強制的に実行します。
この変数は、変数 enable_spill
が true
に設定されている場合にのみ有効です。
SQL_AUTO_IS_NULL
JDBC 接続プール C3P0 との互換性のために使用されます。実際の使用法はありません。
sql_dialect
-
説明: 使用される SQL 方言。例えば、
set sql_dialect = 'trino';
コマンドを実行して SQL 方言を Trino に設定すると、クエリで Trino 固有の SQL 構文と関数を使用できます。注意
StarRocks を Trino 方言で使用するように設定した後、クエリ内の識別子はデフォルトで大文字小文字を区別しません。したがって、データベースとテーブルの作成時に名前を小文字で指定する必要があります。データベースとテーブル名を大文字で指定すると、これらのデータベースとテーブルに対するクエリは失敗します。
-
データ型: StarRocks
-
導入バージョン: v3.0
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 データ型のみがサポートしています。GROUP_CONCAT_LEGACY
: v2.5 およびそれ以前のgroup_concat
構文を使用します。このオプションは v3.0.9 および v3.1.6 からサポートされています。
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 クライアント互換性のために使用されます。実際の使用法はありません。
statistic_collect_parallel
- 説明: BE 上で実行できる統計収集タスクの並行性を調整するために使用されます。デフォルト値: 1。この値を増やして収集タスクを高速化できます。
- デフォルト: 1
- データ型: 整数
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
現在のセッションのタイムゾーンを設定するために使用されます。タイムゾーンは、特定の時間関数の結果に影響を与える可能性があります。
transaction_read_only
- 説明: MySQL 5.8 互換性のために使用されます。エイリアスは
tx_read_only
です。この変数はトランザクションアクセスモードを指定します。ON
は読み取り専用を示し、OFF
は読み取りおよび書き込み可能を示します。 - デフォルト: OFF
- 導入バージョン: v2.5.18, v3.0.9, v3.1.7
tx_isolation
MySQL クライアント互換性のために使用されます。実際の使用法はありません。エイリアスは transaction_isolation
です。
use_compute_nodes
-
説明: 使用できる CN ノードの最大数。この変数は
prefer_compute_node=true
の場合に有効です。有効な値:-1
: すべての CN ノードが使用されることを示します。0
: CN ノードが使用されないことを示します。
-
デフォルト: -1
-
データ型: 整数
-
導入バージョン: v2.4
use_v2_rollup
クエリがセグメント v2 ストレージ形式のロールアップインデックスを使用してデータを取得するかどうかを制御するために使用されます。この変数は、セグメント v2 でオンライン化する際の検証に使用されます。他のケースでは推奨されません。
vectorized_engine_enable (v2.4 以降は非推奨)
クエリを実行するためにベクトル化エンジンを使用するかどうかを制御するために使用されます。true
の場合、ベクトル化エンジンが使用され、false
の場合、非ベクトル化エンジンが使用されます。デフォルトは true
です。この機能は v2.4 以降でデフォルトで有効になっているため、非推奨です。
version (global)
クライアントに返される MySQL サーバーバージョン。値は FE パラメータ mysql_server_version
と同じです。
version_comment (global)
StarRocks のバージョン。変更できません。
wait_timeout
- 説明: サーバーが非対話型接続でアクティビティを待機する秒数。この時間が経過すると、StarRocks は接続を積極的に閉じます。クライアントがこの時間内に StarRocks と対話しない場合、StarRocks は接続を積極的に閉じます。
- デフォルト: 28800 (8 時間)。
- 単位: 秒
- データ型: 整数
orc_use_column_names
- 説明: StarRocks が Hive から ORC ファイルを読み取る際に列がどのように一致するかを指定するために使用されます。デフォルト値は
false
で、これは ORC ファイル内の列が Hive テーブル定義での順序位置に基づいて読み取られることを意味します。この変数がtrue
に設定されている場合、列は名前に基づいて読み取られます。 - デフォルト: false
- 導入バージョン: v3.1.10