메인 콘텐츠로 건너뛰기
Merge 엔진(MergeTree와 혼동하지 마십시오)은 자체적으로 데이터를 저장하지는 않지만, 여러 다른 테이블에서 동시에 읽을 수 있게 해줍니다. 읽기는 자동으로 병렬 처리됩니다. 테이블에 쓰기는 지원되지 않습니다. 읽을 때는 실제로 읽는 테이블에 인덱스가 있으면 해당 인덱스가 사용됩니다.

테이블 생성하기

엔진 매개변수

db_name

db_name — 가능한 값:
  • 데이터베이스 이름,
    • 데이터베이스 이름 문자열을 반환하는 상수 표현식, 예를 들어 currentDatabase(),
    • REGEXP(expression), 여기서 expression은 DB 이름과 일치하는 정규식입니다.

tables_regexp

tables_regexp — 지정된 DB 또는 여러 DB의 테이블 이름과 일치하는 정규식입니다. 정규식 — re2 (PCRE의 부분 집합 지원), 대소문자를 구분합니다. 정규식에서 기호를 이스케이프하는 방법에 대한 참고 사항은 “match” 섹션을 참조하십시오.

사용법

읽을 테이블을 선택할 때 Merge 테이블 자체는 regex와 일치하더라도 선택되지 않습니다. 이는 루프를 방지하기 위해서입니다. 서로의 데이터를 끝없이 읽으려 하는 두 개의 Merge 테이블을 만들 수도 있지만, 좋은 방법은 아닙니다. Merge 엔진을 사용하는 일반적인 방식은 많은 수의 TinyLog 테이블을 하나의 테이블처럼 다루는 것입니다.

예시

예시 1 ABC_corporate_siteABC_store라는 두 개의 데이터베이스를 가정해 보겠습니다. all_visitors 테이블에는 두 데이터베이스의 visitors 테이블에 있는 ID가 포함됩니다.
예시 2 기존 테이블 WatchLog_old가 있고, 데이터를 새 테이블 WatchLog_new로 옮기지 않고 파티셔닝을 변경하기로 했으며, 두 테이블의 데이터를 모두 확인해야 한다고 가정해 보겠습니다.

가상 컬럼

  • _table — 데이터를 읽어온 테이블의 이름입니다. 유형: String. _table로 필터링하면(예: WHERE _table='xyz') 필터 조건을 만족하는 테이블만 읽어옵니다.
  • _database — 데이터를 읽어온 데이터베이스의 이름이 들어 있습니다. 유형: String.
관련 항목
마지막 수정일 2026년 6월 10일