Skip to main content
Edit this page

クエリレベルの設定

ClickHouseのクエリレベル設定を設定する方法はいくつかあります。設定はレイヤーとして構成され、後のレイヤーは前の設定値を再定義します。

設定を定義する際の優先順位は以下の通りです:

  1. ユーザーに直接、または設定プロファイル内で設定を適用する

    • SQL(推奨)
    • 一つまたは複数のXMLまたはYAMLファイルを/etc/clickhouse-server/users.dに追加する
  2. セッション設定

    • ClickHouse Cloud SQLコンソールまたはインタラクティブモードのclickhouse clientからSET setting=valueを送信する。同様に、HTTPプロトコルでClickHouseセッションを使用することもできます。これを行うには、session_id HTTPパラメータを指定する必要があります。
  3. クエリ設定

    • 非インタラクティブモードでclickhouse clientを起動する際に、スタートパラメータ--setting=valueを設定する。
    • HTTP APIを使用する場合、CGIパラメータを渡す(URL?setting_1=value&setting_2=value...)。
    • SELECTクエリのSETTINGS句で設定を定義する。設定値はそのクエリに対してのみ適用され、クエリ実行後にデフォルトまたは前の値にリセットされます。

これらの例ではすべて、async_insert設定の値を1に設定し、実行中のシステムでの設定の確認方法を示します。

SQLを使用してユーザーに直接設定を適用する

これは、設定async_inset = 1を持つユーザーingesterを作成します:

CREATE USER ingester
IDENTIFIED WITH sha256_hash BY '7e099f39b84ea79559b3e85ea046804e63725fd1f46b37f281276aae20f86dc3'
SETTINGS async_insert = 1

設定プロファイルと割り当てを確認

SHOW ACCESS
┌─ACCESS─────────────────────────────────────────────────────────────────────────────┐
│ ... │
│ CREATE USER ingester IDENTIFIED WITH sha256_password SETTINGS async_insert = true │
│ ... │
└────────────────────────────────────────────────────────────────────────────────────┘

SQLを使用して設定プロファイルを作成しユーザーに割り当てる

これは、設定async_inset = 1を持つプロファイルlog_ingestを作成します:

CREATE
SETTINGS PROFILE log_ingest SETTINGS async_insert = 1

これは、ユーザーingesterを作成し、ユーザーに設定プロファイルlog_ingestを割り当てます:

CREATE USER ingester
IDENTIFIED WITH sha256_hash BY '7e099f39b84ea79559b3e85ea046804e63725fd1f46b37f281276aae20f86dc3'
SETTINGS PROFILE log_ingest

XMLを使用して設定プロファイルとユーザーを作成する

/etc/clickhouse-server/users.d/users.xml
<clickhouse>
<profiles>
<log_ingest>
<async_insert>1</async_insert>
</log_ingest>
</profiles>

<users>
<ingester>
<password_sha256_hex>7e099f39b84ea79559b3e85ea046804e63725fd1f46b37f281276aae20f86dc3</password_sha256_hex>
<profile>log_ingest</profile>
</ingester>
<default replace="true">
<password_sha256_hex>7e099f39b84ea79559b3e85ea046804e63725fd1f46b37f281276aae20f86dc3</password_sha256_hex>
<access_management>1</access_management>
<named_collection_control>1</named_collection_control>
</default>
</users>
</clickhouse>

設定プロファイルと割り当てを確認

SHOW ACCESS
┌─ACCESS─────────────────────────────────────────────────────────────────────────────┐
│ CREATE USER default IDENTIFIED WITH sha256_password │
│ CREATE USER ingester IDENTIFIED WITH sha256_password SETTINGS PROFILE log_ingest │
│ CREATE SETTINGS PROFILE default │
│ CREATE SETTINGS PROFILE log_ingest SETTINGS async_insert = true │
│ CREATE SETTINGS PROFILE readonly SETTINGS readonly = 1 │
│ ... │
└────────────────────────────────────────────────────────────────────────────────────┘

セッションに設定を割り当てる

SET async_insert = 1;
SELECT value FROM system.settings where name='async_insert';
┌─value──┐
│ 1 │
└────────┘

クエリ中に設定を割り当てる

INSERT INTO YourTable
SETTINGS async_insert=1
VALUES (...)

設定をデフォルト値に戻す

設定を変更し、それをデフォルト値に戻したい場合、値をDEFAULTに設定します。その構文は以下の通りです:

SET setting_name = DEFAULT

例えば、async_insertのデフォルト値は0です。値を1に変更したとします:

SET async_insert = 1;

SELECT value FROM system.settings where name='async_insert';

レスポンスは以下の通りです:

┌─value──┐
│ 1 │
└────────┘

次のコマンドはその値を0に戻します:

SET async_insert = DEFAULT;

SELECT value FROM system.settings where name='async_insert';

設定はデフォルトに戻りました:

┌─value───┐
│ 0 │
└─────────┘

カスタム設定

共通の設定に加えて、ユーザーはカスタム設定を定義することができます。

カスタム設定名は、指定されたプレフィックスのいずれかで始める必要があります。これらのプレフィックスのリストは、サーバー設定ファイルのcustom_settings_prefixesパラメータで宣言する必要があります。

<custom_settings_prefixes>custom_</custom_settings_prefixes>

カスタム設定を定義するにはSETコマンドを使用します:

SET custom_a = 123;

カスタム設定の現在の値を取得するには、getSetting()関数を使用します:

SELECT getSetting('custom_a');

関連情報