8GB RAM이있는 서버에서 실행되는 약 4.5GB의 단일 데이터베이스가 있습니다. 대부분의 테이블은 MyIsam (약 4.3GB)이지만 곧 일부를 InnoDB 로 변환 할 예정 입니다. (처음에는 쓰기 집약적 인 테이블에 중점을 둔 느린 프로세스가 될 것입니다).
두 가지 유형의 스토리지 엔진이 모두있는 전용 서버를 실행하는 데 문제가 있습니까?
8GB RAM이있는 서버에서 실행되는 약 4.5GB의 단일 데이터베이스가 있습니다. 대부분의 테이블은 MyIsam (약 4.3GB)이지만 곧 일부를 InnoDB 로 변환 할 예정 입니다. (처음에는 쓰기 집약적 인 테이블에 중점을 둔 느린 프로세스가 될 것입니다).
두 가지 유형의 스토리지 엔진이 모두있는 전용 서버를 실행하는 데 문제가 있습니까?
답변:
각각의 장단점을 이해하는 한 동일한 물리적 시스템에서 여러 스토리지 엔진을 사용하는 데 아무런 문제 가 없습니다 . 모든 플러그인 스토리지 유형에 대한 성능 고려 사항, 기능 제한 사항 및 유스 케이스가 있습니다.
예를 들어, 쓰기가 90 % 인 작은 테이블이 있으면 MyISAM을 선택할 수 있습니다. 데이터를 쉽게 재생성 할 수 있고 큐와 같이 작은 테이블 인 경우 메모리를 선택할 수 있습니다. 읽기가 90 % 인 테이블이 있고 데이터를 찾을 때 데이터가 있으면 InnoDB와 같이 트랜잭션 및 구성 가능한 원 자성을 지원하는 스토리지 엔진을 선택했을 것입니다. 데이터를 손상시키지 않고 파일 시스템을 통해 접근성을 원한다면 CSV를 선택할 수 있습니다.
그럼에도 불구하고 물리적 호스트뿐만 아니라 동일한 스키마 내에서 여러 스토리지 엔진을 안전하게 사용할 수 있습니다.
그래도 버퍼가이 엉망진창에 영향을 미칩니다. MyISAM과 InnoDB를 모두 사용하는 경우 key_buffer와 innodb_buffer_pool이 경쟁하지 않도록주의해야합니다. 이를 위해서는 신중한 계획이 필요하지만 이것이 바로 우리의 일입니다.
이것이 일반적인 관행인지 말할 수 없습니다. 나는 내 자신의 경험에 대해 말할 수 있습니다.
나는 항상 작업에 가장 적합한 도구를 사용하므로 항상 엔진을 혼합합니다. 내 프로젝트의 대부분은 MyISAM을 기본 엔진으로 사용합니다.
InnoDB에서 사용할 수있는 특수 기능이 필요할 때 사용합니다.
테이블이 대부분 읽기 전용이면 깜박이기 전에 보관 엔진을 선택합니다.
머신 서버에 충분한 메모리가 있다는 것을 알면 모든 임시 데이터가 힙 테이블에 저장됩니다.
과거에는 MyISAM과 InnoDB를 혼합하는 속도 저하가 있었지만 이것은 특정 MySQL 문제가 아닙니다. 엔진을 하나만 사용할 때 보이지 않는 디자인 문제입니다. 실제로 잘못된 엔진을 사용하면 MyISAM, InnoDB 또는 두 가지가 혼합 된 경우 속도가 더 중요하지 않습니다. 속도 저하시기를 알 수있는 공식을 정의하기는 어렵습니다. 실제 테스트만으로도 가능합니다.
물론 고유 한 쿼리에서 InnoDB와 MyISAM을 혼합하여 무결성과 일관성을 유지할 수 없었습니다.
동일한 데이터베이스에서 MyISAM과 InnoDB 테이블을 혼합하지 않으려 고 노력하지만 이것은 실제적인 이유가 아니라 온전한 이유입니다. 그러나 전체 텍스트 검색을 위해 MyISAM 테이블이있는 데이터베이스를 보유하는 것이 유용하므로 사이트에서 실행할 수 있습니다. 각 항목마다 외래 키가있는 별도의 데이터베이스에 보관하면 DB를 작업하는 다른 개발자가 진행 상황을 쉽게 확인할 수 있습니다.
Is there anything wrong with running a dedicated server where both types of storage engines exist?
어쩌면Multiple types
?