すべてのプロダクト
Search
ドキュメントセンター

ApsaraDB for SelectDB:変数管理

最終更新日:Jan 28, 2025

このトピックでは、変数の管理方法と使用方法について説明します。 また、タイムゾーン変数の設定方法についても説明します。このトピックは、ビジネス要件に合わせて ApsaraDB for SelectDBApsaraDB for SelectDB の変数をより効果的に使用するために役立ちます。

変数

ApsaraDB for SelectDB の変数は、ApsaraDB for SelectDB 固有の変数と、MySQL クライアントプロトコルと互換性のある変数に分けられます。詳細については、「付録」をご参照ください。

変数のクエリと設定

変数のクエリ

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
重要

管理者ユーザーのみがグローバル変数を設定できます。

次の変数は、グローバルに有効になるように設定することも、現在のセッションに対してのみ有効になるように設定することもできます。

  • time_zone

  • wait_timeout

  • sql_mode

  • enable_profile

  • query_timeout

  • insert_timeout

  • exec_mem_limit

  • batch_size

  • allow_partition_column_nullable

  • insert_visible_timeout_ms

  • enable_fold_constant_by_be

次の変数は、グローバルにのみ有効になるように設定できます。

  • default_rowset_type

  • default_password_lifetime

  • password_history

  • validate_password_policy

さらに、定数式を使用して変数を設定することもできます。サンプルコード:

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, enable_partition_cache=true) */ sleep(3);
説明

コメントは /*+ で始まり、SELECT 文に従う必要があります。

タイムゾーン変数

重要な変数の種類であるタイムゾーン変数は、ApsaraDB for SelectDB の多くの関数と変数の値に影響します。さまざまな地域のさまざまなビジネス要件を満たすために、ApsaraDB for SelectDB はカスタムタイムゾーン設定をサポートしています。

ApsaraDB for SelectDB は、次の 2 つのタイムゾーン変数を提供します。

  • system_time_zone: クラスタのシステムタイムゾーン。サーバーの起動時に、この変数はサーバーのタイムゾーンに基づいて自動的に設定されます。設定されたタイムゾーンは変更できません。

  • time_zone: クラスタの現在のタイムゾーン。このタイムゾーンは変更できます。

タイムゾーン変数のクエリと設定

タイムゾーン変数をクエリします。サンプルコード:

SHOW variables LIKE '%time_zone%'

セッションのタイムゾーンを設定します。サンプルコード:

SET [GLOBAL] time_zone = 'Asia/Shanghai'
説明

GLOBAL キーワードを使用すると、設定されたタイムゾーンは、現在の ApsaraDB for SelectDB クラスタの後続のすべてのセッションにも有効になります。

タイムゾーン形式

タイムゾーン変数の値は複数の形式で指定できます。 ApsaraDB for SelectDB は、次の標準形式をサポートしています。

  • Asia/Shanghai、America/Los_Angeles などの標準の名前付き形式。

  • +02:30、-10:00 などの標準のオフセット形式。

  • 省略形。次の形式がサポートされています。

    • グリニッジ標準時 (GMT) と協定世界時 (UTC)。これらは +00:00 タイムゾーンに相当します。

    • 中部標準時 (CST)。これは Asia/Shanghai タイムゾーンに相当します。

  • 単一文字の Z。これは Zulu タイムゾーンを表し、+00:00 タイムゾーンに相当します。

説明

さまざまなデータインポート方法の実装により、特定のデータインポート方法が使用されている場合、ApsaraDB for SelectDB は他のタイムゾーン形式をサポートする場合があります。本番環境では他のタイムゾーン形式に依存しないことをお勧めします。 ApsaraDB for SelectDB は、他のタイムゾーン形式の処理方法をいつでも変更する場合があります。

タイムゾーン設定の影響

関数

タイムゾーン設定は、NOW() や CURTIME() などの時間関数によって返される値に影響し、SHOW LOAD 文と SHOW BACKENDS 文の時間値にも影響します。ただし、タイムゾーン設定は、CREATE TABLE 文の時間型パーティションキー列の less than 値には影響せず、DATE 型または DATETIME 型として格納された値の表示にも影響しません。

次の関数はタイムゾーン設定の影響を受けます。

  • FROM_UNIXTIME: 指定された UTC タイムスタンプに基づいて、指定されたタイムゾーンの日付と時刻を返します。 CST タイムゾーンを使用する場合、FROM_UNIXTIME(0)1970-01-01 08:00:00 を返します。

  • UNIX_TIMESTAMP: 指定されたタイムゾーンの指定された日付と時刻に基づいて、UTC タイムスタンプを返します。 CST タイムゾーンを使用する場合、UNIX_TIMESTAMP('1970-01-01 08:00:00')0 を返します。

  • CURTIME: 指定されたタイムゾーンの現在の時刻を返します。

  • NOW: 指定されたタイムゾーンの現在の日付と時刻を返します。

  • CONVERT_TZ: 指定されたタイムゾーンの日付と時刻を別のタイムゾーンの日付と時刻に変換します。

時間型の値

DATE 型、DATEV2 型、DATETIME 型、または DATETIMEV2 型のデータをインポートする場合、ApsaraDB for SelectDB はタイムゾーン変換をサポートします。

データに 2020-12-12 12:12:12+08:00 などのタイムゾーンが含まれていて、ApsaraDB for SelectDB クラスタの現在のタイムゾーンが +00:00 の場合、インポートされたデータは 2020-12-12 04:12:12 に変換されます。

データに 2020-12-12 12:12:12 などのタイムゾーンが含まれていない場合、時刻は絶対時間と見なされ、インポートされたデータは変換されません。

夏時間

夏時間は本質的に名前付きタイムゾーンの実際の時間オフセットであり、特定の日付に変更されます。

たとえば、America/Los_Angeles タイムゾーンには、毎年 3 月から 11 月まで続く夏時間調整があります。 America/Los_Angeles タイムゾーンでは、3 月に夏時間が開始されると時間オフセットは -08:00 から -07:00 に変更され、11 月に夏時間が終了すると -07:00 から -08:00 に変更されます。

夏時間を使用しない場合は、time_zone 変数を America/Los_Angeles ではなく -08:00 に設定する必要があります。

データソース

タイムゾーンデータには、タイムゾーンの名前、時間オフセット、夏時間の変更が含まれています。バックエンド (BE) ノードがデプロイされているマシンでは、タイムゾーンデータは次のデータソースにあります。

  1. TZDIR コマンドによって返されるディレクトリ。

  2. /usr/share/zoneinfo ディレクトリ。

  3. ApsaraDB for SelectDB の BE デプロイディレクトリに生成された zoneinfo ディレクトリ。

ApsaraDB for SelectDB は、上記のデータソースを順番に検索してタイムゾーンデータを検索します。タイムゾーンデータが見つかった場合は、それが使用されます。タイムゾーンデータが見つからない場合、ApsaraDB for SelectDB の BE ノードは起動に失敗します。

ベストプラクティス

タイムゾーンに依存するデータ

ApsaraDB for SelectDB は、さまざまなタイムゾーンからインポートされたデータと互換性があります。タイムゾーン設定は、次の 3 つの要素の影響を受けます。

  • クラスタの現在のタイムゾーン。これは time_zone セッション変数によって設定されます。

  • Stream Load や Broker Load などの方法を使用してデータをインポートする際に、timezone ヘッダーによって設定されたタイムゾーン。

  • データのリテラルタイムゾーン。たとえば、2023-12-12 08:00:00+08:00+08:00 など。

ApsaraDB for SelectDB では、DATETIME などの時間型のデータにはタイムゾーンが含まれていません。 ApsaraDB for SelectDB クラスタの時間型のデータは、絶対時間と特定のタイムゾーンの時刻の 2 つのカテゴリに分類できます。

  • 絶対時間: データの時間形式にはタイムゾーンが含まれておらず、データのインポート時にタイムゾーンが指定されていません。例: 2023-12-12 08:00:00。データに関連付けられたシナリオは、タイムゾーンに依存しません。このカテゴリのデータがインポートされると、タイムゾーン設定の影響を受けません。このカテゴリのデータに基づいて UNIX_TIMESTAMP などの関数を実行する場合、タイムゾーン情報は取得できません。また、time_zone セッション変数を変更しても、このカテゴリのデータは影響を受けません。

  • 特定のタイムゾーンの時刻: データの時間形式にはタイムゾーンが含まれています。このカテゴリのデータがインポートされると、タイムゾーン設定の影響を受けます。例: "2020-12-12 12:12:12+02:00"。データのインポート中に、ApsaraDB for SelectDB はタイムゾーン設定に基づいてこのカテゴリのデータを処理します。

    • INSERT INTO 文を使用してデータをインポートする場合、データは time_zone セッション変数の影響を受けます。

    • Stream Load などの方法を使用してデータをインポートする場合、データは Stream Load の timezone ヘッダーの影響を受けます。 timezone ヘッダーの設定が time_zone セッション変数の設定と競合する場合、timezone ヘッダーの設定が優先されます。

    特定のタイムゾーンとは、クラスタの現在のタイムゾーンを指し、time_zone セッション変数によって設定されます。この変数は、データがインポートされる前に設定され、それ以降は変更されません。このカテゴリのデータがインポートされると、ApsaraDB for SelectDB はインポートされるデータのリテラルタイムゾーンの時刻を、time_zone セッション変数によって設定されたタイムゾーンの時刻に変換します。

特定のタイムゾーンの時刻のベストプラクティスでは、time_zone セッション変数を変更しないことをお勧めします。次のサンプルコードは例を示しています。

mysql> SELECT@@time_zone;
+----------------+
| @@time_zone    |
+----------------+
| Asia/Hong_Kong |
+----------------+
1 row in set (0.12 sec)
--- インポートされるデータのリテラルタイムゾーンは +02:00 です。
mysql> INSERT INTO dtv23 VALUES('2020-12-12 12:12:12+02:00'); 
Query OK, 1 row affected (0.27 sec)

mysql> SELECT* FROM dtv23;
--- インポートされたデータは、ApsaraDB for SelectDB クラスタの現在のタイムゾーンである Asia/Hong_Kong タイムゾーンの時刻に変換されます。このタイムゾーンは、後続のインポートとクエリにも使用されます。
+-------------------------+
| k0                      |
+-------------------------+
| 2020-12-12 18:12:12.000 | 
+-------------------------+
1 row in set (0.19 sec)

mysql> SET time_zone = 'America/Los_Angeles';
Query OK, 0 rows affected (0.15 sec)

mysql> SELECT* FROM dtv23;
--- time_zone セッション変数を変更すると、時間値はそれに応じて変更されませんが、その意味は設定されたタイムゾーンに基づいて変化します。これにより、後続のクエリで混乱が生じます。
+-------------------------+
| k0                      |
+-------------------------+
| 2020-12-12 18:12:12.000 | 
+-------------------------+
1 row in set (0.18 sec)

mysql> insert into dtv23 values('2020-12-12 12:12:12+02:00');
Query OK, 1 row affected (0.17 sec)

mysql> SELECT* FROM dtv23;
--- クエリ結果は正しくありません。
+-------------------------+
| k0                      |
+-------------------------+
| 2020-12-12 02:12:12.000 |
| 2020-12-12 18:12:12.000 |
+-------------------------+ 
2 rows in set (0.19 sec)

要約すると、タイムゾーン設定のベストプラクティスについては、次の項目に注意してください。

  • クラスタにデータをインポートする前に、クラスタの現在のタイムゾーンを確認し、ビジネス要件に基づいて time_zone セッション変数を設定します。データをインポートした後は、この変数を変更しないでください。

  • データインポート方法を使用する場合は、timezone ヘッダーの設定が time_zone セッション変数の設定と同じであることを確認してください。

  • 絶対時間の場合は、タイムゾーンサフィックスなしでデータをインポートします。特定のタイムゾーンの時刻の場合は、特定のタイムゾーンサフィックスを付けてデータをインポートします。 ApsaraDB for SelectDB は、特定のタイムゾーンの時刻を、time_zone セッション変数によって設定されたタイムゾーンの時刻に変換します。

夏時間

夏時間の開始時刻と終了時刻は、現在のタイムゾーンのデータソースに基づいており、現在の年のタイムゾーンの場所で公式に確認された時刻と完全に同じではない場合があります。タイムゾーンデータは、インターネットコーポレーションフォーアサインネームアンドナンバーズ (ICANN) によって管理されています。現在の年のタイムゾーンの場所で公式に確認された夏時間の開始時刻と終了時刻を使用する必要がある場合は、ApsaraDB for SelectDB によって選択されたデータソースに、ICANN によって公開された最新のタイムゾーンデータが含まれていることを確認してください。最新のタイムゾーンデータのダウンロード方法の詳細については、「参考文献」をご参照ください。

付録

サポートされている変数

ブール型の変数

このタイプの変数は、機能を有効または無効にするために使用されます。有効な値は true と false です。

変数

説明

delete_without_partition

DELETE 文を実行するときにパーティションを指定せずにデータを削除し、DELETE 操作をすべてのパーティションに自動的に適用するかどうかを指定します。デフォルト値: false。

重要

DELETE 操作がすべてのパーティションに自動的に適用されると、DELETE 文の期間が延長され、多数のタスクがトリガーされます。これにより、DELETE 操作の期間が延長されます。この機能を有効にしないことをお勧めします。

disable_colocate_join

コロケーション結合機能を無効にするかどうかを指定します。デフォルト値: false。

false の値は、機能が有効になっていることを指定します。true の値は、機能が無効になっていることを指定します。この機能が無効になっている場合、実行計画はコロケーション結合操作を実行しようとしません。

enable_bucket_shuffle_join

バケットシャッフル結合機能を有効にするかどうかを指定します。デフォルト値: true。

true の値は、機能が有効になっていることを指定します。false の値は、機能が無効になっていることを指定します。この機能が無効になっている場合、実行計画はバケットシャッフル結合操作を実行しようとしません。

disable_streaming_preaggregations

ストリーミング事前集計を無効にするかどうかを指定します。デフォルト値: false。

false の値は、機能が有効になっていることを指定します。この変数は変更できません。

enable_insert_strict

INSERT 文を使用してデータをインポートするときに strict モードを有効にするかどうかを指定します。デフォルト値: false。

false の値は、strict モードが無効になっていることを指定します。

enable_spilling

大量のデータのソートを有効にするかどうかを指定します。デフォルト値: false。

false の値は、機能が無効になっていることを指定します。enable_spilling 変数を true に設定し、ORDER BY 句に LIMIT 条件を指定しない場合、この機能は有効になります。

この機能が有効になると、クエリのテンポラリデータは、BE データディレクトリの doris-scratch/ ディレクトリに格納されます。クエリが完了すると、テンポラリデータはクリアされます。

この機能は、限られたメモリを使用して大量のデータをソートするために使用されます。

重要

この機能は実験的なものです。本番環境では、この機能を有効にしないことをお勧めします。

forward_to_master

一部の SHOW 文を実行するためにマスター フロントエンド (FE) ノードに転送するかどうかを指定します。デフォルト値: true

true の値は、機能が有効になっていることを指定します。ApsaraDB for SelectDB インスタンスには複数の FE ノードがあり、そのうちの 1 つがマスター FE ノードです。FE ノードのいずれかに接続して、フル機能の操作を実行できます。ただし、一部の SHOW 文を実行した後、マスター FE ノードからのみ詳細情報を取得できます。たとえば、SHOW BACKENDS; 文をマスター FE ノードに転送しないと、BE ノードが稼働しているかどうかなど、一部の基本情報しか取得できません。文をマスター FE ノードに転送すると、BE ノードの起動時間や最後のハートビート時間など、より詳細な情報を取得できます。

次の文をマスター FE ノードに転送すると、より詳細な情報が返されます。

  • SHOW FRONTENDS;

    最後のハートビート情報を返します。

  • SHOW BACKENDS;

    起動時間、最後のハートビート情報、およびディスク容量情報を返します。

  • SHOW BROKER;

    起動時間と最後のハートビート情報を返します。

  • SHOW TABLET;SHOW REPLICA DISTRIBUTION;、または SHOW REPLICA STATUS;

    マスター FE ノードのメタデータに格納されているタブレット情報を返します。ほとんどの場合、同じタブレット情報が異なる FE ノードのメタデータに格納されます。エラーが発生した場合、このメソッドを使用して、現在の FE ノードのメタデータに格納されているタブレット情報とマスター FE ノードのメタデータに格納されているタブレット情報の違いを比較できます。

  • SHOW PROC;

    マスター FE ノードのメタデータに格納されている proc システムに関する情報を返します。取得した情報は、メタデータの比較に使用できます。

enable_profile

クエリのプロファイルを表示するかどうかを指定します。デフォルト値: false。

false の値は、機能が無効になっていることを指定します。デフォルトでは、クエリでエラーが発生した場合にのみ、BE はクエリのプロファイルを FE に送信してエラーを表示します。これには特定量のネットワークオーバーヘッドが必要であり、高並列クエリの性能が低下します。したがって、BE は成功したクエリのプロファイルを FE に送信しません。

クエリのプロファイルを分析する場合は、クエリを実行する前にこの変数を true に設定できます。クエリが完了したら、現在接続されている FE ノードの Web ページで、次の URL を使用してプロファイルを表示できます。

fe_host:fe_http_port/query

Web ページには、enable_profile 変数が true に設定された後の最新の 100 件のクエリが表示されます。

rewrite_count_distinct_to_bitmap_hll

ビットマップまたは HyperLogLog (HLL) 形式のデータについて、COUNT DISTINCT 関数を BITMAP_UNION_COUNT 関数または HLL_UNION_AGG 関数に置き換えるかどうかを指定します。デフォルト値: true。

allow_partition_column_nullable

テーブルを作成するときに、パーティションキー列を NULL として定義できるかどうかを指定します。デフォルト値: true。

true の値は、パーティションキー列を NULL として定義できることを指定します。false の値は、パーティションキー列を NOT NULL として定義する必要があることを指定します。

enable_exchange_node_parallel_merge

クエリのソートプロセス中に、exchange ノードが複数のスレッドを起動してデータを並列でマージするかどうかを指定します。これにより、追加の CPU とメモリの消費量が削減されます。デフォルト値: false。

結果がソートされるクエリでは、アップストリームノードがダウンストリームノードからデータを受信すると、最終データが順序付けられるように、exchange ノードでデータがソートされます。ただし、exchange ノードが単一のスレッドを起動して複数のダウンストリームノードから大量のデータをマージする場合、exchange ノードで単一のマージボトルネックが発生する可能性があります。

この問題を解決するために、ApsaraDB for SelectDB はマージプロセスを最適化します。アップストリームノードが複数のダウンストリームノードからデータを受信する場合、exchange ノードは複数のスレッドを起動してデータを並列でマージし、ソートプロセスを高速化します。

extract_wide_range_expr

広範囲の共通因子を有効にするかどうかを指定します。デフォルト値: false。

enable_fold_constant_by_be

BE で定数畳み込みの計算を実行するかどうかを指定します。デフォルト値: false。

false の値は、計算が FE で実行されることを指定します。true の値は、リモートプロシージャコール (RPC) リクエストを使用して BE で計算が実行されることを指定します。

disable_join_reorder

すべての自動結合順序変更アルゴリズムを無効にするかどうかを指定します。デフォルト値: false。

false の値は、すべての自動結合順序変更アルゴリズムが有効になっていることを指定します。true の値は、すべての自動結合順序変更アルゴリズムが無効になっていることを指定します。この場合、JOIN 操作は SQL 文のテーブルの順序に基づいて実行されます。

enable_infer_predicate

述語導出を実行するかどうかを指定します。デフォルト値: true。

true の値は、述語導出が実行されることを指定します。false の値は、ApsaraDB for SelectDB が述語導出を実行せず、元の述語を使用して関連操作を実行することを指定します。

trim_tailing_spaces_for_external_table_query

Hive 外部テーブルをクエリするときに、フィールドの末尾のスペースをトリミングするかどうかを指定します。デフォルト値: false。

enable_inverted_index_query

転置インデックスを有効にするかどうかを指定します。デフォルト値: true。

skip_missing_version

欠落バージョンを無視するかどうかを指定します。デフォルト値: false。

極端なシナリオでは、テーブル内のタブレットのすべてのレプリカでバージョンが欠落している場合があります。これらのタブレットは復元できません。その結果、テーブル全体をクエリできません。

この変数を使用して、クエリの動作を制御できます。この変数を true に設定すると、クエリは FE に記録されているタブレットの表示バージョンを無視し、代わりにレプリカバーションを使用します。BE のレプリカでバージョンが欠落している場合、クエリはこれらの欠落バージョンをスキップし、既存のバージョンのデータのみを返します。

さらに、クエリは常に、BE 上のすべての残存レプリカの中で最新の成功バージョンのレプリカを選択して、できるだけ多くのデータを復元しようとします。

クエリのテーブルデータを復元する必要がある緊急のシナリオでのみ、この変数を true に設定することをお勧めします。

重要

この変数は use_fix_replica 変数と競合します。この変数は、use_fix_replica 変数が -1 に設定されている場合にのみ有効になります。

enable_parquet_lazy_materialization

Parquet Reader の遅延マテリアライゼーション技術を有効にするかどうかを指定します。デフォルト値: true。

enable_orc_lazy_materialization

ORC Reader の遅延マテリアライゼーション技術を有効にするかどうかを指定します。デフォルト値: true。

enable_strong_consistency_read

データ読み取りの強い整合性を有効にするかどうかを指定します。デフォルト値: true。

デフォルトでは、ApsaraDB for SelectDB は同じセッション内での強い整合性をサポートしています。同じセッション内のデータの変更はリアルタイムで表示されます。セッション間でデータ読み取りの強い整合性を有効にする場合は、この変数を true に設定します。

truncate_char_or_varchar_columns

テーブルスキーマの最大長に基づいて CHAR 型または VARCHAR 型の列を切り捨てるかどうかを指定します。デフォルト値: false。

外部テーブルを使用してデータを管理する場合、テーブルのスキーマの CHAR 型または VARCHAR 型の列の最大長が、基になる Parquet ファイルまたは ORC ファイルのスキーマの最大長と一致しない場合があります。

この変数を true に設定すると、ApsaraDB for SelectDB はテーブルスキーマの最大長に基づいて CHAR 型または VARCHAR 型の列を切り捨てます。

jdbc_clickhouse_query_final

Java Database Connectivity ( JDBC ) カタログ機能を使用して ClickHouse データをクエリするときに、final キーワードを追加するかどうかを指定します。デフォルト値: false。

この変数は、ClickHouse の ReplacingMergeTree テーブルエンジンとともに重複を削除するために使用されます。

enable_memtable_on_sink_node

データインポート中にデータシンクノードのメモリテーブルを有効にするかどうかを指定します。デフォルト値: false。

この変数を true に設定すると、ApsaraDB for SelectDB はデータシンクノードにメモリテーブルを作成し、bRPC ストリーミングを使用してセグメントを他の BE ノードに送信します。これにより、レプリカ間の重複作業が削減され、データのシリアル化と逆シリアル化の時間が節約されます。

enable_unique_key_partial_update

INSERT INTO 文の部分列更新のセマンティクスを有効にするかどうかを指定します。有効な値:

  • false (デフォルト)

  • true

重要
  • この変数は、Merge on Write ( MOW ) モードを使用する Unique モデルをテーブルが使用している場合にのみ使用できます。

  • enable_unique_key_partial_update 変数と enable_insert_strict 変数の両方を true に設定した場合、INSERT INTO 文を実行してデータのみを更新できます。 enable_insert_strict 変数のデフォルト値 true は、INSERT 文に対して strict モードが有効になっていることを示します。INSERT INTO 文にテーブルに存在しないキーが含まれている場合、エラーが報告されます。

  • この変数を true に設定した後、INSERT INTO 文を実行して特定の列を更新し、列にデータを挿入する場合は、enable_unique_key_partial_update セッション変数を true に、enable_insert_strict セッション変数を false に設定する必要があります。変数設定の詳細については、「変数を構成する」をご参照ください。

describe_extend_variant_column

テーブルをクエリするときに、VARIANT 型の列のサブ列を表示するかどうかを指定します。デフォルト値: false。

dry_run_query

クエリの結果の行数のみを返すかどうかを指定します。デフォルト値: false。

この変数を true に設定すると、ApsaraDB for SelectDB はクエリの実際の結果セットを返さなくなり、結果の行数のみを返します。データをインポートまたは挿入する場合、データシンクノードはデータを書き込む代わりにデータをドロップします。

この変数は、多数のデータセットをテストするときに結果セットの送信に必要な時間を回避するために使用できます。ApsaraDB for SelectDB は、基になるクエリの実行にのみ時間を費やします。

SELECT* FROM bigtable;
+--------------+
| ReturnedRows |
+--------------+
| 10000000     |
+--------------+

drop_table_if_ctas_failed

CREATE TABLE AS SELECT 文を実行したときに書き込みエラーが発生した場合に、作成されたテーブルを削除するかどうかを指定します。デフォルト値: true。

show_user_default_role

SHOW ROLES 文の結果に各ユーザーの暗黙的ロールを表示するかどうかを指定します。デフォルト値: false。

group_by_and_having_use_alias_first

GROUP BY 句と HAVING 句で、From 句から列名を検索する代わりに列エイリアスを使用するかどうかを指定します。デフォルト値: false。

enable_file_cache

ブロックファイルキャッシュを有効にするかどうかを指定します。デフォルト値: false。

この変数は、BE ノードの be.conf ファイルで true に設定されている場合にのみ有効になります。 be.conf ファイルで false に設定されている場合、BE ノードのブロックファイルキャッシュは無効になります。

enable_auto_analyze

自動統計収集機能を有効にするかどうかを指定します。デフォルト値: true。

enable_cost_based_join_reorder

JOIN 操作を実行するときに、結合順序変更を有効にしてテーブルの順序を自動的に調整するかどうかを指定します。

デフォルト値: false。

enable_fallback_to_original_planner

新しいオプティマイザーが有効になった後、シナリオに基づいて古いオプティマイザーに自動的にフォールバックするかどうかを指定します。デフォルト値: false。

enable_odbc_transcation

JDBC カタログへのデータ書き込みのトランザクション機能を有効にするかどうかを指定します。デフォルト値: false。

enable_parallel_outfile

SELECT INTO OUTFILE 文の並列スキャンを有効にするかどうかを指定します。デフォルト値: false。

enable_sql_cache

SQL 文のキャッシュを有効にするかどうかを指定します。デフォルト値: false。

enable_unicode_name_support

Unicode 文字を含むテーブル名と列名をサポートするかどうかを指定します。デフォルト値: false。

この変数を true に設定すると、中国語の列名がサポートされます。

enable_vectorized_engine

ベクトル化エンジンを有効にしてクエリを高速化するかどうかを指定します。デフォルト値: true。

experimental_enable_nereids_planner

新しいオプティマイザーを有効にするかどうかを指定します。この機能は実験的なものです。デフォルト値: true。

experimental_enable_pipeline_engine

パイプライン実行エンジンを有効にするかどうかを指定します。この機能は実験的なものです。デフォルト値: true。

experimental_enable_single_replica_insert

単一レプリカインポート機能を有効にするかどうかを指定します。デフォルト値: false。

この変数を true に設定すると、ApsaraDB for SelectDB は複数のレプリカから 1 つのレプリカをプライマリレプリカとして選択し、プライマリレプリカでのみ計算を実行します。他のレプリカはセカンダリレプリカです。すべてのデータファイルがプライマリレプリカに書き込まれると、各セカンダリレプリカが存在するノードは、プライマリレプリカからデータファイルをプルできます。これにより、レプリカ間のデータが同期されます。

faster_float_convert

より高速な浮動小数点数変換アルゴリズムを有効にするかどうかを指定します。このアルゴリズムは出力形式に影響することに注意してください。デフォルト値: false。

enable_page_cache

ページレベルのキャッシュを有効にするかどうかを指定します。デフォルト値: true。

strict_mode

データインポートの strict モードを有効にするかどうかを指定します。デフォルト値: false。

BOOLEAN 型変数

この型の変数は、機能を有効または無効にするために使用されます。有効な値は true と false です。

変数

説明

delete_without_partition

JOIN 操作を実行するときに、すべてのノードにブロードキャストされるテーブルの最大バイト数のしきい値。 値 -1 は、ブロードキャスト機能が無効になっていることを指定します。

ApsaraDB for SelectDB は、Broadcast Join メソッドと Shuffle Join メソッドを提供します。

Broadcast Join を使用する場合、ApsaraDB for SelectDB は条件に基づいて small テーブルのデータをフィルタリングし、 large テーブルが存在する各ノードにデータをブロードキャストしてインメモリ ハッシュテーブルを生成します。その後、ApsaraDB for SelectDB は large テーブルのデータをストリーミングモードで読み取り、Hash Join 操作を実行します。

シャッフル結合 を使用する場合、ApsaraDB for SelectDB は結合キーに基づいて small テーブルと large テーブルのデータをハッシュし、分散 JOIN 操作を実行します。

small テーブルに少量のデータが含まれている場合は、Broadcast Join の方がパフォーマンスが優れています。small テーブルに大量のデータが含まれている場合は、Shuffle Join の方がパフォーマンスが優れています。

ApsaraDB for SelectDB は、ブロードキャスト結合を自動的に使用しようとします。また、各結合演算子の実装方法を明示的に指定することもできます。Broadcast Join が使用される場合、ApsaraDB for SelectDB は auto_broadcast_join_threshold 変数を提供して、ハッシュテーブルで使用されるメモリの全体の実行メモリに対する比率を制限します。最大比率の有効値は 0 ~ 1 です。デフォルトでは、最大比率は 0.8 です。ハッシュテーブルで使用されるメモリがこの制限を超えると、ApsaraDB for SelectDB は自動的に Shuffle Join を使用するように変更されます。全体の実行メモリは、クエリ オプテマイザーによって推定されます。

説明

この変数を使用して結合方法を変更することはお勧めしません。使用する結合方法を指定する場合は、join[shuffle] などのヒントを使用することをお勧めします。

batch_size

クエリ中に各ノードによって送信される単一パケットの行数。

デフォルトでは、パケットには 1,024 行が含まれています。ソースノードが 1,024 行のデータを生成するたびに、データはパッケージ化されて宛先ノードに送信されます。単一パケットの行数が多いほど、大量のデータがスキャンされるシナリオでのクエリの スループット が向上します。ただし、単一パケットの行数が多いと、少量のデータがクエリされるシナリオでのクエリの 待機時間 が長くなる可能性があります。これは、クエリの メモリ オーバーヘッドも増加させます。

この 変数 は 1,024 ~ 4,096 の 値 に設定することをお勧めします。

default_order_by_limit

ORDER BY 句を使用した後に返されるデータエントリのデフォルト数。

デフォルト値: -1。クエリ後に返されるデータエントリの最大数を指定します。上限は LONG 型のデータの最大値です。

exec_mem_limit

1 つのクエリで使用される最大メモリ。デフォルトでは、1 つのクエリは最大 2 GB のメモリを使用できます。最大メモリは、バイト、KB、MB、GB、TB、または PB の単位で指定できます。単位を指定しない場合、デフォルトでバイトが使用されます。

この変数は、実行計画のフラグメントのインスタンスで使用できるメモリを制限するために使用されます。実行計画は複数のインスタンスに分割できます。1 つの BE ノードは 1 つ以上のインスタンスを実行できます。したがって、この変数は、クラスター内のクエリのメモリ使用量、または BE ノードでのクエリのメモリ使用量を正確に制限するものではありません。実際の制限は、生成された実行計画に基づいて決定されます。

ほとんどの場合、大量のメモリが消費されるのは、ソートノード、集計ノード、結合ノードなど、一部のブロッキングノード上のみです。ただし、スキャンノードなどの他のノードでは、データはストリーム配信されるため、大量のメモリを占有しません。

Memory Exceed Limit エラーが発生した場合は、この制限を 4 GB、8 GB、16 GB など、指数関数的に増やすことを試すことができます。実際には、この制限は数 MB 変動する可能性があることに注意してください。

lower_case_table_names

テーブル名の大文字と小文字の区別。有効な値:

  • 0 (デフォルト): テーブル名は大文字と小文字が区別されます。

  • 1: テーブル名は大文字と小文字が区別されません。ApsaraDB for SelectDB は、データの保存時またはクエリ時にテーブル名を小文字に変換します。利点は、SQL 文で小文字と大文字の両方のテーブル名を使用できることです。次のサンプルコードは例を示しています。

    SHOW tables;  
    +------------------+
    | Tables_in_testdb |
    +------------------+
    | cost             |
    +------------------+
    
    SELECT* FROM COST WHERE COst.id < 100 ORDER BY cost.id;

    欠点は、CREATE TABLE 文で指定された大文字のテーブル名は、テーブルの作成後に取得できないことです。SHOW TABLES 文によって返されるテーブル名は常に小文字です。

  • 2: テーブル名は大文字と小文字が区別されません。ApsaraDB for SelectDB は、CREATE TABLE 文で指定されたテーブル名を保存し、クエリ時に比較のために指定されたテーブル名を小文字に変換します。利点は、SHOW TABLES 文によって返されるテーブル名が CREATE TABLE 文で指定されたテーブル名と同じであることです。欠点は、SQL 文で小文字または大文字のテーブル名のみを使用できることです。たとえば、テーブル名 COST を使用して cost テーブルをクエリできます。サンプルコード:

    SELECT* FROM COST WHERE COST.id < 100 ORDER BY COST.id;

    この変数は MySQL と互換性があります。クラスタが初期化されるときに、fe.conf ファイルで lower_case_table_names 変数を設定する必要があります。クラスタが初期化された後、SET 文を実行したり、クラスタを再起動またはスケールアップしたりすることによって、変数を変更することはできません。

    information_schema データベース内のシステムビューのテーブル名は大文字と小文字が区別されません。この場合、lower_case_table_names 変数の値 0 は値 2 と同等です。

max_pushdown_conditions_per_column

クエリリクエストで、1 つの列に対してストレージエンジンにプッシュダウンできる条件の最大数です。詳細については、BE 設定項目 max_pushdown_conditions_per_column の説明をご参照ください。デフォルト値: -1。これは、be.conf ファイルで設定された値が使用されることを示します。この変数を 0 より大きい値に設定すると、現在のセッションのクエリは変数値を使用し、be.conf ファイルで設定された値は無視されます。

max_scan_key_num

スキャンノードがクエリリクエストで分割できるスキャンキーの最大数。詳細については、BE 設定項目 doris_max_scan_key_num の説明をご参照ください。デフォルト値: -1。これは、be.conf ファイルで設定された値が使用されることを指定します。この変数を 0 より大きい値に設定すると、現在のセッションのクエリは変数値を使用し、be.conf ファイルで設定された値は無視されます。

parallel_exchange_instance_num

実行計画において、アップストリームノードがダウンストリームノードからデータを受信するために使用する exchange ノードの数。デフォルト値: -1 。これは、exchange ノードの数が、ダウンストリームノードで実行されるインスタンスの数と同じであることを指定します。

この変数を 0 より大きく、ダウンストリームノードで実行されるインスタンスの数より小さい値に設定すると、exchange ノードの数は変数の値と同じになります。

分散実行計画では、アップストリームノードは 1 つ以上の exchange ノードを使用して、異なるダウンストリーム BE ノードで実行されているインスタンスからデータを受信します。ほとんどの場合、exchange ノードの数は、ダウンストリームノードで実行されているインスタンスの数と同じです。

一部の集計クエリのシナリオでは、基盤レイヤーで大量のデータがスキャンされるものの、集計データの量が小さい場合は、この変数をより小さい値に設定してみてください。これにより、Duplicate key モデルに基づく集計クエリなど、集計クエリのリソースオーバーヘッドが削減されます。

analyze_timeout

ANALYZE 文のタイムアウト期間。単位:秒。デフォルト値:43200。

auto_analyze_end_time

自動統計収集の終了時間です。

auto_analyze_start_time

自動統計コレクションの開始時刻です。

auto_analyze_table_width_threshold

自動統計収集が適用されるテーブルの最大列数です。テーブルの列数がこの制限を超えると、テーブルは自動統計収集に参加しません。デフォルト値:70 です。

div_precision_increment

/ 演算子を使用した除算操作の結果のスケールを増やす桁数です。 デフォルト値:4 です。

external_agg_bytes_threshold

クエリにおける集約操作で使用される最大メモリです。 メモリ使用量がこの制限を超えると、メモリ内のデータは一時的にディスクに書き込まれます。

external_sort_bytes_threshold

クエリでのソート操作で使用される最大メモリです。 メモリ使用量がこの制限を超えると、メモリ内のデータは一時的にディスクに書き込まれます。

external_table_auto_analyze_interval_in_millis

外部テーブルに対して自動統計収集が実行される最小間隔です。指定された間隔の間、外部テーブルに対して自動統計収集は 1 回だけ実行されます。単位:ミリ秒。デフォルト値:86400000。

fragment_transmission_compression_codec

データ転送中に使用する圧縮形式です。 デフォルト値: lz4。

enormous_table_auto_analyze_interval_in_millis

大きなテーブルに対して自動統計収集が実行される最小間隔です。 指定された間隔中に、enormous_table_lower_bound_size_in_bytes 変数で指定されたしきい値の 5 倍を超えるサイズのテーブルに対して、自動統計収集は 1 回だけ実行されます。 デフォルト値:0。

enormous_table_default_sample_rows

大きなテーブルに対してサンプリングする行数。デフォルト値:4194304。

enormous_table_lower_bound_size_in_bytes

自動統計収集のためにサンプリングされるテーブルの最小サイズです。 テーブルのサイズがこのしきい値を超えると、自動統計収集中にテーブルがサンプリングされます。 デフォルト値:0。

ignore_runtime_filter_ids

無視されるランタイム フィルター。

デフォルトでは、この変数は空です。

max_filter_ratio

除外できるデータの最大比率。たとえば、データが標準に準拠していないために除外されます。デフォルト値:0。

max_instance_num

parallel_pipeline_task_num 変数が設定されていない場合に、SQL クエリに対して同時に実行できるパイプライン タスクの最大数です。デフォルト値:64 です。

parallel_pipeline_task_num

SQL クエリに対して同時に実行されるパイプラインタスクの数です。デフォルト値:0。

この変数を 0 に設定すると、ApsaraDB for SelectDB は各 BE ノードの CPU コア数を自動的に検出し、同時実行されるパイプラインタスクの数を CPU コア数の半分に設定します。これは、max_instance_num 変数の値を超えることはできません。

runtime_filter_type

使用するランタイム フィルターのタイプ。使用可能なランタイム フィルターは、Bloom フィルター、MinMax フィルター、IN 述語、IN または Bloom フィルター、およびビットマップ フィルターです。デフォルトでは、IN または Bloom フィルターが使用されます。場合によっては、Bloom フィルター、MinMax フィルター、および IN 述語を同時に使用すると、パフォーマンスが向上します。

runtime_filter_mode

ランタイムフィルターのプッシュダウンポリシー。OFF、LOCAL、および GLOBAL ポリシーを使用できます。デフォルトでは、GLOBAL ポリシーが使用されます。

runtime_filter_wait_time_ms

左テーブルのスキャン ノードが各ランタイム フィルターを待機する時間。単位:ミリ秒。デフォルト値:1000。

runtime_filters_max_num

各クエリで使用できるブルームフィルターの最大数。デフォルト値:10。

runtime_bloom_filter_min_size

Bloom フィルターの最小の長さです。単位:バイト。デフォルト値:1048576(1 MB)。

runtime_bloom_filter_max_size

Bloom フィルターの最大長。単位:バイト。デフォルト値:16777216(16 MB)。

runtime_bloom_filter_size

Bloom フィルターのデフォルトの長さです。単位:バイト。デフォルト値:2097152(2 MB を指定)。

runtime_filter_max_in_num

右側のテーブルの最大行数。右側のテーブルの行数がこの制限を超えると、IN 述語は生成されません。デフォルト値:1024。

parallel_fragment_exec_instance_num

各 BE ノードでスキャン範囲を処理するインスタンスの数です。デフォルト値:1。

実行計画では、スキャンするデータの範囲を指定するための一連のスキャン範囲が生成されます。データは複数の BE ノードに分散されます。BE ノードは 1 つ以上のスキャン範囲を持つ場合があります。デフォルトでは、各 BE ノード上の一連のスキャン範囲は 1 つのインスタンスによってのみ処理されます。マシンリソースが十分な場合は、この変数を変更して、より多くのインスタンスが各 BE ノード上の一連のスキャン範囲を処理できるようにすることができます。これにより、クエリの効率が向上します。

スキャン範囲を処理するインスタンスの数は、集計ノードや結合ノードなど、他のアップストリームノードの数を決定します。これは、実行計画の同時実行性も向上させます。この変数を変更することで、大規模なクエリの効率を向上させることができます。ただし、同時実行性を高めると、CPU、メモリ、ディスク I/O などのマシンリソースの消費量が増加します。

query_timeout

クエリのタイムアウト期間です。

この変数は、現在の接続におけるすべてのクエリ文に適用されます。insert_timeout 変数を INSERT 文に使用することをお勧めします。単位:秒。デフォルト値:900(15 分)。

insert_timeout

INSERT 文のタイムアウト期間。この変数は INSERT 文にのみ適用されます。INSERT 文の実行に時間がかかる場合は、この変数を使用することをお勧めします。

単位:秒。デフォルト値:14400(4 時間)。

以前のバージョンでは、query_timeout 変数の値を増やすことで INSERT 文のタイムアウトを回避できました。以前のバージョンのユーザーの習慣との互換性を維持するために、insert_timeout 変数の値が query_timeout 変数の値よりも小さい場合、insert_timeout 変数は有効になりません。

send_batch_parallelism

INSERT stmt 操作のバッチ処理対象データを送信する同時タスクのデフォルト数。この変数の値が BE 設定項目 max_send_batch_parallelism_per_job の値を超える場合、Coordinator BE ノードは BE 設定項目 max_send_batch_parallelism_per_job の値を使用します。

sql_mode

SQL モード。さまざまな SQL 構文のスタイルとデータ検証の厳密さに対応できます。詳細については、「SQL モード」をご参照ください。

sql_select_limit

SELECT 文 (INSERT 文の SELECT 句を含む) によって返される行のデフォルト数。

デフォルトでは、制限は設定されていません。

time_zone

現在のセッションのタイムゾーン。デフォルト値は、system_time_zone 変数の値と同じです。このタイムゾーンは、一部の時間関数の結果に影響します。詳細については、このトピックの「タイムゾーン変数」セクションをご参照ください。

wait_timeout

アイドル状態の接続のタイムアウト期間。アイドル状態の接続がタイムアウト期間内に ApsaraDB for SelectDB とやり取りしない場合、ApsaraDB for SelectDB は接続を閉じます。

単位:秒。デフォルト値:28800(8 時間)。

default_rowset_type

計算ノード上のストレージエンジンのデフォルトのストレージフォーマットです。

有効な値: alpha および beta。デフォルト値: beta。

use_v2_rollup

クエリ時に Segment V2 ストレージフォーマットの ROLLUP インデックスを使用してデータを取得するかどうかを指定します。

この変数は、Segment V2 機能を使用する場合の検証に使用されます。それ以外の場合は、この変数を使用しないことをお勧めします。

prefer_join_method

ブロードキャストジョインのコストとシャッフルジョインのコストが等しい場合の、ブロードキャストジョインとシャッフルジョインの間の優先結合メソッドです。

有効な値: broadcast と shuffle です。

insert_visible_timeout_ms

INSERT 文のクエリ操作と挿入操作が完了した後、ApsaraDB for SelectDB がトランザクションのコミットとデータの可視化を待機するタイムアウト期間です。

デフォルト値:10000。最小値は 1000 です。

cpu_resource_limit

クエリの計算リソースのオーバーヘッド。この機能は試験段階です。

この変数は、シングルノードでのクエリの スキャン スレッド数を制限します。スキャン スレッド数が制限されると、基盤となるレイヤーは低速でデータを返します。このようにして、クエリの計算リソースのオーバーヘッド全体を制限できます。この変数を 2 に設定すると、クエリはシングルノードで最大 2 つの スキャン スレッドを使用できます。

この変数は、parallel_fragment_exec_instance_num 変数をオーバーライドします。parallel_fragment_exec_instance_num 変数が 4 に設定され、この変数が 2 に設定されている場合、シングルノードの 4 つのインスタンスは最大 2 つの スキャン スレッドを共有します。

この変数は、cpu_resource_limit ユーザー プロパティによってオーバーライドされます。

デフォルト値:-1(制限なし)。

return_object_data_as_binary

SELECT 文の結果でビットマップ形式または HLL 形式のデータを返すかどうかを指定します。

SELECT INTO OUTFILE 文を実行した後、エクスポートされたファイルが CSV 形式の場合、ビットマップ形式または HLL 形式のデータは Base64 でエンコードされます。エクスポートされたファイルが Parquet 形式の場合、ビットマップ形式または HLL 形式のデータはバイト配列として保存されます。

次のサンプルコードは、Java の例を示しています。詳細については、「samples」をご参照ください。

try (Connection conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:9030/test?user=root");
             Statement stmt = conn.createStatement()
) {
    stmt.execute("set return_object_data_as_binary=true"); // 重要!!!
    ResultSet rs = stmt.executeQuery("SELECT uids from t_bitmap");
    while(rs.next()){
        byte[] bytes = rs.getBytes(1);
        RoaringBitmap bitmap32 = new RoaringBitmap();
        switch(bytes[0]) {
            case 0: // 空のビットマップの場合
                break;
            case 1: // bitmap32 に要素が 1 つだけの場合
                bitmap32.add(ByteBuffer.wrap(bytes,1,bytes.length-1)
                        .order(ByteOrder.LITTLE_ENDIAN)
                        .getInt());
                break;
            case 2: // bitmap32 に複数の要素がある場合
                bitmap32.deserialize(ByteBuffer.wrap(bytes,1,bytes.length-1));
                break;
            // 詳細については、https://github.com/apache/doris/tree/master/samples/read_bitmap を参照してください
        }
    }
}

block_encryption_mode

ブロック暗号化モード。デフォルト値:NULL。

AES_128_ECB の値は、高度暗号化標準 (AES) アルゴリズムを指定します。SM3_128_ECB の値は、商用暗号アルゴリズム 3 (SM3) アルゴリズムを指定します。

有効な値:

 AES_128_ECB, AES_192_ECB, AES_256_ECB, AES_128_CBC, AES_192_CBC, AES_256_CBC, AES_128_CFB, AES_192_CFB, AES_256_CFB, AES_128_CFB1, AES_192_CFB1, AES_256_CFB1, AES_128_CFB8, AES_192_CFB8, AES_256_CFB8, AES_128_CFB128, AES_192_CFB128, AES_256_CFB128, AES_128_CTR, AES_192_CTR, AES_256_CTR, AES_128_OFB, AES_192_OFB, AES_256_OFB, SM4_128_ECB, SM4_128_CBC, SM4_128_CFB128, SM4_128_OFB, SM4_128_CTR,

default_password_lifetime

パスワードのデフォルトの有効期限です。

デフォルト値: 0 (パスワードが期限切れにならないことを指定します)。単位:日。

この変数は、ユーザーの PASSWORD_EXPIRE ポリシーが DEFAULT に設定されている場合にのみ有効になります。例:

CREATE USER user1 IDENTIFIED BY "12345" PASSWORD_EXPIRE DEFAULT;
ALTER USER user1 PASSWORD_EXPIRE DEFAULT;

password_history

履歴パスワードのデフォルト数。

デフォルト値: 0 (制限なし)。

この変数は、ユーザーの PASSWORD_HISTORY ポリシーが DEFAULT に設定されている場合にのみ有効になります。例:

CREATE USER user1 IDENTIFIED BY "12345" PASSWORD_HISTORY DEFAULT;
ALTER USER user1 PASSWORD_HISTORY DEFAULT;

validate_password_policy

パスワード強度検証ポリシーです。

デフォルト値: NONE または 0。検証は行われません。有効な値: STRONG および 2。

この変数を STRONG または 2 に設定した場合、ALTER USER 文または SET PASSWORD 文を実行して設定するパスワードは、次の要件を満たしている必要があります。パスワードは 8 文字以上である必要があります。パスワードには、大文字、小文字、数字、特殊文字のうち、少なくとも 3 種類の文字が含まれている必要があります。

特殊文字には、次の文字が含まれます。~ ! @ # $ % ^ & * ( ) _ + | < > , . ? / : ; ' [ ] { } "

rewrite_or_to_in_predicate_threshold

OR を IN に書き換えるための OR 演算子のデフォルト数。

デフォルト値:2。これは、2 つの OR 演算子を IN 述語として書き換えることができることを指定します。

file_cache_base_path

BE 上のブロックファイルキャッシュのストレージパス。デフォルト値:random。BE 構成のストレージパスがランダムに選択されることを指定します。

topn_opt_limit_threshold

上位 N 件クエリ最適化機能の Limit 句のしきい値。デフォルト値:1024。

この例では、SELECT * FROM t ORDER BY k LIMIT n 文が使用されます。Limit 句の n がこのしきい値以下の場合、上位 N 件クエリ最適化機能 (動的フィルタリングとプッシュダウン、2 フェーズでの結果の取得、キーの順序でのデータ読み取りなど) が自動的に有効になります。それ以外の場合、上位 N 件クエリ最適化機能は無効になります。

use_fix_replica

クエリに固定レプリカを使用するかどうかを指定します。値は 0 から始まります。use_fix_replica 変数を 0 に設定すると、シリアル番号が最も小さいレプリカが使用されます。use_fix_replica 変数を 1 に設定すると、2 番目に小さいシリアル番号を持つレプリカが使用されます。

デフォルト値:-1(この機能が無効になっていることを指定します)。

互換性のある変数または予約変数

このタイプの変数は、実際的な効果はありません。

変数

説明

SQL_AUTO_IS_NULL

この変数は、JDBC 接続プール c3p0 との互換性を確保するために使用されます。実際的な効果はありません。

auto_increment_increment

この変数は、MySQL クライアントとの互換性を確保するために使用されます。実際的な効果はありません。ApsaraDB for SelectDB は 自動インクリメント 列をサポートしていますが、この変数は自動インクリメント列の動作には影響しません。これは auto_increment_offset 変数にも当てはまります。

autocommit

この変数は、MySQL クライアントとの互換性を確保するために使用されます。実際的な効果はありません。

character_set_client

この変数は、MySQL クライアントとの互換性を確保するために使用されます。実際的な効果はありません。

character_set_connection

この変数は、MySQL クライアントとの互換性を確保するために使用されます。実際的な効果はありません。

character_set_results

この変数は、MySQL クライアントとの互換性を確保するために使用されます。実際的な効果はありません。

character_set_server

この変数は、MySQL クライアントとの互換性を確保するために使用されます。実際的な効果はありません。

collation_connection

この変数は、MySQL クライアントとの互換性を確保するために使用されます。実際的な効果はありません。

collation_database

この変数は、MySQL クライアントとの互換性を確保するために使用されます。実際的な効果はありません。

collation_server

この変数は、MySQL クライアントとの互換性を確保するために使用されます。実際的な効果はありません。

have_query_cache

この変数は、MySQL クライアントとの互換性を確保するために使用されます。実際的な効果はありません。

init_connect

この変数は、MySQL クライアントとの互換性を確保するために使用されます。実際的な効果はありません。

interactive_timeout

この変数は、MySQL クライアントとの互換性を確保するために使用されます。実際的な効果はありません。

language

この変数は、MySQL クライアントとの互換性を確保するために使用されます。実際的な効果はありません。

max_allowed_packet

この変数は、JDBC 接続プール c3p0 との互換性を確保するために使用されます。実際的な効果はありません。

net_buffer_length

この変数は、MySQL クライアントとの互換性を確保するために使用されます。実際的な効果はありません。

net_read_timeout

この変数は、MySQL クライアントとの互換性を確保するために使用されます。実際的な効果はありません。

net_write_timeout

この変数は、MySQL クライアントとの互換性を確保するために使用されます。実際的な効果はありません。

query_cache_size

この変数は、MySQL クライアントとの互換性を確保するために使用されます。実際的な効果はありません。

query_cache_type

この変数は、JDBC 接続プール c3p0 との互換性を確保するために使用されます。実際的な効果はありません。

sql_safe_updates

この変数は、MySQL クライアントとの互換性を確保するために使用されます。実際的な効果はありません。

tx_isolation

この変数は、MySQL クライアントとの互換性を確保するために使用されます。実際的な効果はありません。

tx_read_only

この変数は、MySQL クライアントとの互換性を確保するために使用されます。実際的な効果はありません。

transaction_read_only

この変数は、MySQL クライアントとの互換性を確保するために使用されます。実際的な効果はありません。

transaction_isolation

この変数は、MySQL クライアントとの互換性を確保するために使用されます。実際的な効果はありません。

version

この変数は、MySQL クライアントとの互換性を確保するために使用されます。実際的な効果はありません。

performance_schema

この変数は、MySQL JDBC 8.0.16 以降との互換性を確保するために使用されます。実際的な効果はありません。

codegen_level

この変数は、LLVM codegen のレベルを設定するために使用されます。有効になりません。

license

この変数は、ApsaraDB for SelectDB のライセンスを表示するために使用されます。他に効果はありません。

resource_group

この変数は予約されています。

system_time_zone

この変数は、クラスタの初期化時にシステム タイムゾーンに設定されます。この変数は変更できません。

version_comment

この変数は、ApsaraDB for SelectDB のバージョンを表示するために使用されます。この変数は変更できません。

dump_nereids_memo

この変数は、回帰テストに使用されます。

group_concat_max_len

この変数は、一部のビジネス インテリジェンス(BI)ツールとの互換性を確保するために使用されます。実際的な効果はありません。

be_number_for_test

この変数は実際的な効果はありません。

workload_group

この変数は予約されています。

タイムアウト設定

ApsaraDB for SelectDB では、query_timeout 変数と insert_timeout 変数、および query_timeout ユーザー プロパティと insert_timeout ユーザー プロパティを使用して、タイムアウト設定を構成できます。

タイムアウト設定は、優先順位の高いものから順に、セッション変数 > ユーザー プロパティ > グローバル変数 > 既定値 の順に有効になります。優先順位の高いタイムアウト設定が構成されていない場合は、優先順位の低い設定が自動的に有効になります。

query_timeout は、すべてのステートメントのタイムアウト期間を制御するために使用されます。insert_timeout は、INSERT ステートメントのタイムアウト期間を制御するために使用されます。INSERT ステートメントを実行するときは、query_timeoutinsert_timeout で設定された期間のうち、長い方のタイムアウト期間が使用されます。

query_timeout および insert_timeout ユーザー プロパティは、特定のユーザーに対して管理者ユーザーのみが構成します。これらの 2 つのユーザー プロパティは、指定されたユーザーのデフォルトのタイムアウト設定を変更するために使用され、quota セマンティクスを持ちません。user properties で構成されたタイムアウト設定は、クライアントが再接続された後に有効になります。

参照資料

  • タイムゾーン形式の詳細については、「List of tz database time zones」をご参照ください。

  • インターネット割り当て番号局 ( IANA ) タイムゾーンデータベースの詳細については、「IANA Time Zone Database」をご参照ください。

  • ICANN タイムゾーンデータベースの詳細については、「The tz-announce Archives」をご参照ください。