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

max_temporary_columns

쿼리를 실행할 때 상수 컬럼을 포함하여 동시에 RAM에 유지할 수 있는 임시 컬럼의 최대 개수입니다. 중간 계산 결과로 메모리에 지정된 개수를 초과하는 임시 컬럼이 생성되면 예외가 발생합니다.
이 설정은 지나치게 복잡한 쿼리를 방지하는 데 유용합니다.
0 값은 무제한을 의미합니다.

max_temporary_data_on_disk_size_for_query

동시에 실행되는 모든 쿼리에서 디스크의 임시 파일이 사용할 수 있는 최대 데이터 크기(바이트)입니다. 가능한 값:
  • 양의 정수
  • 0 — 무제한(기본값)

max_temporary_data_on_disk_size_for_user

동시에 실행되는 모든 사용자 쿼리에서 디스크의 임시 파일이 사용할 수 있는 최대 데이터 크기(바이트)입니다. Possible values:
  • 양의 정수입니다.
  • 0 — 무제한(기본값)

max_temporary_non_const_columns

max_temporary_columns와 마찬가지로, 쿼리 실행 시 상수 컬럼을 제외하고 동시에 RAM에 유지해야 하는 임시 컬럼의 최대 개수입니다.
상수 컬럼은 쿼리 실행 중 매우 자주 생성되지만, 컴퓨팅 리소스를 거의 사용하지 않습니다.

max_temporary_table_memory_usage

Memory 엔진을 사용하는 임시 테이블 하나가 보유할 수 있는 최대 메모리 바이트 수입니다. 이 설정은 CREATE TEMPORARY TABLE로 생성된 테이블에 적용되며, 기본 임시 테이블 엔진(default_temporary_table_engine 참조)으로 생성된 테이블도 포함됩니다. 메모리 사용량은 system.tables의 total_bytes와 동일한 방식으로 계산됩니다. 이 제한은 테이블에 대한 모든 INSERT(CREATE TEMPORARY TABLE ... AS SELECT 포함)에서 데이터를 수신하는 동안 검사되고, 데이터를 추가하기 직전에 다시 한 번 검사됩니다. 테이블이 제한을 초과하게 되면 INSERT는 TOO_MANY_BYTES 오류 코드와 함께 예외를 발생시키며 데이터는 추가되지 않습니다. 여러 스레드로 쓰기를 수행하는 INSERT( max_insert_threads 참조)는 각 스레드의 데이터를 개별적으로 추가합니다. 따라서 한 스레드에서 예외가 발생했을 때 일부 다른 스레드의 데이터는 이미 추가되어 있을 수 있지만, 테이블이 제한을 초과하는 일은 없습니다. 이 값은 INSERT 쿼리의 설정에서 가져옵니다. 이 제한은 뮤테이션(ALTER TABLE ... UPDATE, MATERIALIZE COLUMN 등) 후에도 검사되며, 이때 값은 ALTER 쿼리의 설정에서 가져옵니다. 뮤테이션된 데이터가 제한을 초과하게 되면 뮤테이션은 TOO_MANY_BYTES 오류 코드와 함께 예외를 발생시키며 데이터는 변경되지 않고 그대로 유지됩니다. Memory 엔진의 max_bytes_to_keep 설정은 이 설정과 다르다는 점에 유의하십시오. max_bytes_to_keep은 새 데이터를 거부하는 대신 가장 오래된 데이터를 제거합니다. 두 설정을 모두 지정하면 eviction이 먼저 적용됩니다. 가능한 값:
  • 양의 정수.
  • 0 — 무제한(기본값)

max_temporary_table_size_bytes_compressed

MergeTree 엔진 계열의 엔진을 사용하는 임시 테이블 하나가 디스크에서 차지하는 데이터의 최대 크기(압축 기준, 바이트 단위)입니다. 이 설정은 CREATE TEMPORARY TABLE로 생성된 테이블에 적용되며, 크기는 system.tables의 total_bytes와 같은 방식, 즉 활성 데이터 파트 크기의 합으로 계산됩니다. 이 제한은 테이블에 대한 모든 INSERT(CREATE TEMPORARY TABLE ... AS SELECT 포함)에서 새 데이터 파트를 커밋하기 직전마다 검사됩니다. 커밋 시 테이블이 제한을 초과하게 되면 INSERT는 TOO_MANY_BYTES 오류 코드와 함께 예외를 발생시키며, 해당 파트는 추가되지 않습니다. 같은 INSERT에서 앞서 커밋된 파트는 여러 블록을 INSERT하는 도중 발생하는 다른 오류와 마찬가지로 테이블에 그대로 남습니다. 제한 값은 INSERT 쿼리의 설정에서 가져옵니다. 기존 파트를 테이블에 추가하는 작업도 같은 방식으로 제한되며, 이때는 해당 작업 쿼리의 설정 값이 적용됩니다. 대상 작업은 ATTACH PART, ATTACH PARTITION, ATTACH PARTITION ... FROM, REPLACE PARTITION ... FROM 및 CREATE TEMPORARY TABLE ... CLONE AS입니다. 이러한 작업은 테이블 크기를 늘리지 않는 경우가 아니면 작업 전체가 거부됩니다. ATTACH PARTITION은 모든 파트를 ATTACH하기 전에 전체 파트에 대해 한 번만 검사하므로, 동시에 실행되는 쓰기 작업으로 인해 테이블이 제한을 약간 초과할 수 있습니다. 백그라운드 머지 및 뮤테이션(ALTER TABLE ... UPDATE, MATERIALIZE COLUMN 등)으로 기록된 파트는 검사하지 않으므로, 데이터 크기를 늘리는 뮤테이션으로 인해 테이블이 제한을 초과할 수 있습니다. 가능한 값:
  • 양의 정수.
  • 0 — 무제한(기본값)

max_temporary_table_size_bytes_uncompressed

MergeTree 엔진 계열을 사용하는 임시 테이블 하나에 저장되는 압축되지 않은 데이터의 최대 크기(바이트)입니다. 이 설정은 CREATE TEMPORARY TABLE로 생성한 테이블에 적용되며, 크기는 system.tables의 total_bytes_uncompressed와 동일한 방식으로 계산됩니다. 제한 초과 여부는 max_temporary_table_size_bytes_compressed와 동일한 방식으로 검사합니다. 가능한 값:
  • 양의 정수.
  • 0 — 무제한(기본값)

max_temporary_tables

하나의 세션에 동시에 존재할 수 있는 임시 테이블(temporary table)의 최대 개수입니다. CREATE TEMPORARY TABLE로 생성된 테이블만 집계됩니다. 쿼리와 함께 전송된 외부 데이터 테이블이나 GLOBAL IN / GLOBAL JOIN 또는 구체화된 CTE(Materialized CTE)를 위해 내부적으로 생성되는 임시 테이블은 집계되지 않습니다. 이 제한은 새 임시 테이블을 생성할 때 검사됩니다. 세션에 이미 이 개수만큼의 임시 테이블이 있으면 TOO_MANY_TABLES 오류 코드와 함께 예외가 발생합니다. CREATE OR REPLACE TEMPORARY TABLE로 기존 임시 테이블을 대체하면 테이블 수가 늘어나지 않으므로 항상 허용됩니다. 가능한 값:
  • 양의 정수.
  • 0 — 무제한(기본값)