18.1.6.1 MySQL Cluster의 SQL 구문의 부적합
다음 목록과 같이 특정 MySQL 기능 관련 SQL 문은 NDB 테이블에서 사용하면 오류를 생성하는 것이 있습니다.
임시 테이블 임시 테이블은 지원되지 않습니다.
NDB스토리지 엔진을 사용하는 임시 테이블을 만들려고하거나NDB를 사용하도록 기존의 임시 테이블을 변경하려고 할 때 실패하고 다음 오류가 발생합니다 : Table storage engine 'ndbcluster'does not support the create option 'TEMPORARY'.NDB 테이블의 인덱스와 키 MySQL Cluster 테이블의 인덱스와 키에는 다음과 같은 제한이 있습니다.
열 폭 3072 바이트 이상의 폭의
NDB테이블 컬럼에 대한 인덱스를 만들려고하면 성공하지만 인덱스에 실제로 사용되는 것은 첫 번째 3072 바이트입니다. 이러한 경우 경고 Specified key was too long; max key length is 3072 bytes가 발행되어SHOW CREATE TABLE문은 인덱스의 길이가 3072로 표시됩니다.TEXT 및 BLOB 컬럼
TEXT또는BLOB데이터 유형 중 하나를 사용하는NDB테이블 컬럼에 대한 인덱스를 만들 수 없습니다.FULLTEXT 인덱스
NDB스토리지 엔진은FULLTEXT인덱스를 지원하지 않습니다. 이것은MyISAM과 (MySQL 5.6.4 이후)InnoDB테이블에서만 가능합니다.그러나
NDB테이블의VARCHAR컬럼에 대한 인덱스를 만들 수 있습니다.USING HASH 키와 NULL 고유 키와 기본 키에 NULL 허용 컬럼을 사용하면 이러한 컬럼을 사용하는 쿼리는 전체 테이블 스캔으로 처리됩니다. 이 문제를 해결하려면 컬럼을
NOT NULL하거나USING HASH옵션을 지정하지 않고 인덱스를 다시 작성합니다.프리픽스 프리픽스 인덱스는 없습니다. 인덱스 컬럼 전체에만 넣을 수 있습니다. (
NDB의 컬럼 인덱스의 크기는이 섹션의 앞부분에서 설명한 바와 같이, 컬럼의 폭 (바이트 단위)와 항상 같은 (최대 3072 바이트)입니다. 추가 정보는 섹션 18.1.6.6 "MySQL Cluster가 지원되지 않음 기능 또는 누락 된 기능 " 을 참조하십시오.)BIT 컬럼
BIT컬럼을 기본 키, 고유 키 또는 인덱스 할 수 없습니다. 또한 복합 기본 키, 고유 키 또는 인덱스의 일부가 될 수 없습니다.AUTO_INCREMENT 컬럼 다른 MySQL 스토리지 엔진과 마찬가지로,
NDB스토리지 엔진은 테이블 당 최대 하나의AUTO_INCREMENT컬럼을 처리 할 수 있습니다. 그러나 명시적인 기본 키가없는 클러스터 테이블의 경우,AUTO_INCREMENT컬럼은 자동으로 정의 된 "숨겨진"기본 키로 사용됩니다. 따라서 명시 적으로AUTO_INCREMENT컬럼을 가진 테이블은PRIMARY KEY옵션을 동시에 사용하여 컬럼을 선언하지 않는 한 정의 할 수 없습니다. 테이블의 기본 키가 아닌AUTO_INCREMENT컬럼을 가진 테이블을 만들려고,NDB스토리지 엔진을 사용하면 실패하고 오류가 발생합니다.
외부 키 제한 MySQL Cluster NDB 7.3에서 외래 키 제약 조건의 지원은
InnoDB에 의한 지원과 동일하지만 다음과 같은 제한이 있습니다.외래 키로 참조되는 모든 열은 그것이 테이블의 기본 키가 아닌 경우 명시적인 고유 키를 필요로합니다.
참조가 부모 테이블의 기본 키 인 경우,
ON UPDATE CASCADE는 지원되지 않습니다.SET DEFAULT는 지원되지 않습니다. (InnoDB에서도 지원되지 않습니다.)NO ACTION키워드는 사용할 수 있지만,RESCRICT로 처리됩니다. (InnoDB에도 마찬가지입니다.)MySQL Cluster NDB 7.3.5 이전 버전에서는 다른 테이블의 인덱스를 참조하는 외래 키가있는 테이블을 만들 때 인덱스의 컬럼 순서가 일치하지 않고 내부에서 적절한 오류를 반환하지 수 있었기 때문에, 외부 키를 만들 수 있도록 보일 수있었습니다. MySQL Cluster NDB 7.3.5에서는이 문제가 부분적으로 수정 된 내부에서 사용되는 오류가 대부분의 경우에 작동하도록 개선되었습니다 만, 부모 인덱스가 고유 인덱스 인 경우는 아직이 상황이 발생할 수 있습니다. (Bug # 18094360)
자세한 내용은 섹션 13.1.17.2 "외래 키 제약 조건 사용" 및 섹션 1.8.3.2 "FOREIGN KEY 제약 조건" 을 참조하십시오.
MySQL Cluster와 형상 데이터 형
NDB테이블에서는 지오메트리 데이터 형 (WKT및WKB)가 지원됩니다. 그러나 공간 인덱스는 지원되지 않습니다.문자 세트와 바이너리 로그 파일 현재
ndb_apply_status및ndb_binlog_index테이블은latin1(ASCII) 문자 세트를 사용하여 작성되어 있습니다. 바이너리 로그의 이름은이 테이블에 기록되기 때문에, 라틴어 이외의 문자를 사용하는 이름이 붙은 바이너리 로그 파일은이 테이블에서 제대로 참조되지 않습니다. 이것은 알려진 문제이며 현재 수정 중입니다. (Bug # 50226)이 문제를 해결하려면 바이너리 로그 파일의 이름을 지정할 때와
--basedir,--log-bin또는--log-bin-index옵션을 설정하면 Latin-1 문자 만 사용 하십시오.사용자 정의 파티션을 사용한 NDBCLUSTER 테이블 만들기 MySQL Cluster에서 사용자 정의 파티션 지원,
LINEAR]KEY의 분할에 한정됩니다.CREATE TABLE문에ENGINE=NDB또는ENGINE=NDBCLUSTER와 함께 다른 파티션 유형을 사용하면 오류가 발생합니다.기본 파티셔닝 모든 MySQL Cluster 테이블은 기본적으로 테이블의 기본 키를 파티셔닝 키를 사용하여
KEY로 파티션됩니다. 테이블에 명시 적으로 설정된 기본 키가없는 경우는 대신NDB스토리지 엔진에서 자동으로 생성 된 "숨겨진"기본 키가 사용됩니다. 이들과 관련된 문제에 대한 자세한 내용은 섹션 19.2.5 "KEY 파티션" 을 참조하십시오.사용자 분할 된
NDBCLUSTER테이블이 다음의 두 가지 요구 사항 중 하나 또는 모두를 충족하지 못하는 원인이되는CREATE TABLE및ALTER TABLE문은 허용되지 않고 실패하고 오류가 발생합니다.테이블에 명시적인 기본 키가 존재해야합니다.
테이블 파티셔닝 식에 지정된 모든 컬럼이 기본 키의 일부 여야합니다.
예외 빈 컬럼리스트를 사용하여 (즉,
PARTITION BY [LINEAR] KEY()를 사용하여) 사용자 분할 된NDBCLUSTER테이블을 만들 때 명시적인 기본 키는 필요하지 않습니다.NDBCLUSTER 테이블의 최대 파티션 수 사용자 정의 파티션을 사용했을 때
NDBCLUSTER테이블에 정의 할 수있는 파티션의 최대 수는 노드 그룹 당 8 개입니다. (MySQL Cluster 노드 그룹의 자세한 내용은 섹션 18.1.2 "MySQL Cluster 노드, 노드 그룹 복제 및 파티션" 을 참조하십시오.DROP PARTITION 지원되지 않는
ALTER TABLE ... DROP PARTITION을 사용하여NDB테이블에서 파티션을 제거 할 수 없습니다. 클러스터 테이블에서ALTER TABLE에 대한 다른 파티션 확장 기능 (ADD PARTITION,REORGANIZE PARTITION및COALESCE PARTITION)가 지원되지만 복사가 사용되기 때문에 최적화되지 않습니다. 섹션 19.3.1 "RANGE 및 LIST 파티션 관리" 및 섹션 13.1.7 "ALTER TABLE 구문" 을 참조하십시오.행 기반 복제 MySQL Cluster에서 행 기반 복제를 사용하는 경우 이진 로깅을 비활성화 할 수 없습니다. 즉,
NDB스토리지 엔진은sql_log_bin값을 무시합니다. (Bug # 16680)