table_disk
これはテーブルディスクです。path/endpoint は、database のデータではなく テーブル のデータを指します。 メタデータがオブジェクトストレージ自体に格納されるオブジェクトストレージディスク (s3_plain, s3_plain_rewritable, web, web_index) およびそのキャッシュ付きバリアントでサポートされます。暗号化された バリアントは、書き込み可能な s3_plain / s3_plain_rewritable ディスク上でのみサポートされ、 読み取り専用の web / web_index ディスク上ではサポートされません。 パス配下にすでに存在するパーツは、このテーブルで宣言されたカラムおよび sorting key と一致しているものとみなされます。パーツの書き込み時にどの sorting key が使われたかはどこにも記録されないため、 同じパーツに対して異なる sorting key を宣言したテーブルでは、誤った結果が返されるか、エラーが発生します。table_readonly
true に設定すると、テーブルは読み取り専用モードになります。 テーブルを変更するフォアグラウンド操作はすべて拒否されます。対象となるのは、挿入、ミューテーション、OPTIMIZE、およびデータを変更するパーティションコマンド
(ATTACH/MOVE/DROP/DROP DETACHED/FETCH/REPLACE PARTITION、ならびにこのテーブルを移動先とする MOVE PARTITION ... TO TABLE)です。FREEZE/UNFREEZE や FORGET PARTITION など、
テーブルのデータを変更しない操作は引き続き実行できます。
テーブルデータを変更するバックグラウンド処理はスケジュールされません。通常のマージ、TTL マージ(DELETE/MOVE/再圧縮)、再圧縮マージ、バックグラウンドミューテーション、
およびバックグラウンドでのパーツ移動はすべて停止されます。そのため、この設定が有効な間は、有効期限 (TTL) が設定されたテーブルでも期限切れデータの回収や移動が行われません。
クリーンアップは、実行中のクリーンアップ処理の完了を待ってから停止されます。書き込み可能なテーブルが起動後に実行する outdated(非アクティブ)パーツの非同期読み込みは、
まだ保留中であれば中断されます。キューに入っていても未開始の読み込みを含め、それ以降のパーツは読み込まれません。読み込まれずに残ったパーツは、設定が再び無効化された時点で読み込まれます。
バックグラウンドの worker は、設定を有効にする ALTER がコミットされる前に無効化されます。そのため、すでに永続的に読み取り専用となったテーブルでクリーンアップやパーツの読み込みが開始されることはありません。
すでに開始済みのパーツの読み込みなど、実行中のその他の操作は最後まで完了する場合があります。
インメモリの統計キャッシュは引き続き定期的にリフレッシュされます。このバックグラウンドタスクも無効にするには、refresh_statistics_interval = 0 を設定してください。
ストリーミング読み取り(SELECT ... STREAM)は引き続き動作します。そのサブスクリプションを処理するバックグラウンドジョブはパーツを読み取るだけなので、読み取り専用テーブルでも実行されます。
この設定は、ALTER TABLE ... MODIFY SETTING table_readonly = 0(または RESET SETTING)でいつでも元に戻せます。読み取り専用テーブルで起動されていなかったバックグラウンドの worker は
その時点で起動されるため、マージ、ミューテーション、移動、TTL、クリーンアップはサーバーを再起動しなくても再開されます。
outdated(非アクティブ)パーツは、それらを包含する空のパーツをクリーンアップが削除できるようになる前に読み込まれます。その ALTER の実行中はずっと、同時実行クエリから見てテーブルは読み取り専用のままです。
書き込みを再び受け付けるのは、メタデータがコミットされた時点ではなく、ステートメントが完了した後です。
この設定は ReplicatedMergeTree ではサポートされていません。