13.1.18 CREATE TABLESPACE 구문
CREATE TABLESPACE
tablespace_name
ADD DATAFILE 'file_name
' USE LOGFILE GROUPlogfile_group
[EXTENT_SIZE [=]extent_size
] [INITIAL_SIZE [=]initial_size
] [AUTOEXTEND_SIZE [=]autoextend_size
] [MAX_SIZE [=]max_size
] [NODEGROUP [=]nodegroup_id
] [WAIT] [COMMENT [=]comment_text
] ENGINE [=]engine_name
이 문은 테이블 공간을 만드는 데 사용됩니다. 테이블 스페이스는 하나 이상의 데이터 파일을 포함 할 수 있고 테이블의 저장 공간을 제공합니다. 이 문을 사용하여 하나의 데이터 파일이 작성된 테이블 스페이스에 추가됩니다. ALTER TABLESPACE
문을 사용하여 테이블 스페이스에 데이터 파일을 추가 할 수 있습니다 ( 섹션 13.1.8 "ALTER TABLESPACE 구문" 을 참조하십시오). 테이블 공간의 이름을 관리하는 규칙 내용은 섹션 9.2 "스키마 객체 이름" 을 참조하십시오.
모든 MySQL Cluster 디스크 데이터 오브젝트가 같은 네임 스페이스를 공유합니다. 즉, 각 디스크 데이터 개체 (단순히 특정 형태의 각 디스크 데이터 객체라고뿐만 아니라) 고유의 이름이 붙어 있어야합니다. 예를 들어, 테이블 스페이스 및 로그 파일 그룹을 같은 이름 또는 테이블 스페이스와 데이터 파일을 같은 이름으로 할 수 없습니다.
생성 된 테이블 공간에는 USE LOGFILE GROUP
절을 사용하여 하나 이상의 UNDO
로그 파일의 로그 파일 그룹을 지정해야합니다. logfile_group
은 CREATE LOGFILE GROUP
에서 작성된 기존의 로그 파일 그룹이어야합니다 ( 섹션 13.1.14 "CREATE LOGFILE GROUP 구문" 을 참조하십시오). 여러 테이블 공간이 UNDO
로깅을 위해 동일한 로그 파일 그룹을 사용할 수 있습니다.
EXTENT_SIZE
해당 테이블 스페이스에 속하는 모든 파일에 사용되는 익스텐트 크기 (바이트 단위)을 설정합니다. 기본값은 1M입니다. 최소 크기는 32K이며, 이론적 인 최대 크기는 2G입니다. 그러나 실제적인 최대 크기는 여러 가지 요인에 따라 다릅니다. 대부분의 경우,이 Extent 크기를 변경해도 성능에 측정 가능한 영향을주지 않기 때문에 특별한 경우를 제외하고 항상 기본값을 사용하는 것이 좋습니다.
범위는 공간 할당 단위입니다. 1 개의 Extent가 그 범위에 수용 할 수있는 양의 데이터로 가득 차 후 다른 익스텐트가 사용됩니다. 이론적으로는 데이터 파일 당 최대 65,535 (64K) 개의 익스텐트를 사용할 수 있습니다. 그러나 권장되는 최대 수는 32,768 (32K)입니다. 하나의 데이터 파일의 최대 권장 크기는 32G (즉, 32K 개의 익스텐트 × 익스텐트 당 1M 바이트)입니다. 또한 범위를 특정 파티션에 할당 한 후 그 범위를 사용하여 다른 파티션의 데이터를 저장할 수 없습니다. 범위는 여러 파티션의 데이터를 저장할 수 없습니다. 즉, 예를 들어, INITIAL_SIZE
가 256M 바이트에서 EXTENT_SIZE
가 128M 인 하나의 데이터 파일을 포함하는 테이블 공간에는 범위가 2 개 밖에 존재하지 않기 때문에이 테이블 스페이스를 사용하여 최대 2 개의 디스크 데이터 테이블 파티션 데이터를 저장할 수 있습니다.
INFORMATION_SCHEMA.FILES
테이블을 쿼리하여 특정 데이터 파일에 사용되지 않은 채 남아있는 익스텐트의 수를 확인 할 수 있기 때문에 파일 공간의 추정치를 도출 할 수 있습니다. 더 설명 및 예제는 섹션 21.30.1 "INFORMATION_SCHEMA FILES 테이블" 을 참조하십시오.
INITIAL_SIZE
매개 변수는 데이터 파일의 총 크기를 바이트 단위로 설정합니다. 파일을 만든 후 그 크기를 변경할 수 없습니다. 그러나 ALTER TABLESPACE ... ADD DATAFILE
을 사용하여 테이블 공간에 더 많은 데이터 파일을 추가 할 수 있습니다. 섹션 13.1.8 "ALTER TABLESPACE 구문" 을 참조하십시오.
INITIAL_SIZE
는 옵션입니다. 디폴트 값은 134217728 (128M 바이트)입니다.
32 비트 시스템에서는 INITIAL_SIZE
지원되는 최대 값은 4294967296 (4G 바이트)입니다. (Bug # 29186)
EXTENT_SIZE
을 설정하려면 숫자 뒤에 선택적으로 my.cnf
에서 사용되는 것과 같은 자리수를 나타내는 문자 약어를 지정할 수 있습니다. 일반적으로 이것은 M
(M 바이트) 또는 G
(G 바이트) 중 하나의 문자입니다. MySQL Cluster NDB 7.3.2 이후에서는 이러한 약어는 INITIAL_SIZE
을 지정하는 경우도 지원됩니다. (Bug # 13116514, Bug # 16104705, Bug # 62858)
INITIAL_SIZE
, EXTENT_SIZE
및 UNDO_BUFFER_SIZE
은 다음과 같은 반올림에 따릅니다.
EXTENT_SIZE
과UNDO_BUFFER_SIZE
은 각각 32K의 가장 가까운 배수로 반올림됩니다.INITIAL_SIZE
은 32K의 가장 가까운 배수로 끄고 낮 춥니 다.데이터 파일의 경우 INITIAL_SIZE에 대해 더 반올림이 이루어집니다. 지금 얻어진 결과가 (모든 라운딩 후)
EXTENT_SIZE
의 가장 가까운 배수로 반올림됩니다.
지금 설명 둥근 명시 적으로 실행되며 이러한 둥근 중 하나가 실행 된 경우 MySQL Server에 의해 경고가 발행됩니다. 반올림 한 값 또한 INFORMATION_SCHEMA.FILES
컬럼 값의 계산 및 기타 목적을 위해, NDB 커널에서도 사용됩니다. 그러나 예기치 않은 결과가 발생하지 않도록하기 위해이 옵션의 지정은 항상 32K의 배수를 사용하는 것이 좋습니다.
AUTOEXTEND_SIZE
, MAX_SIZE
, NODEGROUP
, WAIT
및 COMMENT
는 해석되지만 무시되기 때문에 현재는 아무런 효과도 없습니다. 이 옵션은 미래의 확장을 위해 준비되어 있습니다.
ENGINE
매개 변수는이 테이블 공간이 사용하는 스토리지 엔진을 결정합니다. 여기에서 engine_name
은 스토리지 엔진의 이름입니다. 현재 engine_name
값 NDB
또는 NDBCLUSTER
중 하나 여야합니다.
CREATE TABLESPACE
가 ENGINE = NDB
함께 사용 된 경우, 테이블 스페이스와 연관된 데이터 파일이 각 클러스터 데이터 노드에 생성됩니다. INFORMATION_SCHEMA.FILES
테이블을 쿼리하여 데이터 파일이 생성 된 것을 확인하고, 그들에 대한 정보를 검색 할 수 있습니다. 예 :
mysql>SELECT LOGFILE_GROUP_NAME, FILE_NAME, EXTRA
->FROM INFORMATION_SCHEMA.FILES
->WHERE TABLESPACE_NAME = 'newts' AND FILE_TYPE = 'DATAFILE';
+--------------------+-------------+----------------+ | LOGFILE_GROUP_NAME | FILE_NAME | EXTRA | +--------------------+-------------+----------------+ | lg_3 | newdata.dat | CLUSTER_NODE=3 | | lg_3 | newdata.dat | CLUSTER_NODE=4 | +--------------------+-------------+----------------+ 2 rows in set (0.01 sec)
( 섹션 21.30.1 "INFORMATION_SCHEMA FILES 테이블" 을 참조하십시오.)
CREATE TABLESPACE
는 MySQL Cluster 데이터 저장 디스크에서만 유효합니다. 섹션 18.5.12 "MySQL Cluster 디스크 데이터 테이블" 을 참조하십시오.