settings profile を変更します。
構文:
ON CLUSTER 句を使用すると、クラスター上で settings profile を変更できます。詳しくは Distributed DDL を参照してください。
ALTER SETTINGS PROFILE では、プロファイルの設定や親 (継承元) プロファイルを変更する方法が2つ用意されています。これらは動作が大きく異なるため、適切な方法を選ぶことが重要です。
単独の SETTINGS 句 (ADD、MODIFY、DROP なし) は、プロファイルの設定リスト全体とすべての親プロファイルを、ここに列挙した内容に完全に置き換えます。以前存在していた項目でも、一覧に含まれていないものは警告なしで削除されます。
SETTINGS 単体の形式は完全置換であるため、設定が定義済みのベースプロファイルに対して「1 つの設定だけを上書きする」つもりでこれを使うと、そのプロファイルのほかのすべての設定 (およびすべての親プロファイル) が削除されます。ほかの設定を残したまま 1 つの設定だけを変更したい場合は、以下で説明するインクリメンタルな MODIFY/ADD/DROP 形式を使用してください。
これは CREATE SETTINGS PROFILE における SETTINGS と同じ動作です。この句は設定の完全な一覧を定義します。
ADD、MODIFY、DROP キーワードを使うと、プロファイルのそれ以外の部分はそのままに、個々のエントリだけを変更できます。
ADD SETTINGS variable = value [constraints] — まだ存在しない設定を追加します。
MODIFY SETTINGS variable = value [constraints] — 1 つの設定エントリを置き換えます。エントリ全体 (値と制約) が上書きされるため、それらを維持したい場合は MIN/MAX/READONLY/etc. を再指定してください。
DROP SETTINGS variable [,...] — 指定した設定を削除します。
ADD PROFILES 'profile_name' [,...] / DROP PROFILES 'profile_name' [,...] — 親 (継承元) プロファイルを追加または削除します。
DROP ALL SETTINGS / DROP ALL PROFILES — すべての設定、またはすべての親プロファイルを削除します。
これらの句は、複数を 1 つのステートメントに組み合わせることもできます。たとえば DROP SETTINGS a ADD SETTINGS b = 1 のように記述できます。
設定済みのプロファイルの他の設定はそのままに、1 つの設定だけを上書きします:
新しい制約付きの設定を追加し、別の設定を削除します:
親プロファイルを増分方式で管理します:
必ず SHOW CREATE SETTINGS PROFILE で結果を確認してください:
単独の SETTINGS 句を使うと、新しい設定を適用する前に、プロファイル内の既存の設定と継承元 (親) プロファイルがすべて削除されます。
他の設定はそのままにして1つの設定だけを変更するには、ADD SETTINGS または MODIFY SETTINGS を使用してください (以下の例を参照) 。
ADD SETTINGS と MODIFY SETTINGS はどちらも、プロファイル内の他の設定は保持しますが、同じ設定に対する既存エントリの扱いは異なります。
ADD SETTINGS variable = value ... は、まず variable の既存エントリを削除し、その後に新しいエントリを挿入します。したがって、その設定の値とすべての制約をまとめて置き換えます。variable に対して以前に定義されていた MIN、MAX、または書き込み可否 (READONLY/WRITABLE/CONST/CHANGEABLE_IN_READONLY) のうち、再度指定しなかったものは破棄されます。
MODIFY SETTINGS variable = value ... は、フィールドごとにマージします。実際に指定したフィールド (値、MIN、MAX、または書き込み可否) だけを上書きし、その設定の他のフィールドは元のまま保持します。
要するに、設定の一部だけを調整したい場合 (たとえば既存の MAX は維持したまま値だけを変更する場合) は MODIFY SETTINGS を使います。設定を最初から再定義したい場合は ADD SETTINGS を使います。
以下の例で使用するプロファイルを作成します。
ほかの設定はそのままに、1 つの設定を追加または変更します。
MODIFY はフィールド単位でマージされるため、設定の値だけを変更しても、既存の制約は維持されます:
設定を追加します (ほかの設定はそのまま保持されます) 。すでに存在する場合は、完全に再定義されます:
MODIFY とは異なり、値だけを指定して ADD を再実行すると、その設定に以前定義されていた制約は削除されます。
1つ以上の名前付き設定を削除します:
すべての設定を一括で削除します:
プロファイル自体の設定に影響を与えることなく、親 (継承元) プロファイルを追加または削除できます: