2011-01-02 5 views
5

InnoDBMyISAM 사이에 다양한 스레드에 대해 읽었습니다. 논쟁은 다른 것을 사용하는 것 같습니다. 테이블에 따라 둘 다 사용할 수 있습니까?InnoDB 또는 MyISAM - 두 가지 모두를 사용하지 않는 이유는 무엇입니까?

이 작업의 단점은 무엇입니까? 내가 알 수있는 한, CREATE TABLE 명령 중에 엔진을 설정할 수 있습니다. 따라서 종종 읽을 수있는 특정 테이블을 MyISAM으로 설정할 수 있지만 트랜잭션 지원이 필요한 테이블은 InnoDB를 사용할 수 있습니다.

+1

클러스터 기본 키 인덱스는 무엇인가? http://dev.mysql.com/doc/refman/5.0/en/innodb-index-types.html 클러스터 된 기본 키 인덱스가 정상적인 btree 인덱스보다 나은 이유는 무엇입니까? http://stackoverflow.com/questions/4419499/mysql-nosql-help-me-to-choose-the-right-one-on-a/4421601#4421601 –

답변

13

MyISAM과 InnoDB 테이블을 같은 데이터베이스에 둘 수 있습니다. 그래도 큰 테이블을 가지고있을 때, MyISAM은 테이블 잠금 문제를 일으킬 것입니다. 이것이 궁극적으로하는 것은 단일 트랜잭션에 대해 전체 테이블을 잠그기 때문에 웹 사이트를 사용하는 사용자가 많으면 매우 나쁩니다. 예를 들어 사이트에서 사용자가 뭔가를 검색하고 쿼리가 완료되는 데 몇 분이 걸리는 경우 전체 테이블이 잠겨 있기 때문에이 기간 동안 다른 사용자가 사이트를 사용할 수 없습니다.

반면에 InnoDB는 행 레벨 잠금을 사용합니다. 즉, 트랜잭션 중에 테이블에서 잠긴 유일한 행입니다. InnoDB는 MyISAM과 같은 전문 검색 기능을 제공하지 않기 때문에 검색 속도가 느려질 수 있습니다. 그러나 MyISAM의 테이블 수준 잠금과 비교할 때 큰 문제는 아닙니다. 많은 대형 사이트와 마찬가지로 InnoDB를 사용하는 경우 Sphinx과 같은 서버 측 검색 엔진을 전체 텍스트 검색에 사용할 수 있습니다. 또는 f00과 같은 검색을하기 위해 MyISAM 테이블을 사용할 수도 있습니다. 개인적으로 행 레벨 잠금 기능 때문에 InnoDB를 주로 추천했지만, 다른 많은 방법으로 전체 텍스트 검색을 구현할 수 있기 때문에 개인적으로 InnoDB를 추천했습니다.

기본적으로 많은 선택, 삽입 및 업데이트가 포함 된 메시지 보드 응용 프로그램이있는 경우 일반적으로 InnoDB가 일반적으로 적합합니다. 그런 것 (또는 등록 된 사용자가있는 다른 것)과 정적 인 콘텐츠 (또는 쓰기보다 많은 읽기)로 작업하는 경우 MyISAM을 사용할 수 있습니다.

+4

전체 텍스트 검색이 필요한 경우 myisam 테이블을 만들고 그것을 사용하여 멋지게 클러스터 된 innodb 데이터로 다시 색인을 만드십시오 - 간단합니다. –

+0

네, 그 또한 좋은 옵션입니다. –

+0

감사합니다. 훌륭한 답변입니다.내 애플리케이션으로 판단 할 때, InnoDB를 사용하는 것이 가장 좋습니다. – Skoder

3

예 실제로 동일한 데이터베이스에서 둘 다 사용할 수 있습니다. 각 테이블을 개별적으로 선택할 수 있습니다.

0

데이터베이스 수준에서 대신 테이블 수준에서 InnoDB 또는 MyISAM을 선택하지 마십시오. 따라서 하나의 데이터베이스 내에서 InnoDB 엔진을 실행하는 테이블과 MyISAM을 실행하는 테이블을 가질 수 있습니다. 당신이 지적했듯이, 트랜잭션 등이 필요한 테이블에서 InnoDB를 사용할 수 있고, 전체 텍스트 검색과 같은 다른 기능이 필요한 MyISAM을 사용할 수 있습니다.

1

많은 수의 INSERT 및 UPDATE 명령을 처리 할 수있는 안정적인 데이터베이스를 필요로하는 작업을 수행하는 경우 InnoDB가 유용합니다.

그리고 MyISAM은 쓰기 (INSERT 및 UPDATES) 대신 많은 읽기 (SELECT) 명령어를 사용하는 데이터베이스가 필요하다면 테이블 잠금 작업의 단점을 고려하여 적합합니다.

체크 아웃 하시겠습니까?
Pros and Cons of InnoDB
Pros and Cons of MyISAM

관련 문제