머티리얼라이즈드 뷰 관련 설정

머티리얼라이즈드 뷰 관련 설정

데이터를 종속 머티리얼라이즈드 뷰로 푸시할 때의 오류 처리, POPULATE의 원자성, 병렬 삽입의 스쿼시 등을 제어하는 설정들이에요. 이 설정들은 system.settings 테이블에서 확인할 수 있고 소스 코드에서 자동 생성된 값들이에요.

출처: 문서

본문

이 설정들은 system.settings에서 확인할 수 있고, 소스 코드에서 자동 생성된 값들이에요.

materialized_views_ignore_errors

활성화하면 종속 머티리얼라이즈드 뷰로 데이터를 푸시하는 동안(SELECT 또는 내부 테이블 sink에서) 발생한 예외가 경고로 기록되고 INSERT 문장이 성공해요. 비활성화(기본값)하면 그러한 예외가 전파되어 INSERT 문장이 실패해요.

이 설정은 오류 보고만 제어해요. 소스 테이블에 대한 쓰기를 롤백하지 않으며, 종속 뷰의 파이프라인에서 오류가 발생할 때 원래 블록이 이미 소스 테이블에 커밋되었는지 여부도 보장하지 않아요. 비활성화(기본값)하면 뷰 오류가 있을 때 INSERT가 실패해요. 삽입 중복 제거(insert_deduplicate, deduplicate_blocks_in_dependent_materialized_views)와 함께 재시도하면 소스 테이블과 모든 종속 뷰에 정확히 한 번 전달할 수 있어요. 활성화하면 소스 테이블 쓰기가 뷰 측 문제로 차단되지 않아야 할 때만 사용하세요(예: system.*_log 테이블). 전체 의미는 CREATE VIEW 문서를 참조하세요.

materialized_views_populate_atomically

CREATE MATERIALIZED VIEW ... POPULATE를 원자적으로 만들어요. 뷰가 소스 테이블의 새 삽입을 구독하고, 기존 데이터의 스냅샷이 소스 테이블에 대한 짧은 배타적 잠금 아래에서 함께 찍혀, population과 동시에 삽입된 모든 행이 뷰에 정확히 한 번 전달되도록 해요(놓치지도 중복하지도 않음). (아마도 오래 걸리는) population은 잠금을 잡지 않고 고정된 스냅샷을 읽어요.

이는 로컬 삽입 경로 원자성이에요. 배타적 잠금은 같은 서버에서 이 소스 테이블의 스토리지 잠금을 획득하는 삽입과만 직렬화되므로, 정확히 한 번 보장은 이 서버를 통해 도착하는 삽입을 다뤄요. 클러스터 차원의 보장은 아니에요. ReplicatedMergeTree 소스의 다른 레플리카에서 삽입되거나 분산 쓰기 경로(예: Distributed 테이블 또는 ON CLUSTER를 통해)로 population과 동시에 삽입된 행은 여전히 놓치거나 중복될 수 있어요.

이를 위해서는 소스 테이블이 고정된 시점 스냅샷 읽기를 지원해야 해요(MergeTree 계열과 Memory). 다른 소스(뷰, Distributed, Merge, Log 계열, Atomic 데이터베이스에 없는 테이블)의 경우 population은 레거시 비-원자 동작으로 되돌아가요(서버 로그에 기록됨). 기존 데이터가 별도의 비-조정 스냅샷으로 읽혀 population 동안 삽입된 행이 놓치거나 중복될 수 있어요. 모든 소스에서 레거시 동작을 강제하려면 이 설정을 false로 설정하세요.

일반 CREATE MATERIALIZED VIEW에만 적용돼요. CREATE OR REPLACE / REPLACE는 항상 레거시 비-원자 population을 사용하고, Replicated 데이터베이스에 생성된 뷰도 마찬가지예요(거기서 POPULATEdatabase_replicated_allow_heavy_create가 필요함). 실패한 population이 모든 레플리카에서 일관되게 롤백될 수 없기 때문이에요.

materialized_views_squash_parallel_inserts

단일 INSERT 쿼리의 머티리얼라이즈드 뷰 대상 테이블로의 삽입을 병렬 삽입에서 스쿼시해 생성되는 파트 수를 줄여요.

false로 설정하고 parallel_view_processing이 활성화되면 INSERT 쿼리가 각 max_insert_thread에 대해 대상 테이블에 파트를 생성해요.

더 알아보기 (Learn more)