SQL 일반: 문자열 및 이진 데이터 타입에 대한 새로운 기본 열 크기(보류 중)

주의

이 동작 변경 사항은 2025_07 번들에 포함되어 있습니다.

번들의 현재 상태는 번들 기록 섹션을 참조하십시오.

이 동작 변경 번들이 활성화되면 :doc:`문자열 및 이진 데이터 타입</sql-reference/data-types-text>`의 기본 크기가 변경됩니다.

변경 전:

:ref:`텍스트 문자열 데이터 타입<label-character-datatypes>`의 기본 크기는 16MB였습니다.

:ref:`이진 데이터 타입<label-binary-datatypes>`의 기본 크기는 8MB였습니다.

변경 후:

텍스트 문자열 데이터 타입의 기본 크기는 128MB입니다.

이진 데이터 타입의 기본 크기는 64MB입니다.

이 변경 전에 DDL 문은 텍스트 문자열 열에 대해 16MB보다 큰 크기를, 이진 열에 대해 8MB보다 큰 크기를 명시적으로 지정할 수 있지만 크기를 지정하지 않은 경우 기본 크기는 각각 16MB 및 8MB입니다.

이 동작 변경 후에는 DDL 문에 크기를 지정하지 않은 경우 기본 크기는 텍스트 문자열 열에 대해 128MB, 이진 열에 대해 64MB입니다. 따라서, INSERT 문은 더 큰 크기를 명시적으로 지정할 필요 없이 텍스트 문자열 열에 16MB보다 큰 값을 삽입하고, 이진 열에 8MB보다 큰 값을 삽입할 수 있습니다.

참고

Apache Iceberg™ 테이블 및 사용자 정의 함수(UDFs)의 경우 이미 더 큰 기본 크기를 사용하고 있기 때문에 이 변경 사항이 해당 DDL 문에는 영향을 주지 않습니다.

변경 사항은 기본 크기가 1인 데이터 타입(CHAR, CHARACTER 및 NCHAR)을 제외하고 VARCHAR 데이터 타입의 열 및 STRING과 같이 VARCHAR과 동의어인 데이터 타입의 열에 적용됩니다. 변경 사항은 BINARY 데이터 타입의 열과 VARBINARY와 같이 BINARY와 동의어인 데이터 타입의 열에도 적용됩니다.

예를 들어, 다음 문은 열의 최대 크기를 지정하지 않고 테이블을 생성합니다.

CREATE TABLE test_new_default_sizes (
  name VARCHAR,
  profile_image BINARY);
Copy

다음 쿼리를 실행하여 열의 최대 크기를 표시합니다.

DESCRIBE TABLE test_new_default_sizes
  ->> SELECT "name", "type" FROM $1;
Copy

동작이 변경되기 전에 쿼리는 다음 출력을 반환합니다.

+---------------+-------------------+
| name          | type              |
|---------------+-------------------|
| NAME          | VARCHAR(16777216) |
| PROFILE_IMAGE | BINARY(8388608)   |
+---------------+-------------------+

동작이 변경된 후 쿼리는 다음 출력을 반환합니다.

+---------------+--------------------+
| name          | type               |
|---------------+--------------------|
| NAME          | VARCHAR(134217728) |
| PROFILE_IMAGE | BINARY(67108864)   |
+---------------+--------------------+

뷰와 구체화된 뷰는 큰 기본 크기를 상속할 수 있습니다.

경우에 따라 열 정의에서 표현식을 사용하는 뷰 또는 구체화된 뷰를 만들 때 소스 테이블의 열이 더 작은 크기를 명시적으로 지정하더라도 열은 새로운 기본 크기를 상속합니다.

예를 들어, VARCHAR 데이터 타입 열의 최대 크기를 16777216으로 명시적으로 설정하는 소스 테이블을 만듭니다.

CREATE TABLE test_default_size_source_table (
  id INTEGER,
  description VARCHAR(16777216));
Copy

열 정의에서 표현식을 사용하지 않고 이 테이블을 기준으로 뷰와 구체화된 뷰를 만듭니다.

CREATE VIEW test_default_size_view AS
SELECT id, description FROM test_default_size_source_table;

CREATE MATERIALIZED VIEW test_default_size_mv AS
SELECT id, description FROM test_default_size_source_table;
Copy

다음 쿼리를 실행하여 열의 최대 크기를 표시합니다.

DESCRIBE VIEW test_default_size_view
  ->> SELECT "name", "type" FROM $1;

DESCRIBE MATERIALIZED VIEW test_default_size_mv
  ->> SELECT "name", "type" FROM $1;
Copy

변경 전후에 이러한 쿼리는 다음과 같은 출력을 반환합니다.

+-------------+-------------------+
| name        | type              |
|-------------+-------------------|
| ID          | NUMBER(38,0)      |
| DESCRIPTION | VARCHAR(16777216) |
+-------------+-------------------+

소스 테이블을 기준으로 뷰와 구체화된 뷰를 만들고 열 정의에서 표현식을 사용합니다.

CREATE VIEW test_default_size_view_with_exp AS
SELECT description || RANDSTR(10, 1) AS col
  FROM test_default_size_source_table;

CREATE MATERIALIZED VIEW test_default_size_mv_with_exp AS
SELECT description || RANDSTR(10, 1) AS col
  FROM test_default_size_source_table;
Copy

다음 쿼리를 실행하여 열의 최대 크기를 표시합니다.

DESCRIBE VIEW test_default_size_view_with_exp
  ->> SELECT "name", "type" FROM $1;

DESCRIBE MATERIALIZED VIEW test_default_size_mv_with_exp
  ->> SELECT "name", "type" FROM $1;
Copy

동작이 변경되기 전에 이러한 쿼리는 다음 출력을 반환합니다.

+------+-------------------+
| name | type              |
|------+-------------------|
| COL  | VARCHAR(16777216) |
+------+-------------------+

동작이 변경된 후 이러한 쿼리는 다음 출력을 반환합니다.

+------+--------------------+
| name | type               |
|------+--------------------|
| COL  | VARCHAR(134217728) |
+------+--------------------+

CREATE TABLE AS SELECT를 사용하여 생성된 테이블은 큰 기본 크기를 상속할 수 있습니다.

경우에 따라 열 정의에서 표현식을 사용하는 CREATE TABLE AS SELECT(CTAS) 문을 통해 테이블을 만들 때 소스 테이블의 열이 더 작은 크기를 명시적으로 지정하더라도 열은 새로운 기본 크기를 상속합니다.

예를 들어, VARCHAR 및 BINARY 열의 최대 크기를 명시적으로 설정하는 소스 테이블을 만듭니다.

CREATE TABLE test_default_size_ctas_source_table (
  small_text VARCHAR(1000),
  medium_text VARCHAR(50000),
  large_text VARCHAR(16777216),
  binary_data BINARY(1000000));
Copy

CTAS 문을 사용하여 이 소스 테이블에서 테이블을 만듭니다.

CREATE TABLE test_default_size_ctas AS
SELECT small_text,
       medium_text,
       large_text || RANDSTR(10, 1) AS processed_text,
       binary_data
  FROM test_default_size_ctas_source_table;
Copy

이 예에서 processed_text 열에 대한 열 정의는 표현식을 사용합니다.

다음 쿼리를 실행하여 열의 최대 크기를 표시합니다.

DESCRIBE TABLE test_default_size_ctas
  ->> SELECT "name", "type" FROM $1;
Copy

동작이 변경되기 전에 쿼리는 다음 출력을 반환하고 processed_text 열에는 더 작은 기본 크기가 표시됩니다.

+----------------+-------------------+
| name           | type              |
|----------------+-------------------|
| SMALL_TEXT     | VARCHAR(1000)     |
| MEDIUM_TEXT    | VARCHAR(50000)    |
| PROCESSED_TEXT | VARCHAR(16777216) |
| BINARY_DATA    | BINARY(1000000)   |
+----------------+-------------------+

동작이 변경된 후 쿼리는 다음 출력을 반환하고 processed_text 열에는 더 큰 기본 크기가 표시됩니다.

+----------------+--------------------+
| name           | type               |
|----------------+--------------------|
| SMALL_TEXT     | VARCHAR(1000)      |
| MEDIUM_TEXT    | VARCHAR(50000)     |
| PROCESSED_TEXT | VARCHAR(134217728) |
| BINARY_DATA    | BINARY(1000000)    |
+----------------+--------------------+

참조: 2118