メインコンテンツまでスキップ

システム変数

CelerData は、要件に合わせて設定・変更できる多くのシステム変数を提供しています。このセクションでは、CelerData がサポートする変数について説明します。これらの変数の設定は、MySQL クライアントで SHOW VARIABLES コマンドを実行することで確認できます。また、SET コマンドを使用して、変数を動的に設定または変更することもできます。これらの変数は、システム全体でグローバルに、現在のセッションのみで、または単一のクエリステートメントでのみ有効にすることができます。

CelerData の変数は MySQL の変数セットを参照していますが、一部の変数は MySQL クライアントプロトコルと互換性があるだけで、MySQL データベースでは機能しません

注意

どのユーザーも SHOW VARIABLES を実行し、セッションレベルで変数を有効にする権限を持っています。ただし、SYSTEM レベルの OPERATE 権限を持つユーザーのみが、変数をグローバルに有効にすることができます。グローバルに有効な変数は、将来のすべてのセッション(現在のセッションを除く)で有効になります。

現在のセッションの設定変更を行い、将来のすべてのセッションにもその設定変更を適用したい場合は、GLOBAL 修飾子を使用せずに一度、使用してもう一度、設定を二度行うことができます。例えば:

SET query_mem_limit = 137438953472; -- 現在のセッションに適用。
SET GLOBAL query_mem_limit = 137438953472; -- 将来のすべてのセッションに適用。

変数の表示

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 GLOBAL <var_name> = xxx; を使用する必要があります。単一のセッションでそのような変数を設定しようとすると(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 ヒントを使用することで、単一のステートメント内でのみ有効なセッション変数を設定できます。例:

SELECT /*+ SET_VAR(query_mem_limit = 8589934592) */ name FROM people ORDER BY name;

SELECT /*+ SET_VAR(query_timeout = 1) */ sleep(3);

注意

SET_VARSELECT キーワードの後にのみ配置でき、/*+...*/ で囲む必要があります。

単一のステートメントで複数の変数を設定することもできます。例:

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)

CelerData ユーザーが CelerData クラスターに接続したときに、すべてのロール(デフォルトロールと付与されたロールを含む)を有効にするかどうか。

  • 有効(true)の場合、ユーザーのすべてのロールがログイン時にアクティブになります。これは SET DEFAULT ROLE で設定されたロールよりも優先されます。
  • 無効(false)の場合、SET DEFAULT ROLE で設定されたロールがアクティブになります。

デフォルト値: false。

セッション内で割り当てられたロールをアクティブにしたい場合は、SET ROLE コマンドを使用してください。

auto_increment_increment

MySQL クライアント互換性のために使用されます。実用的な使用法はありません。

autocommit

MySQL クライアント互換性のために使用されます。実用的な使用法はありません。

batch_size

クエリ実行中に各ノードが送信する単一パケットの行数を指定するために使用されます。デフォルトは 1024 で、ソースノードによって生成されたデータの 1024 行ごとにパッケージ化され、宛先ノードに送信されます。行数が多いほど、大量データシナリオでのクエリスループットが向上しますが、小規模データシナリオでのクエリ遅延が増加する可能性があります。また、クエリのメモリオーバーヘッドが増加する可能性があります。batch_size を 1024 から 4096 の間に設定することをお勧めします。

catalog

セッションが属する catalog を指定するために使用されます。

cbo_enable_low_cardinality_optimize

低基数最適化を有効にするかどうか。この機能を有効にすると、STRING 列のクエリパフォーマンスが約 3 倍向上します。デフォルト値: true。

character_set_database (global)

CelerData がサポートする文字セット。UTF8 (utf8) のみがサポートされています。

connector_io_tasks_per_scan_operator

外部テーブルクエリ中にスキャンオペレーターが発行できる最大の同時 I/O タスク数。値は整数です。デフォルト値: 16。

現在、CelerData は外部テーブルをクエリする際に同時 I/O タスク数を適応的に調整できます。この機能は、デフォルトで有効になっている変数 enable_connector_adaptive_io_tasks によって制御されます。

count_distinct_column_buckets

グループバイカウントディスティンクトクエリにおける COUNT DISTINCT 列のバケット数。この変数は、enable_distinct_column_bucketizationtrue に設定されている場合にのみ有効です。デフォルト値: 1024。

default_rowset_type (global)

グローバル変数。計算ノードのストレージエンジンで使用されるデフォルトのストレージ形式を設定するために使用されます。現在サポートされているストレージ形式は alphabeta です。

default_table_compression

テーブルストレージのデフォルトの圧縮アルゴリズム。サポートされている圧縮アルゴリズムは snappy, lz4, zlib, zstd です。デフォルト値: lz4_frame。

CREATE TABLE ステートメントで compression プロパティを指定した場合、compression で指定された圧縮アルゴリズムが有効になります。

disable_colocate_join

Colocation Join を有効にするかどうかを制御するために使用されます。デフォルト値は false で、この機能が有効であることを意味します。この機能が無効になっている場合、クエリプランニングは Colocation Join を実行しようとしません。

disable_streaming_preaggregations

ストリーミング事前集計を有効にするために使用されます。デフォルト値は false で、これは有効であることを意味します。

div_precision_increment

MySQL クライアント互換性のために使用されます。実用的な使用法はありません。

enable_connector_adaptive_io_tasks

外部テーブルをクエリする際に同時 I/O タスク数を適応的に調整するかどうか。デフォルト値: true。

この機能が有効でない場合、変数 connector_io_tasks_per_scan_operator を使用して同時 I/O タスク数を手動で設定できます。

enable_distinct_column_bucketization

グループバイカウントディスティンクトクエリにおける 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_iceberg_metadata_cache

Iceberg テーブルのポインタとパーティション名をキャッシュするかどうか。v3.2.1 から v3.2.3 まで、このパラメータは使用されるメタストアサービスに関係なくデフォルトで true に設定されています。v3.2.4 以降、Iceberg クラスターが AWS Glue をメタストアとして使用している場合、このパラメータはデフォルトで true です。しかし、Iceberg クラスターが Hive メタストアなどの他のメタストアサービスを使用している場合、このパラメータはデフォルトで false です。

enable_insert_strict

INSERT ステートメントを使用してデータをロードする際に厳密モードを有効にするために使用されます。デフォルト値は true で、厳密モードがデフォルトで有効であることを示しています。詳細は Strict mode を参照してください。

enable_materialized_view_union_rewrite

マテリアライズドビューの Union クエリの書き換えを有効にするかどうかを制御するブール値。デフォルト: true

enable_rule_based_materialized_view_rewrite

ルールベースのマテリアライズドビュークエリの書き換えを有効にするかどうかを制御するブール値。この変数は主に単一テーブルクエリの書き換えに使用されます。デフォルト: true

enable_spill

中間結果のスピリングを有効にするかどうか。デフォルト: falsetrue に設定されている場合、CelerData はクエリ内の集約、ソート、またはジョインオペレーターを処理する際にメモリ使用量を削減するために中間結果をディスクにスピルします。

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_query_tablet_affinity

同じタブレットに対する複数のクエリを固定レプリカに向けるかどうかを制御するブール値。

クエリするテーブルに大量のタブレットがあるシナリオでは、この機能によりクエリパフォーマンスが大幅に向上します。なぜなら、タブレットのメタ情報とデータがメモリにより迅速にキャッシュされるからです。

ただし、ホットスポットタブレットがある場合、この機能はクエリパフォーマンスを低下させる可能性があります。なぜなら、クエリを同じ BE に向けることで、高い同時実行性 シナリオで複数の BE のリソースを十分に活用できなくなるからです。

デフォルト値: false、これはシステムが各クエリのレプリカを選択することを意味します。

enable_scan_block_cache

Data Cache 機能を有効にするかどうかを指定します。この機能を有効にすると、CelerData は外部ストレージシステムから読み取ったホットデータをブロックにキャッシュし、クエリと分析を高速化します。

enable_populate_block_cache

CelerData に外部ストレージシステムから読み取ったデータブロックをキャッシュするかどうかを指定します。外部ストレージシステムから読み取ったデータブロックをキャッシュしたくない場合、この変数を false に設定します。デフォルト値: true。

enable_tablet_internal_parallel

タブレットの適応並列スキャンを有効にするかどうか。機能が有効になると、複数のスレッドを使用してセグメントごとにタブレットをスキャンし、スキャンの並行性を高めます。デフォルト値: true。

enable_adaptive_sink_dop

データロードの適応並行性を有効にするかどうかを指定します。この機能を有効にすると、システムは INSERT INTO および Broker Load ジョブのロード並行性を自動的に設定し、pipeline_dop のメカニズムと同等になります。デフォルト値: true

enable_pipeline_engine

パイプライン実行エンジンを有効にするかどうかを指定します。true は有効であることを示し、false は無効であることを示します。デフォルト値: true

enable_sort_aggregate

ソートストリーミングを有効にするかどうかを指定します。true はデータストリーム内のデータをソートするためにソートストリーミングが有効であることを示します。

enable_global_runtime_filter

グローバルランタイムフィルター(RF)を有効にするかどうか。RF はランタイムでデータをフィルタリングします。データフィルタリングは通常、ジョインステージで発生します。マルチテーブルジョイン中に、述語プッシュダウンなどの最適化を使用してデータをフィルタリングし、ジョインのスキャン行数と Shuffle ステージの I/O を削減し、クエリを高速化します。

CelerData は 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 を含みます。

event_scheduler

MySQL クライアント互換性のために使用されます。実用的な使用法はありません。

enable_strict_type

すべての複合述語および WHERE 句内のすべての式に対して暗黙の変換を許可するかどうか。デフォルト値: false

force_streaming_aggregate

集約ノードが計算のためにストリーミング集約を有効にするかどうかを制御するために使用されます。デフォルト値は false で、この機能が有効でないことを意味します。

forward_to_master

一部のコマンドをリーダー FE に転送して実行するかどうかを指定するために使用されます。デフォルト値は false で、リーダー FE に転送しないことを意味します。CelerData クラスターには複数の 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 情報を表示できます。これは主にメタデータの比較に使用されます。

group_concat_max_len

group_concat 関数によって返される文字列の最大長。デフォルト値: 1024。最小値: 4。単位: 文字。

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。

language (global)

MySQL クライアント互換性のために使用されます。実用的な使用法はありません。

license (global)

CelerData のライセンスを表示します。

load_mem_limit

インポート操作のメモリ制限を指定します。デフォルト値は 0 で、この変数が使用されず、代わりに query_mem_limit が使用されることを意味します。

この変数は、クエリとインポートの両方を含む INSERT 操作にのみ使用されます。ユーザーがこの変数を設定しない場合、クエリとインポートのメモリ制限は exec_mem_limit に設定されます。それ以外の場合、クエリのメモリ制限は exec_mem_limit に設定され、インポートのメモリ制限は load_mem_limit に設定されます。

他のインポート方法(BROKER LOADSTREAM LOAD など)は、メモリ制限に exec_mem_limit を使用します。

log_rejected_record_num

ログに記録できる不適格なデータ行の最大数を指定します。有効な値:0-1、および任意の非ゼロの正の整数。デフォルト値: 0

  • 0 は、フィルタリングされたデータ行がログに記録されないことを指定します。
  • -1 は、フィルタリングされたすべてのデータ行がログに記録されることを指定します。
  • 非ゼロの正の整数 n は、フィルタリングされたデータ行が各 BE で最大 n 行までログに記録されることを指定します。

lower_case_table_names (global)

MySQL クライアント互換性のために使用されます。実用的な使用法はありません。CelerData のテーブル名は大文字と小文字を区別します。

materialized_view_rewrite_mode

非同期マテリアライズドビューのクエリ書き換えモードを指定します。有効な値:

  • disable: 非同期マテリアライズドビューの自動クエリ書き換えを無効にします。
  • default(デフォルト値): 非同期マテリアライズドビューの自動クエリ書き換えを有効にし、オプティマイザーがコストに基づいてクエリがマテリアライズドビューを使用して書き換えられるかどうかを決定します。クエリが書き換えられない場合、ベーステーブルのデータを直接スキャンします。
  • default_or_error: 非同期マテリアライズドビューの自動クエリ書き換えを有効にし、オプティマイザーがコストに基づいてクエリがマテリアライズドビューを使用して書き換えられるかどうかを決定します。クエリが書き換えられない場合、エラーが返されます。
  • force: 非同期マテリアライズドビューの自動クエリ書き換えを有効にし、オプティマイザーがマテリアライズドビューを使用してクエリを書き換えることを優先します。クエリが書き換えられない場合、ベーステーブルのデータを直接スキャンします。
  • force_or_error: 非同期マテリアライズドビューの自動クエリ書き換えを有効にし、オプティマイザーがマテリアライズドビューを使用してクエリを書き換えることを優先します。クエリが書き換えられない場合、エラーが返されます。

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

クエリオプティマイザーのタイムアウト期間。オプティマイザーがタイムアウトすると、エラーが返され、クエリが停止され、クエリパフォーマンスに影響を与えます。この変数をクエリに基づいて大きな値に設定するか、CelerData の技術サポートに連絡してトラブルシューティングを行うことができます。タイムアウトは、クエリにジョインが多すぎる場合によく発生します。

デフォルト値: 3000。単位: ms。

parallel_exchange_instance_num

上位ノードが実行プランで下位ノードからデータを受信するために使用する交換ノードの数を設定するために使用されます。デフォルト値は -1 で、交換ノードの数が下位ノードの実行インスタンスの数と等しいことを意味します。この変数が 0 より大きく、下位ノードの実行インスタンスの数より小さい値に設定されている場合、交換ノードの数は設定された値と等しくなります。

分散クエリ実行プランでは、上位ノードには通常、下位ノードの異なる BEs の実行インスタンスからデータを受信するための 1 つ以上の交換ノードがあります。通常、交換ノードの数は下位ノードの実行インスタンスの数と等しいです。

集約後にデータ量が大幅に減少する集約クエリシナリオでは、この変数を小さな値に変更してリソースオーバーヘッドを削減することを試みることができます。例として、重複キーテーブルを使用して集約クエリを実行することが挙げられます。

parallel_fragment_exec_instance_num

各 BE でノードをスキャンするために使用されるインスタンスの数を設定するために使用されます。デフォルト値は 1 です。

クエリプランは通常、スキャン範囲のセットを生成します。このデータは複数の BE ノードに分散されます。BE ノードには 1 つ以上のスキャン範囲があり、デフォルトでは各 BE ノードのスキャン範囲セットは 1 つの実行インスタンスによってのみ処理されます。マシンリソースが十分な場合、この変数を増やして、効率目的でスキャン範囲を同時に処理する実行インスタンスを増やすことができます。

スキャンインスタンスの数は、上位レベルの他の実行ノード(集約ノードやジョインノードなど)の数を決定します。したがって、クエリプラン実行全体の並行性が増加します。この変数を変更することで効率を向上させることができますが、値が大きいほど CPU、メモリ、ディスク IO などのマシンリソースを多く消費します。

partial_update_mode

部分更新のモードを制御するために使用されます。有効な値:

  • auto(デフォルト): システムは UPDATE ステートメントと関与する列を分析して部分更新のモードを自動的に決定します。
  • column: 部分更新にカラムモードが使用されます。これは、少数の列と多数の行を含む部分更新に特に適しています。

詳細は UPDATE を参照してください。

performance_schema

MySQL JDBC バージョン 8.0.16 以降との互換性のために使用されます。実用的な使用法はありません。

prefer_compute_node

FEs がクエリ実行プランを CN ノードに配布するかどうかを指定します。有効な値:

  • true: FEs がクエリ実行プランを CN ノードに配布することを示します。
  • false: FEs がクエリ実行プランを CN ノードに配布しないことを示します。

pipeline_dop

パイプラインインスタンスの並行性で、クエリの同時実行性を調整するために使用されます。デフォルト値: 0、これはシステムが各パイプラインインスタンスの並行性を自動的に調整することを意味します。この変数を 0 より大きい値に設定することもできます。一般的に、物理 CPU コア数の半分の値に設定します。

システムはクエリの並行性に基づいてこの変数を適応的に調整することもできます。

pipeline_profile_level

クエリプロファイルのレベルを制御します。クエリプロファイルには通常、Fragment、FragmentInstance、Pipeline、PipelineDriver、Operator の 5 層があります。異なるレベルはプロファイルの異なる詳細を提供します:

  • 0: CelerData はプロファイルのメトリクスを結合し、いくつかのコアメトリクスのみを表示します。
  • 1: デフォルト値。CelerData はプロファイルを簡略化し、プロファイルのメトリクスを結合してプロファイル層を減らします。
  • 2: CelerData はプロファイルのすべての層を保持します。このシナリオでは、特に SQL クエリが複雑な場合、プロファイルサイズが大きくなります。この値は推奨されません。

query_cache_entry_max_bytes

パススルーモードをトリガーするしきい値。有効な値: 0 から 9223372036854775807。特定のタブレットからアクセスされるクエリの計算結果のバイト数または行数が query_cache_entry_max_bytes または query_cache_entry_max_rows で指定されたしきい値を超えると、クエリはパススルーモードに切り替わります。

query_cache_entry_max_rows

キャッシュできる行の上限。query_cache_entry_max_bytes の説明を参照してください。デフォルト値: 409600。

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 に設定されている場合、関連するタブレットから計算結果が生成されていない場合でも、パススルーモードが使用されます。

query_cache_size (global)

MySQL クライアント互換性のために使用されます。実用的な使用法はありません。

query_cache_type

JDBC 接続プール C3P0 との互換性のために使用されます。実用的な使用法はありません。

query_mem_limit

各バックエンドノードでのクエリのメモリ制限を設定するために使用されます。デフォルト値は 0 で、制限がないことを意味します。B/K/KB/M/MB/G/GB/T/TB/P/PB などの単位がサポートされています。

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 より大きく設定された場合にのみ有効です。デフォルト: 0

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]。

range_pruner_max_predicate

Range パーティションプルーニングに使用できる IN 述語の最大数。デフォルト値: 100。100 より大きい値は、システムがすべてのタブレットをスキャンする可能性があり、クエリパフォーマンスを損なう可能性があります。

rewrite_count_distinct_to_bitmap_hll

カウントディスティンクトクエリを 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。

runtime_profile_report_interval

ランタイムプロファイルが報告される時間間隔。

単位: 秒、デフォルト: 10

spill_mode

中間結果のスピリングの実行モード。有効な値:

  • auto: メモリ使用量のしきい値に達したときにスピリングが自動的にトリガーされます。
  • force: CelerData はメモリ使用量に関係なく、関連するすべてのオペレーターに対してスピリングを強制的に実行します。

この変数は、変数 enable_spilltrue に設定されている場合にのみ有効です。

SQL_AUTO_IS_NULL

JDBC 接続プール C3P0 との互換性のために使用されます。実用的な使用法はありません。

sql_dialect

使用される SQL 方言を指定します。たとえば、set sql_dialect = 'trino'; コマンドを実行して SQL 方言を Trino に設定し、クエリで Trino 固有の SQL 構文と関数を使用できます。

注意

CelerData を Trino 方言で使用するように設定した後、クエリ内の識別子はデフォルトで大文字と小文字を区別しません。したがって、データベースとテーブルの作成時に名前を小文字で指定する必要があります。データベースとテーブル名を大文字で指定すると、これらのデータベースとテーブルに対するクエリは失敗します。

sql_mode

特定の SQL 方言に対応する SQL モードを指定するために使用されます。

sql_safe_updates

MySQL クライアント互換性のために使用されます。実用的な使用法はありません。

sql_select_limit

MySQL クライアント互換性のために使用されます。実用的な使用法はありません。

storage_engine

CelerData がサポートするエンジンの種類:

  • olap: CelerData システム所有のエンジン。
  • mysql: MySQL 外部テーブル。
  • broker: ブローカープログラムを介して外部テーブルにアクセス。
  • elasticsearch または es: Elasticsearch 外部テーブル。
  • hive: Hive 外部テーブル。
  • iceberg: Iceberg 外部テーブル。
  • hudi: Hudi 外部テーブル。
  • jdbc: JDBC 互換データベースの外部テーブル。

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 でオンラインになる際の検証に使用されます。他のケースでは推奨されません。

version (global)

クライアントに返される MySQL サーバーバージョン。

version_comment (global)

CelerData のバージョン。変更できません。

wait_timeout

アイドル接続の接続タイムアウトを設定するために使用されます。アイドル接続がその時間内に CelerData と対話しない場合、CelerData はリンクを積極的に切断します。デフォルト値は 8 時間、単位は秒です。

warehouse

このセッションで SQL が実行されるウェアハウスを設定するために使用されます。デフォルト値: default_warehouse。現在のセッションにウェアハウスを設定するには、ユーザーはウェアハウスに対する USAGE 権限を付与されている必要があります。