15.8.3 FEDERATED 스토리지 엔진 Tips
FEDERATED
스토리지 엔진을 사용할 때는 다음 사항에주의하는 것이 좋습니다.
FEDERATED
테이블을 다른 슬레이브에 복제하여도 상관 없지만, 슬레이브 서버가CONNECTION
문자열 (또는mysql.servers
테이블의 행)에 정의 된 사용자 및 암호 조합을 사용하여 원격 서버에 연결할 수 있는지 확인해야합니다.
다음 항목은 FEDERATED
스토리지 엔진이 지원하는 기능과 지원하지 않는 기능을 나타냅니다.
원격 서버는 MySQL 서버가 아니면 안됩니다.
FEDERATED
테이블을 가리키는 원격 테이블은FEDERATED
테이블을 통해 그 테이블에 접근을 시도하기 전에 존재해야합니다.있는
FEDERATED
테이블이 다른 테이블을 가리킬 수 있지만 루프를 만들지 않도록주의해야합니다.FEDERATED
테이블은 본질적으로 인덱스를 지원하지 않습니다. 테이블에 대한 액세스가 원격으로 처리되기 때문에 원격 테이블이 인덱스를 지원합니다. 동등한MyISAM
과 다른 테이블에서 인덱스 정의가 지원되지 않을 수 있기 때문에FEDERATED
테이블을 만들 때주의를 지불하십시오. 예를 들어,VARCHAR
,TEXT
또는BLOB
컬럼에 인덱스 프리픽스를 붙인FEDERATED
테이블을 작성하면 실패합니다.MyISAM
다음의 정의는 유효합니다.CREATE TABLE `T1`(`A` VARCHAR(100),UNIQUE KEY(`A`(30))) ENGINE=MYISAM;
이 예제의 키 프리픽스는
FEDERATED
엔진과 호환되지 않기 때문에 동등한 명령문은 실패합니다.CREATE TABLE `T1`(`A` VARCHAR(100),UNIQUE KEY(`A`(30))) ENGINE=FEDERATED CONNECTION='MYSQL://127.0.0.1:3306/TEST/T1';
가능하면 이러한 인덱스의 문제를 해결하기 위해 원격 서버와 로컬 서버 모두에 테이블을 작성하는 경우, 컬럼과 인덱스의 정의를 나누게하십시오.
내부적으로 구현
SELECT
,INSERT
,UPDATE
및DELETE
를 사용하지만,HANDLER
는 사용하지 않습니다.FEDERATED
스토리지 엔진은SELECT
,INSERT
,UPDATE
,DELETE
,TRUNCATE TABLE
및 인덱스를 지원하고 있습니다.DROP TABLE
을 제외하고ALTER TABLE
이나 테이블의 구조에 직접적인 영향을주는 데이터 정의 언어 문을 지원하지 않습니다. 현재 구현은 준비된 문을 사용하지 않습니다.FEDERATED
는INSERT ... ON DUPLICATE KEY UPDATE
문을 승인하지만 중복 키 위반이 발생하면 문은 오류로 실패합니다.대량 삽입을 실행하는 경우 (예를 들어,
INSERT INTO ... SELECT ...
문)의FEDERATED
테이블의 성능은 선택된 행이FEDERATED
테이블에서 개별INSERT
문으로 처리되기 때문에 다른 테이블 유형 에 비해 떨어집니다.트랜잭션은 지원되지 않습니다.
FEDERATED
여러 행이 배치에서 원격 테이블에 보내도록 대량 삽입 작업을 수행합니다. 이제 성능이 향상 원격 테이블은 개선을 실행할 수 있습니다. 또한 원격 테이블이 트랜잭션을 사용할 경우 오류가 발생했을 때 원격 스토리지 엔진은 문 롤백을 제대로 실행할 수 있습니다. 이 기능에는 다음과 같은 제한이 있습니다.삽입의 크기는 서버의 최대 패킷 크기를 초과 할 수 없습니다. 삽입이 크기를 초과하면 여러 패킷으로 분할되어 롤백 문제가 발생할 수 있습니다.
대량 삽입 작업은
INSERT ... ON DUPLICATE KEY UPDATE
에서는 발생하지 않습니다.
FEDERATED
엔진은 원격 테이블이 바뀌 었는지 여부를 알 방법이 없습니다. 그 이유는이 테이블이 데이터베이스 시스템 이외의 무언가에 의해 결코 쓸 수없는 데이터 파일처럼 동작해야하기 때문입니다. 원격 데이터베이스에 변경이 가해 졌을 경우 로컬 테이블의 데이터 무결성이 손상 될 수 있습니다.CONNECTION
문자열을 사용하는 경우 암호에 '@'문자를 사용할 수 없습니다.CREATE SERVER
문을 사용하여 서버 연결을 작성하여이 제한을 피할 수 있습니다.insert_id
및timestamp
옵션은 데이터 공급자가 전달되지 않습니다.FEDERATED
테이블에 발급 된DROP TABLE
문은 로컬 테이블 만 삭제하고 원격 테이블은 삭제하지 않습니다.FEDERATED
테이블은 쿼리 캐시에서는 작동하지 않습니다.사용자 정의 파티션은
FEDERATED
테이블에서는 지원되지 않습니다.