woowacourse-study / 2022-Real-MySQL

⚡️토르⚡️의 짜릿한 Real MySQL 뽀개기 🔨
9 stars 3 forks source link

MyISAM vs InnoDB #4

Open BETTERFUTURE4 opened 2 years ago

BETTERFUTURE4 commented 2 years ago

주제

MyISAM vs InnoDB 의 싸움에서 최근 승자가 InnoDB가 되었다.

선정 이유

현재 미션에서도 InnoDB를 사용했고, MySQL 8.0 기본엔진이 InnoDB로 완전히 바뀌었다는 얘기를 들어서 이유가 궁금했다.

해당 텍스트

스크린샷 2022-06-12 오후 3 12 28 스크린샷 2022-06-12 오후 3 10 48

관련 아티클, 페이지

페이지

94p, 141p

아티클

아티클 링크

  1. MyISAM 대 InnoDBStorage: 엔진 유형

    • MyISAM 은 비트랜잭션 스토리지 유형이며 모든 쓰기 옵션은 수동으로 롤백해야 합니다(필요한 경우).
    • InnoDB 는 쓰기가 완료되지 않으면 자동으로 롤백하는 트랜잭션 스토리지 유형입니다.
  2. MyISAM 대 InnoDBStorage: 잠금

    • 잠금은 행을 잠가 두 사용자가 동시에 중복 행을 수정하는 것을 방지하는 MySQL의 메커니즘입니다. 잠금이 활성화된 경우 사용자는 테이블을 변경할 수 없습니다.
    • MyISAM 은 테이블 잠금의 기본 방법을 사용하고 단일 세션에서 테이블을 수정할 수 있도록 합니다. 이것은 한 번에 한 명의 사용자만 테이블을 변경할 수 있음을 의미합니다. 다른 사용자가 테이블을 변경하려고 하면 테이블이 잠겨 있다는 메시지가 표시됩니다. 테이블 잠금 방법은 많은 메모리가 필요하지 않으므로 읽기 전용 데이터베이스에 유용합니다.
    • InnoDB 는 테이블의 행 수준 잠금을 사용합니다. 이 방법은 수정 프로세스에서 행만 잠그는 방식으로 동일한 행에서 여러 세션을 지원합니다. 행 잠금은 여러 사용자가 있는 데이터베이스에 유용합니다.
    • 행 수준 잠금의 유일한 단점은 많은 메모리를 소비하고 데이터를 쿼리하고 수정하는 데 시간이 걸린다는 것입니다.
  3. MyISAM 대 InnoDBStorage: 외래 키

    • 외래 키는 데이터를 다른 테이블에 연결하는 한 테이블의 열입니다. 사용자가 두 테이블 간의 링크를 파괴하는 레코드를 추가하는 것을 방지합니다.
    • MyISAM 은 외래 키 옵션을 지원하지 않습니다.
    • InnoDB 는 외래 키 옵션을 지원합니다.
  4. MyISAM 대 InnoDBStorage: ACID 속성

    • ACID는 원자성(Atomicity), 일관성(Consistency), 격리(Isolation) 및 내구성(Durability)을 나타냅니다.
    • MyISAM은 ACID 속성을 지원하지 않는 반면 InnoDB는 ACID 속성을 지원합니다.
  5. MyISAM 대 InnoDBStorage: 성능

    • InnoDB 는 트랜잭션 속성, 즉 롤백 및 커밋을 지원하며 쓰기 속도가 더 빠릅니다. 대용량 데이터에 대한 InnoDB의 성능은 MyISAM에 비해 우수합니다.
    • MyISAM 은 트랜잭션 속성을 지원하지 않으며 읽기가 더 빠릅니다. InnoDB에 비해 대용량 데이터에 대한 성능이 떨어집니다.
  6. MyISAM 대 InnoDBStorage: 안정성

    • InnoDB 는 트랜잭션 로그를 사용하여 모든 작업을 기록하므로 안정적인 작업을 제공합니다. 따라서 장애 발생 시 해당 로그를 사용하여 데이터를 빠르게 복구할 수 있습니다.
    • MyISAM 은 데이터 무결성을 제공하지 않습니다. 하드웨어 오류 및 취소된 작업으로 인해 데이터가 손상될 수 있습니다.
  7. MyISAM 대 InnoDBStorage: 캐싱 및 인덱싱

    • InnoDB 는 데이터와 인덱스를 모두 캐시하는 대규모 버퍼 풀을 지원합니다. 그러나 전체 텍스트 검색은 지원되지 않습니다.
    • MyISAM 키 버퍼 는 인덱스 전용이며 전체 텍스트 검색은 MyISAM에서 지원됩니다.