테이블 잠금 문제를 방지하려면 모든 데이터를 InnoDB로 변환해야합니다. 그러나 다음은 고려해야 할 사항입니다.
전체 텍스트 인덱싱
현재는 MyISAM 만 FULLTEXT 인덱싱을 지원합니다. InnoDB에 대한 FULLTEXT 인덱싱은 현재 MySQL 5.6에서 작동하지만 프로덕션 준비가 아닙니다 . FULLTEXT 인덱스가있는 Drupal 테이블이 있으면 현재 InnoDB로 변환 할 수 없습니다.
FULLTEXT 인덱싱에 대한 업데이트
MySQL 5.6은 이제 GA (생산 용도로 사용)입니다. InnoDB에서 FULLTEXT 인덱싱을 시도하십시오.
FULLTEXT
인덱스 가있는 테이블을 찾으려면 다음 쿼리를 실행하십시오.
SELECT table_schema,table_name
FROM information_schema.statistics
WHERE index_type='FULLTEXT';
행이 다시 나타나지 않으면 모든 InnoDB 테이블을 마음의 내용으로 변환하십시오. mysql 만 사용하여 모든 MyISAM 테이블을 InnoDB로 변환하는 방법에 대한 이전 게시물을 작성했습니다 .
MySQL 복제
읽기가 많은 환경 인 경우 다음을 수행하면 MyISAM에서 읽기가 더 빨라질 수 있습니다.
- 마스터 / 슬레이브 복제 설정
- 마스터 아래에 하나 이상의 읽기 슬레이브 생성
--skip-innodb
모든 슬레이브에서 /etc/my.cnf에 추가 (데이터를 슬레이브로로드 할 때 테이블을 MyISAM으로 변환)
- 이 명령으로 모든 슬레이브에서 모든 MyISAM 테이블의 행 형식을 FIXED로 변경하십시오.
ALTER TABLE tblname ROW_FORMAT=FIXED;
- DBA StackExchange에 이것에 뭔가를 게시했습니다.
- MySQL Database Design and Tuning 책은
ROW_FORMAT=FIXED
72,73 페이지의 사용 을 권장 합니다. 내부적으로 모든 VARCHAR 필드를 CHAR로 변환합니다. MyISAM 테이블은 더 커지지 만 실행 된 SELECT는 훨씬 빠릅니다. 나는 이것을 개인적으로 증명할 수 있습니다. 한때 1.9GB의 테이블이있었습니다. 로 형식을 변경했습니다 ALTER TABLE tblname ROW_FORMAT=FIXED
. 테이블은 3.7GB가되었습니다. 그것에 대한 SELECT의 속도는 다른 것을 개선하거나 변경하지 않고 20-25 % 더 빠릅니다.
이것에 대한 유일한 두통은 응용 프로그램이 별도의 읽기 슬레이브를 인식하게 만드는 것입니다.
발문
각 스토리지 엔진의 다른 이점을 살펴 보려면 DBA StackExchange를 확인하십시오.