Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

materialized_views_* セッション設定

これらの設定は system.settings で参照でき、ソースコード から自動生成されています。

materialized_views_ignore_errors

Bool
デフォルト値
0

有効にすると、依存する materialized view へのデータのプッシュ中 (その SELECT または内部テーブル sink 内) に発生した例外は警告として記録され、INSERT ステートメントは成功します。無効な場合 (既定値) 、このような例外は伝播し、INSERT ステートメントは失敗します。

この設定が制御するのはエラー報告のみです。source table への書き込みはロールバックされず、依存 view の pipeline でエラーが発生した時点で、元の block がすでに source table に commit 済みかどうかも保証されません。無効な場合 (既定値) 、view のエラーにより INSERT は失敗します。この場合は、source table とすべての dependent views に対して exactly-once 配信を実現するため、挿入の重複排除 (insert_deduplicate, deduplicate_blocks_in_dependent_materialized_views) を使用して再試行してください。有効な場合、失敗した view とその下流の chains には部分的にしか配信されていなくても、INSERT は成功として報告されます。これは、view 側の問題によって source table への書き込みをブロックしてはならない場合にのみ使用してください (たとえば system.*_log tables) 。完全な意味については、CREATE VIEW のドキュメントを参照してください。

materialized_views_populate_atomically

Bool
デフォルト値
1
バージョン履歴
バージョンデフォルト値コメント
26.81ソースに対する短時間の排他ロック下で、既存データのスナップショット取得とビューの新規 insert のサブスクライブを同時に行うことで、通常の `CREATE MATERIALIZED VIEW ... POPULATE` をローカルでアトミックにする新しい設定です。同じ server を介して挿入された行は、欠落も重複もありません。この保証はローカルの insert パスに限られ、別のレプリカまたは分散書き込みによって到着する insert は対象外です。また、固定されたスナップショットを提供できるソース(`MergeTree` ファミリーおよび `Memory`)が必要です。その他のソース、および `CREATE OR REPLACE` / `REPLACE` では、従来の非アトミックな population が維持されます。すべてのソースで従来の非アトミックな動作を使用するには、`false` に設定します。

CREATE MATERIALIZED VIEW ... POPULATE をアトミックにします。source table の新規 insert をビューがサブスクライブすることと、既存データのスナップショット取得を、source table に対する短時間の排他ロック下で同時に行います。これにより、population と同時に挿入されたすべての行は、欠落も重複もなく、exactly-once でビューに配信されます。その後の (長時間実行される可能性がある) population は、ロックを保持せずに固定されたスナップショットを読み取ります。

これはローカルの insert パスにおけるアトミック性です。排他ロックは、同じ server 上でこの source table の storage lock を取得する insert とのみ直列化されるため、exactly-once の保証はこの server 経由で到着する insert に限られます。これはクラスター全体の保証ではありません。ReplicatedMergeTree ソースの別のレプリカ上で、または分散書き込みパス (たとえば Distributed table への書き込みや ON CLUSTER 経由) を通じて population と同時に挿入された行は、依然として欠落または重複する可能性があります。

この機能には、source table が固定された特定時点のスナップショットの読み取りをサポートしている必要があります (MergeTree ファミリーおよび Memory) 。その他のソース (view、DistributedMergeLog ファミリー、または Atomic database に属さない table) では、population は従来の非アトミックな動作にフォールバックします (server log に記録されます) 。既存データは個別の連携されていないスナップショットで読み取られるため、population 中に挿入された行は欠落または重複する可能性があります。すべてのソースで従来の動作を強制するには、この設定を false にします。通常の CREATE MATERIALIZED VIEW にのみ適用されます。CREATE OR REPLACE / REPLACE は常に従来の非アトミックな population を使用します。また、Replicated database で作成された view (POPULATE には database_replicated_allow_heavy_create が必要) も同様です。これは、population が失敗した場合、そこでのすべてのレプリカで一貫してロールバックできないためです。

materialized_views_squash_parallel_inserts

Bool
デフォルト値
1
バージョン履歴
バージョンデフォルト値コメント
25.101必要に応じて従来の動作を維持するための設定を追加しました。

生成されるパーツ数を減らすため、単一の INSERT クエリによる並列 insert で materialized view の宛先テーブルに対して行われる insert をまとめます。 false に設定され、parallel_view_processing が有効な場合、INSERT クエリは max_insert_thread ごとに宛先テーブルにパーツを生成します。

Navigation