[MySQL] MyISAM ? InnoDB ?

2024. 12. 27. 03:39·Database

MySQL을 공부하다보니 계속 InnoDB엔진과 MyISAM 엔진이 등장하는데, 궁금해서 간단하게만 정리해보았다.

 

 

MySQL 엔진 아키텍처

먼저 MySQL 서버는 MySQL 엔진과 스토리지 엔진으로 나뉜다.

 

MySQL엔진은 요청된 SQL 문장을 분석하거나, 최적화하는 등 DBMS의 두뇌 역할을 한다고 보면 되고,
스토리지 엔진은, 실제 데이터를 디스크 스토리지에 저장하거나, 디스크 스토리지로부터 읽어오는 역할을 전담한다.

 

InnoDB 엔진이나, MyISAM 엔진은 둘 중 스토리지 엔진에 해당한다.

MyISAM엔진과 InnoDB엔진을 간단히 비교하자면,

  • 트랜잭션 처리가 필요하고, 대용량의 데이터를 다루기 위해서는 InnoDB
  • 트랜잭션 처리가 필요없고, Read only 기능이 많이 필요할수록 MyISAM

조회가 많은 서비스는 MyISAM, 데이터 변화가 많은 서비스는 InnoDB가 적합하다고 할 수 있다.

위와 같은 기준이 생기는 이유는 락 부분에서 자세히 설명할 것이지만 현재까지 배운 내용으로 알 수 있는 내용들만 간단히 풀어서 보자.

InnoDB

MyISAM과 비슷하지만, 트랜잭션, row-level locking, 외래키 등 많은 기능을 지원한다.
따라서 대용량 데이터를 처리 시 최대의 퍼포먼스를 내도록 설계되었다.
(내부적으로도 왜 높은 퍼포먼스가 필요한 서비스에 적합한지는 InnoDB엔진 아키텍처 부분에서 다룰 예정)

MyISAM

transaction-safe 하지 않은 테이블을 관리한다.
풀텍스트 인덱스를 지원하며, SELECT 명령 시 빠른 속도를 지원한다.
따라서 조회 기능이 많을수록 효율적일 수 있다.

 

하지만 InnoDB와 다르게, row level Locking을 지원하지 못한다.
즉 CRUD 시 해당 테이블 전체에 Lock이 걸리므로, row가 커질수록 CRUD 속도가 느려진다.


막상 조사해보니 두 엔진간 차이가 크다기보단
뭔가 MyISAM 엔진 같은 경우에는 잘 이용 안할줄 알았는데 각자 나름대로의 특성이 있다는 점에 조금 놀랐다.

'Database' 카테고리의 다른 글

[MySQL] 인덱스와 잠금, MySQL의 격리 수준  (0) 2025.01.10
[MySQL] InnoDB 스토리지 엔진 잠금  (1) 2025.01.07
[MySQL] MySQL 엔진의 잠금  (1) 2025.01.04
[MySQL] InnoDB (2) - 버퍼 풀과 LRU  (4) 2024.12.30
[MySQL] InnoDB 엔진 (1)  (1) 2024.12.27
'Database' 카테고리의 다른 글
  • [MySQL] InnoDB 스토리지 엔진 잠금
  • [MySQL] MySQL 엔진의 잠금
  • [MySQL] InnoDB (2) - 버퍼 풀과 LRU
  • [MySQL] InnoDB 엔진 (1)
폐프
폐프
  • 폐프
    폐프의삶
    폐프
  • 전체
    오늘
    어제
    • 분류 전체보기 (43)
      • 2023 하계 모각코 (12)
      • 2023-24 동계 모각코 (8)
      • 2024 SW ACADEMY (5)
      • Spring (1)
      • JPA (0)
      • JAVA (2)
      • Database (10)
      • OS (5)
      • Network (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
폐프
[MySQL] MyISAM ? InnoDB ?
상단으로

티스토리툴바