Loading...
MySQL 9.5 Reference Manual 9.5의 15.1.12 ALTER TABLESPACE Statement의 한국어 번역본입니다.
아래의 경우에 피드백에서 신고해주신다면 반영하겠습니다.
감사합니다 :)
1ALTER [UNDO] TABLESPACE tablespace_name 2 NDB only: 3 {ADD | DROP} DATAFILE 'file_name' 4 [INITIAL_SIZE [=] size] 5 [WAIT] 6 InnoDB and NDB: 7 [RENAME TO tablespace_name] 8 InnoDB only: 9 [AUTOEXTEND_SIZE [=] 'value'] 10 [SET {ACTIVE | INACTIVE}] 11 [ENCRYPTION [=] {'Y' | 'N'}] 12 InnoDB and NDB: 13 [ENGINE [=] engine_name] 14 Reserved for future use: 15 [ENGINE_ATTRIBUTE [=] 'string']
이 statement는 NDB 및 InnoDB 테이블스페이스와 함께 사용됩니다. 이 statement는 새로운 데이터 파일을 NDB 테이블스페이스에 추가하거나, NDB 테이블스페이스에서 데이터 파일을 제거하는 데 사용할 수 있습니다. 또한 NDB Cluster Disk Data 테이블스페이스의 이름을 바꾸거나, InnoDB general 테이블스페이스의 이름을 바꾸거나, InnoDB general 테이블스페이스를 암호화하거나, InnoDB undo 테이블스페이스를 active 또는 inactive 상태로 표시하는 데 사용할 수 있습니다.
UNDO 키워드는 SET {ACTIVE | INACTIVE} 절과 함께 사용되어 InnoDB undo 테이블스페이스를 active 또는 inactive 상태로 표시하는 데 사용됩니다. 자세한 내용은 Section 17.6.3.4, “Undo Tablespaces”를 참조하십시오.
ADD DATAFILE 변형을 사용하면 INITIAL_SIZE 절을 사용하여 NDB Disk Data 테이블스페이스의 초기 크기를 지정할 수 있으며, 여기서 _size_는 바이트 단위로 측정됩니다. 기본값은 134217728 (128 MB)입니다. 선택적으로 size 뒤에 my.cnf에서 사용하는 것과 유사한 자리수(order of magnitude)를 나타내는 한 글자 약어를 붙일 수 있습니다. 일반적으로 이는 M(메가바이트) 또는 G(기가바이트) 중 하나의 문자입니다.
32비트 시스템에서 INITIAL_SIZE에 대해 지원되는 최대 값은 4294967296 (4 GB)입니다. (Bug #29186)
INITIAL_SIZE는 CREATE TABLESPACE와 동일한 방식으로 명시적으로 반올림됩니다.
일단 데이터 파일이 생성되면, 그 크기는 변경할 수 없습니다. 그러나 추가적인 ALTER TABLESPACE ... ADD DATAFILE statement를 사용하여 NDB 테이블스페이스에 더 많은 데이터 파일을 추가할 수 있습니다.
ALTER TABLESPACE ... ADD DATAFILE이 ENGINE = NDB와 함께 사용될 때, 각 Cluster 데이터 노드에 데이터 파일이 하나씩 생성되지만, Information Schema FILES 테이블에는 하나의 row만 생성됩니다. 자세한 내용은 이 테이블에 대한 설명과 Section 25.6.11.1, “NDB Cluster Disk Data Objects”를 참조하십시오. ADD DATAFILE은 InnoDB 테이블스페이스에서는 지원되지 않습니다.
ALTER TABLESPACE와 함께 DROP DATAFILE을 사용하면 NDB 테이블스페이스에서 데이터 파일 'file_name'을 drop합니다. 어떤 테이블에서도 사용 중인 테이블스페이스의 데이터 파일은 drop할 수 없습니다. 다시 말해, 데이터 파일은 비어 있어야 합니다(사용 중인 extent가 없어야 함). Section 25.6.11.1, “NDB Cluster Disk Data Objects”를 참조하십시오. 또한, drop할 데이터 파일은 이전에 CREATE TABLESPACE 또는 ALTER TABLESPACE로 테이블스페이스에 추가되었어야 합니다. DROP DATAFILE은 InnoDB 테이블스페이스에서는 지원되지 않습니다.
WAIT는 파스되지만 그 외에는 무시됩니다. 이 옵션은 향후 확장을 위해 마련된 것입니다.
테이블스페이스에 사용되는 스토리지 엔진을 지정하는 ENGINE 절은, 테이블스페이스 스토리지 엔진이 데이터 딕셔너리에 의해 알려져 있어 ENGINE 절이 필요 없게 되었기 때문에, 폐지(deprecated)되었습니다. MySQL 9.5에서는 다음 두 가지 경우에만 지원됩니다:
1ALTER TABLESPACE tablespace_name ADD DATAFILE 'file_name' 2 ENGINE={NDB|NDBCLUSTER}
1ALTER UNDO TABLESPACE tablespace_name SET {ACTIVE|INACTIVE} 2 ENGINE=INNODB
앞으로 나올 MySQL의 버전에서는 이러한 statement들에서조차 ENGINE이 결국 제거될 것으로 예상해야 합니다.
RENAME TO operation은 autocommit의 값에 관계없이 암묵적으로 autocommit 모드에서 수행됩니다.
LOCK TABLES나 FLUSH TABLES WITH READ LOCK이 테이블스페이스에 속한 테이블에 대해 효력을 발휘하고 있는 동안에는 RENAME TO operation을 수행할 수 없습니다.
테이블스페이스가 rename되는 동안 general 테이블스페이스에 속한 테이블에 대해 exclusive metadata locks이 걸리며, 이는 동시 DDL을 방지합니다. 동시 DML은 지원됩니다.
InnoDB general 테이블스페이스의 이름을 변경하려면 CREATE TABLESPACE 권한이 필요합니다.
AUTOEXTEND_SIZE 옵션은 테이블스페이스가 가득 찼을 때 InnoDB가 테이블스페이스 크기를 확장하는 양을 정의합니다. 이 설정은 4MB의 배수여야 합니다. 기본 설정은 0이며, 이 값은 테이블스페이스가 암묵적인 기본 동작에 따라 확장되도록 합니다. 자세한 내용은 Section 17.6.3.9, “Tablespace AUTOEXTEND_SIZE Configuration”를 참조하십시오.
ENCRYPTION 절은 InnoDB general 테이블스페이스 또는 mysql 시스템 테이블스페이스에 대해 페이지 수준 데이터 암호화를 enable 또는 disable합니다.
암호화를 enable하기 전에 keyring 플러그인이 설치되고 설정되어 있어야 합니다.
table_encryption_privilege_check
변수가 enable된 경우, TABLE_ENCRYPTION_ADMIN 권한이 ENCRYPTION 절 설정이 default_table_encryption 설정과 다른 general 테이블스페이스를 변경하는 데 필요합니다.
general 테이블스페이스에 대해 암호화를 enable하는 작업은 테이블스페이스 내의 어떤 테이블이라도 DEFAULT ENCRYPTION='N'으로 정의된 스키마에 속해 있는 경우 실패합니다. 마찬가지로, general 테이블스페이스의 암호화를 disable하는 작업은 general 테이블스페이스 내의 어떤 테이블이라도 DEFAULT ENCRYPTION='Y'로 정의된 스키마에 속해 있는 경우 실패합니다.
general 테이블스페이스에 대해 실행된 ALTER TABLESPACE statement에 ENCRYPTION 절이 포함되지 않은 경우, default_table_encryption 설정과 관계없이 테이블스페이스는 현재 암호화 상태를 유지합니다.
general 테이블스페이스 또는 mysql 시스템 테이블스페이스가 암호화되면, 해당 테이블스페이스에 속한 모든 테이블이 암호화됩니다. 마찬가지로, 암호화된 테이블스페이스에 생성된 테이블은 암호화됩니다.
general 테이블스페이스 또는 mysql 시스템 테이블스페이스의 ENCRYPTION 속성을 변경할 때는 INPLACE 알고리즘이 사용됩니다. INPLACE 알고리즘은 테이블스페이스에 속한 테이블에 대한 동시 DML을 허용합니다. 동시 DDL은 block됩니다.
자세한 내용은 Section 17.13, “InnoDB Data-at-Rest Encryption”을 참조하십시오.
ENGINE_ATTRIBUTE 옵션은 기본 스토리지 엔진에 대한 테이블스페이스 속성을 지정하는 데 사용됩니다. 이 옵션은 향후 사용을 위해 예약되어 있습니다.
이 옵션에 할당되는 값은 유효한 JSON 문서 또는 빈 문자열('')을 포함하는 문자열 리터럴입니다. 유효하지 않은 JSON은 거부됩니다.
1ALTER TABLESPACE ts1 ENGINE_ATTRIBUTE='{"key":"value"}';
ENGINE_ATTRIBUTE 값은 오류 없이 반복해서 지정할 수 있습니다. 이 경우, 마지막으로 지정된 값이 사용됩니다.
ENGINE_ATTRIBUTE 값은 서버에서 검사하지 않으며, 테이블의 스토리지 엔진이 변경될 때도 clear되지 않습니다.
JSON 속성 값의 개별 element를 변경하는 것은 허용되지 않습니다. 속성은 추가하거나 교체하는 것만 가능합니다.
15.1.11 ALTER TABLE Statement
15.1.13 ALTER VIEW Statement