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)