InnoDB로 마이그레이션하거나 마이그레이션 할 수있는 테이블과 MyISAM을 유지해야하는 테이블은 무엇입니까?


10

제목에 따라 : InnoDB로 마이그레이션 할 테이블에 대한 빠른 후보 목록이 있습니까? 그리고 MyISAM으로 남아 있어야 할 것은 무엇입니까?

추가 정보

  • 이 사이트에는 상당히 많은 읽기로드가 있지만 태그와 함께 시간당 약 10 개의 노드를 삽입합니다.
  • 우리는 CCK (의 형식으로 많은 양의 정규화 된 테이블 content_field%)를 많이 사용합니다.
  • 또한 모든 블록과 페이지에 대해 를 사용 합니다. 그러나 많은 것들이 데이터베이스 쿼리와 그 쿼리의 무거움을 줄이기 위해 사용자 정의 모듈로 대체 할 수 있습니다.
  • 사용자는 모두 익명입니다. 로그인 한 편집자와 웹 마스터를 제외하고

인터넷 전체가이 질문에 실제로 어떻게 대답해야할지 전혀 모릅니다. 어떤 Drupal 테이블이 대부분의 쓰기 작업을 수행하고 잠 깁니다.
JM Becker

답변:


8

테이블 잠금 문제를 방지하려면 모든 데이터를 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=FIXED72,73 페이지의 사용 을 권장 합니다. 내부적으로 모든 VARCHAR 필드를 CHAR로 변환합니다. MyISAM 테이블은 더 커지지 만 실행 된 SELECT는 훨씬 빠릅니다. 나는 이것을 개인적으로 증명할 수 있습니다. 한때 1.9GB의 테이블이있었습니다. 로 형식을 변경했습니다 ALTER TABLE tblname ROW_FORMAT=FIXED. 테이블은 3.7GB가되었습니다. 그것에 대한 SELECT의 속도는 다른 것을 개선하거나 변경하지 않고 20-25 % 더 빠릅니다.

이것에 대한 유일한 두통은 응용 프로그램이 별도의 읽기 슬레이브를 인식하게 만드는 것입니다.

발문

각 스토리지 엔진의 다른 이점을 살펴 보려면 DBA StackExchange를 확인하십시오.


4

귀하의 웹 사이트는 읽기가 많은 편이므로 모든 테이블을 InnoDB로 변환하기 만하면됩니다. 그런 다음 InnoDB 버퍼 풀과 쿼리 캐시의 크기를 적절히 조정하여 읽기 성능을 최적화 할 수 있습니다. 이러한 방식으로 Drupal 호스팅 인프라의 전용 데이터베이스 서버에서 초당 수천 개의 쿼리를 달성하고 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.