myisam innodb 차이

myisam innodb 차이

회사에서 myisam을 쓰고있어서 내가알던 innodb와 어떤차이가 있나 궁금해졌다.

1. MyISAM

  • 비 - 트랜잭션-세이프 테이블을 관리한다.
  • 항상 테이블에 ROW COUNT를 가지고 있기 때문에 SELECT명령시에 빠른속도를 자랑한다.
  • 전체 문장 검색 능력 뿐만 아니라, 고성능 스토리지 복구 기능을 제공한다.
  • ROW-LEVEL-LOCKING을 지원하지 못해 SELECT INSERT UPDATE DELETE시 해당 Table 전체에 Locking이 걸린다.
  • row수가 커지면 커질수록 속도는 엄청나게 느려진다

 

2. InnoDB

  • InnoDB는 모든 5.0 바이너리 배포판에 디폴트로 포함되어 있다.
  • InnoDB 및 BDB 스토리지 엔진은 트랜잭션에 안전한 테이블을 제공하는 트랜잭션-세이프스토리지 엔진
  • MyISAM과 비슷하지만 ORACLE처럼 많은 기능을 지원 (commit, rollack, 장애복구, row-level-locking, 외래키)
  • 자체적으로 메인 메모리안에 데이터 캐싱과 인덱싱을 위한 버퍼 풀을 관리한다.
  • 대용량 데이터 처리에 최고의 효율을 낼수있게 설계되어있다.
  • MyISAM 장점인 풀텍스트 인덱스를 지원하지 못한다.

 

3. 공통점

  • Mysql의 스토리지 엔진이다.

 

4. 결론

트랜잭션 처리가 필요하고 대용량 데이터를 다루기 위해서는 InnoDB가 효율적이다.

트랜잭션 처리가 필요없고 운영에 Read-Only 기능이 많은 서비스일수록 MyISAM 엔진이 효율적이다.

MyIsam - Select가 많은 서비스

InnoDB - 데이터의 변화가 많은 서비스 (CREATE, UPDATE, DELETE)

용도에따라 스토리지 엔진을 결정하는데 InnoDB와 MyISAM 테이블을 같이 사용할 경우,

조인 할때 주의해야한다.

'코딩 > 데이터베이스' 카테고리의 다른 글

where 1=1 쓰는 이유  (0) 2023.04.11

댓글

Designed by JB FACTORY

1 2 3 4 5 6 7 8 1 1 2 3 4 5 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 10