特定の設定でステートメントを実行する方法はいくつかあります。
設定は階層で構成されており、各後続の階層は、設定の前の値を再定義します。
優先順位
設定を定義するための優先順位は次のとおりです:
-
ユーザーに直接、または設定プロファイル内で設定を適用する
- SQL(推奨)
- 1つ以上のXMLまたはYAMLファイルを
/etc/clickhouse-server/users.d
に追加
-
セッション設定
- ClickHouse Cloud SQLコンソールから
SET setting=value
を送信するか、または
対話モードの clickhouse client
で送信します。同様に、HTTPプロトコルでClickHouse
セッションを使用できます。そのためには、session_id
HTTPパラメータを指定する必要があります。
-
クエリ設定
- 非対話モードで
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
コマンドを使用します:
現在のカスタム設定の値を取得するには、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
設定プロファイルと割り当てを調査する
┌─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>
設定プロファイルと割り当てを調査する
┌─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 (...)
その他