2016-11-19 1 views
3

PHP 사이트를 통해 여러 MySQL 데이터베이스에 연결하는 브라우저 앱을 개발 중입니다. 이러한 데이터베이스는 단일 AWS RDS 인스턴스에 설정됩니다. 이 데이터베이스를 설정할 때 다른 db 엔진에 대해서는 잘 알려지지 않았습니다. 다른 유형에 대해 읽은 후에는 IOPS 요구량이 적 으면 InnoDB를, IOPS 요구량이 많은 경우 MyISAM을 사용하기로 결정했습니다. 특정 작업에서는 더 빠릅니다.DB를 MyISAM에서 InnoDB로 변경해야합니까? (AWS 알림)

DB 인스턴스 테스트-1 이노로 마이그레이션되지 않은 MyISAM 테이블을 포함

아마존 웹 서비스는 것을 알려줍니다. 이러한 테이블은 특정 시점 복원을 수행하는 능력에 영향을 줄 수 있습니다. 이 테이블을 InnoDB로 변환 해보십시오. 참조하십시오 http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Overview.BackingUpAndRestoringAmazonRDSInstances.html#Overview.BackupDeviceRestrictions

InnoDB를 사용하여 MyISAM 데이터베이스를 다시 만들어야합니까?

+0

MyISAM이 더 빠르다는 사실은 데이터 처리량이 많은 경우에만 관련이 있습니다. 일반적인 웹 애플리케이션 작업 부하를 처리하는 대부분의 CRUD 애플리케이션의 경우 강력한 복원력과 더 많은 기능 세트로 인해 InnoDB를 사용하는 것이 훨씬 좋습니다. – Dai

답변

5

InnoDB보다 MyISAM의 속도가 빠르다는 것은 2000 년대 중반 현재의 코드에서 기인 한 것입니다.

대부분의 쿼리 유형에서 MyISAM은 더 이상 InnoDB보다 이 아니며 더 이상이 아닙니다. 이 블로그의 벤치 마크를 2007 년부터 살펴보십시오 : https://www.percona.com/blog/2007/01/08/innodb-vs-myisam-vs-falcon-benchmarks-part-1/

InnoDB는 그 이후로 더 빠르고 더 빠르고 안정적입니다. MyISAM이 개발되지 않았습니다.

업데이트 : MySQL 8.0에서는 시스템 테이블조차도 InnoDB로 변환되었습니다. MyISAM을 단계적으로 제거하려는 의도가 분명합니다. 나는 그것이 더 이상 사용되지 않을 것이고 MySQL의 미래 버전에서 제거 될 것이라고 기대한다. (그러나 앞으로 몇 년이 될지는 말할 수 없다.)

MyISAM이 테이블 스캔과 같이 더 빠를 수있는 경우가 두 가지 있습니다. 그러나 테이블 스캔을 위해 데이터베이스를 최적화해서는 안됩니다. 에 대한 올바른 색인을 생성하여 표 스캔을 방지해야합니다.

업데이트 2018년 2월 :의 MyISAM 그냥 붕괴의 CPU 버그에 대한 최신 수정에서 추가로 40 %의 성능 저하를 고통, 이것은 테이블 스캔에 영향을 미칩니다. 귀하가 시스템에 붕괴 취약점을 해결할 책임이 있다고 가정하면 MyISAM은 현재 성능상의 책임이 있습니다. 패치와의 MyISAM의 성능을 현재 테스트를 참조하십시오 https://mariadb.org/myisam-table-scan-performance-kpti/

하지만 그보다 먼저하는 것은 InnoDB하지만 ACID 동작을 지원하고,의 MyISAM은 어떤 ACID의 네 자질을 를 지원하지 않는다는 사실이다. 내 답변보기 MyISAM versus InnoDB

ACID를 지원하지 않는 것은 학구적 인 것이 아닙니다. 업데이트 도중 테이블 잠금과 백업 중 글로벌 잠금과 같은 것으로 변환됩니다.

관련 문제