[go: up one dir, main page]

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

クエリレベルのセッション設定

概要

特定の設定でステートメントを実行する方法はいくつかあります。
設定は階層で構成されており、各後続の階層は、設定の前の値を再定義します。

優先順位

設定を定義するための優先順位は次のとおりです:

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

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

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

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

デフォルト値への設定のリセット

設定を変更し、デフォルト値に戻したい場合は、値を 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       │
└─────────┘

カスタム設定

一般的な settings に加えて、ユーザーはカスタム設定を定義することができます。

カスタム設定名は、事前定義されたプレフィックスの1つで始まる必要があります。これらのプレフィックスのリストは、サーバー構成ファイル内の custom_settings_prefixes パラメータで宣言する必要があります。

<custom_settings_prefixes>custom_</custom_settings_prefixes>

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

SET custom_a = 123;

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

SELECT getSetting('custom_a');

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

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

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

CREATE USER ingester
IDENTIFIED WITH sha256_hash BY '7e099f39b84ea79559b3e85ea046804e63725fd1f46b37f281276aae20f86dc3'
-- highlight-next-line
SETTINGS async_insert = 1

設定プロファイルと割り当てを調査する

SHOW ACCESS
┌─ACCESS─────────────────────────────────────────────────────────────────────────────┐
│ ...                                                                                │

# highlight-next-line
│ CREATE USER ingester IDENTIFIED WITH sha256_password SETTINGS async_insert = true  │
│ ...                                                                                │
└────────────────────────────────────────────────────────────────────────────────────┘

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

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

CREATE
SETTINGS PROFILE log_ingest SETTINGS async_insert = 1

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

CREATE USER ingester
IDENTIFIED WITH sha256_hash BY '7e099f39b84ea79559b3e85ea046804e63725fd1f46b37f281276aae20f86dc3'
-- highlight-next-line
SETTINGS PROFILE log_ingest

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

<clickhouse>

# highlight-start
    <profiles>
        <log_ingest>
            <async_insert>1</async_insert>
        </log_ingest>
    </profiles>

# highlight-end

    <users>
        <ingester>
            <password_sha256_hex>7e099f39b84ea79559b3e85ea046804e63725fd1f46b37f281276aae20f86dc3</password_sha256_hex>

# highlight-start
            <profile>log_ingest</profile>

# highlight-end
        </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                                │

# highlight-next-line
│ CREATE USER ingester IDENTIFIED WITH sha256_password SETTINGS PROFILE log_ingest   │
│ CREATE SETTINGS PROFILE default                                                    │

# highlight-next-line
│ 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
-- highlight-next-line
SETTINGS async_insert=1
VALUES (...)

その他