Skip to main content
이 설정은 system.settings에서 확인할 수 있으며 소스 코드에서 자동 생성됩니다.

materialized_views_ignore_errors

활성화하면 종속 materialized view로 데이터를 푸시하는 중(SELECT 또는 내부 테이블 싱크에서) 발생한 예외가 경고로 기록되고 INSERT 문은 성공합니다. 비활성화하면(기본값) 이러한 예외가 전파되어 INSERT 문이 실패합니다. 이 설정은 오류 보고만 제어합니다. 원본 테이블에 대한 쓰기를 롤백하지 않으며, 종속 뷰의 pipeline에서 오류가 발생했을 때 원래 block이 이미 원본 테이블에 commit되었는지도 보장하지 않습니다. 비활성화하면(기본값) 뷰 오류 시 INSERT가 실패합니다. 원본 테이블과 모든 종속 뷰에 exactly-once로 전달하려면 삽입 중복 제거(insert_deduplicate, deduplicate_blocks_in_dependent_materialized_views)와 함께 다시 시도하십시오. 활성화하면 실패한 뷰와 그 downstream chain에 부분적으로만 전달된 경우에도 INSERT는 성공으로 보고됩니다. 원본 테이블 쓰기가 뷰 측 문제로 차단되어서는 안 되는 경우(예: system.*_log 테이블)에만 이 설정을 사용하십시오. 전체 의미 체계는 CREATE VIEW 문서를 참조하십시오.

materialized_views_populate_atomically

CREATE MATERIALIZED VIEW ... POPULATE를 원자적으로 처리합니다. 원본 테이블에 짧은 독점 잠금을 설정한 상태에서 뷰가 원본 테이블의 새 삽입을 구독하고 기존 데이터의 스냅샷을 함께 생성하므로, 데이터 채우기와 동시에 삽입되는 모든 행이 정확히 한 번(누락이나 중복 없이) 뷰로 전달됩니다. 이후 장기 실행될 수 있는 데이터 채우기는 잠금을 유지하지 않고 고정된 스냅샷을 읽습니다. 이는 로컬 삽입 경로에 대한 원자성입니다. 독점 잠금은 동일한 서버에서 이 원본 테이블의 스토리지 잠금을 획득하는 삽입과만 직렬화되므로, 정확히 한 번 보장은 이 서버를 통해 도착하는 삽입에 적용됩니다. 클러스터 전체에 대한 보장은 아닙니다. 데이터 채우기와 동시에 ReplicatedMergeTree 원본의 다른 레플리카에 삽입되거나 분산 쓰기 경로(예: Distributed 테이블 또는 ON CLUSTER를 통해)를 통해 삽입된 행은 여전히 누락되거나 중복될 수 있습니다. 이 기능을 사용하려면 원본 테이블이 고정된 특정 시점의 스냅샷 읽기를 지원해야 합니다(MergeTree 엔진 계열 및 Memory). 다른 원본(뷰, Distributed, Merge, Log 엔진 계열 또는 Atomic 데이터베이스에 없는 테이블)의 경우 데이터 채우기는 기존의 비원자적 동작으로 대체되며, 이 사실은 서버 로그에 기록됩니다. 즉, 기존 데이터는 별도의 조정되지 않은 스냅샷으로 읽히므로 데이터 채우기 중 삽입된 행이 누락되거나 중복될 수 있습니다. 모든 원본에 기존 동작을 강제하려면 이 설정을 false로 지정하십시오. 일반 CREATE MATERIALIZED VIEW에만 적용됩니다. CREATE OR REPLACE / REPLACE는 항상 기존의 비원자적 데이터 채우기를 사용하며, Replicated 데이터베이스에서 생성된 뷰도 마찬가지입니다(POPULATE에는 database_replicated_allow_heavy_create가 필요함). 해당 환경에서는 실패한 데이터 채우기를 모든 레플리카에서 일관되게 롤백할 수 없기 때문입니다.

materialized_views_squash_parallel_inserts

생성되는 파트 수를 줄이기 위해, 병렬 삽입 시 단일 INSERT 쿼리가 materialized view 대상 테이블에 수행하는 삽입을 병합합니다. false로 설정되어 있고 parallel_view_processing이 활성화된 경우, INSERT 쿼리는 각 max_insert_thread마다 대상 테이블에 파트를 생성합니다.
마지막 수정일 2026년 8월 14일