클러스터 스토리지를 구축할 때 InnoDB보다 MyISAM 엔진이 더 선호된다는 것이 사실입니까?그렇다면 왜?

StackOverflow https://stackoverflow.com/questions/1647023

문제

오늘 자바 개발자 인터뷰 중에 이런 말을 들었습니다.InnoDB에 비해 MyISAM의 몇 가지 장점과 이것이 여전히 널리 사용되고 있는 이유를 나열해야 했습니다.그리고 그들은 이 질문의 제목처럼 나에게서 답을 듣기를 기다리고 있었습니다.

내가 그들 자신의 대답에서 이해한 바와 같이:MyISAM에는 외래 키가 없으며 DB를 쉽게 클러스터링할 수 있습니다(예: 서버당 하나의 테이블).그런데 왜 외래 키 없이 단순히 InnoDB 테이블을 만들 수 없는 걸까요?설명이 이상하게 들리네요..

도움이 되었습니까?

해결책

여기에는 실버 총알이 없습니다. 특정 애플리케이션에 사용하는 결정을 내리기 전에 각 장단점을 알아야합니다.

innodb :

  • FK를 지원합니다
  • 거래를 지원합니다
  • 작동에 큰 메모리 버퍼를 사용합니다
  • 행 레벨 잠금을 지원합니다
  • 유지 보수 비용이 훨씬 높습니다. 실제로 메모리 사용을 조정하고 테이블 파일을 구성하는 등이 필요합니다.

Myisam :

  • InnoDB가없는 특수 열 기능이 있습니다.
    • 전문 지수
    • 공간 열 (INDODB에서 작동하지 않는다고 확신합니다)
  • 기본 읽기/부록 사용 사례에 대해 매우 빠릅니다 (업데이트, 삭제에 대한 테이블 잠금 장치이지만 삽입물에는 적합하지 않음)
  • 또한 일반적으로 더 빠른 인서트가 있습니다
  • 메모리 (키 버퍼)의 인덱스를 캐시하지만 실제 데이터 페이지를 버퍼링하기 위해 OS에 의존합니다.

예를 들어, 전자 상거래, 사용자 데이터베이스 또는 트랜잭션을 사용하려는 항목에 InnoDB를 사용합니다.

데이터웨어 하우스, 로깅,보고 등의 경우 아마도 MyISAM을 사용할 것입니다.

다른 팁

나는 Innodb보다 Myisam의 몇 가지 장점을 나열해야했습니다.

  1. 전체 텍스트 검색

  2. ...

  3. 아니, 그게 다야.

(좋아요, 있습니다 약간 Myisam이 InnoDB보다 빠르지 만 산 준수 부족을 견딜 가치가있는 경우는 거의 없습니다. 오늘날 MyISAM과 함께 무엇이든하는 주된 이유는 InnoDB에서 슬프게도 지원되지 않는 풀 텍스트 검색을받는 것입니다.)

이것이 더 이상 진실이 아닌지 확실하지 않습니다.

또한 MyISAM 테이블은 별도의 파일에 저장되며 (기억할 수있는 것) 실제로 해당 파일을 다른 MySQL 데이터베이스로 전송할 수 있으며 백업하기가 더 쉽습니다.

기본적으로 InnoDB 데이터베이스는 파일 시스템의 하나의 거대한 글로벌에 저장됩니다.

왜 여전히 널리 사용되는지에 관해서는, 나는 그것이 기본 옵션이기 때문에 항상 있다고 생각했습니다. 개인적으로, 나는 여전히 Innodb의 장점이 Myisam과 Myisam의 이점이 내 경험에서 데이터 무결성에 문제가 있다고 믿습니다.

외래 키 없이 InnoDB 테이블을 생성할 수는 있지만 이는 주요 장점 중 하나를 없애는 것입니다.참조 무결성.그러나 MyISAM은 참조 무결성을 목적으로 구축되지 않았기 때문에 테이블 키를 다르게, 그리고 아마도 더 효율적으로 저장할 수 있습니다.

잠금 및 액세스에도 약간의 차이가 있습니다.InnoDB는 행 수준 잠금을 지원하는 반면 MyISAM은 테이블 수준 잠금만 지원합니다.수행 중인 쿼리(SELECTS 대 INSERTS/UPDATES)에 따라 성능에 눈에 띄는 영향을 미칠 수 있습니다.

당신은 잘 읽어야합니다 MySQL Peformance 블로그.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top