본문 바로가기
카테고리 없음

[mysql] InnoDB, MyISAM 비교

by 언제나초심. 2019. 8. 7.
반응형

엔진 목록 조회

현재 데이터베이스 에서 이용 가능한 엔진 목록 조회

select engine, support from information_schema.engines
또는

show engines;

적용

CREATE TABLE t (i INT) ENGINE = MYISAM;

예전 버전에서는 ENGINE 이라는 명칭 대신 TYPE 을 썼었음

CREATE 구문 다음에 ENGINE={엔진 명칭} 을 적으면 된다.

디폴트 엔진

아무것도 지정하지 않았을 때, 테이블 생성 시 기본으로 선택되는 엔진.

  • 버전 5.5.5 이후 : InnoDB
  • 버전 5.5.5 전 : MyISAM (3.23 ~ 5.5.4)

주요 스토리지 엔진

InnoDB

InnoDB (권장)

특징

  • 트랜젝션 기능 추가됨.
  • FK 기능 추가됨.
  • row 단계의 locking

주의점

  • information_schema.tables 의 count 가 불안정함. (어차피 이런 것 쓰지 말자)
    • 덧붙여 전체 count(*) 를 하는 것은 느리다고 함. (근데 그건 원래 느린 거 아닌가?)
  • MySQL 5.6 이하 에서는 Full text search 를 위한 Full text index 가 안 된다는 얘기가 있음. (5.6 이후로는 됨)

MyISAM

MyISAM

특징

  • 비 트랜젝션이다. 트랜젝션이 없다.
  • Select 속도가 빠르다.
  • Table 단계의 locking ....
  • Full text index 가 예전부터 지원됨.

주의점

  • 트랜젝션이 없다...
    • master 에 데이터 넣고 detail 에 데이터 넣다가 실패했을 때, master 에 데이터 넣은 걸 취소할 수가...없다...
    • FK 이용이 가능하지 않지만, 비슷하게 구현해서 이용 중이라면... 문제가 발생했을 때...이게 무슨 값이 들어간건가요 싶을 수가...
    • 예) master 에 데이터 넣고 detail 에 연결을 위한 FK 값처럼 넣었는데, master 에서 문제가 발생하면서 날라갔는데...(그 찰나의 사이에 누군가 지워버렸다거나) detail 에는 값이 남아있다면...? detail 에서는 어떤 값을 찾고 있을까...?
  • 테이블 단계의 locking
    • insert, update, delete 작업이 빈번하게 일어나면... 테이블 locking 이 발생하면서...
    • procedure 로 테이블 이것저것 건드리며 작업이 진행된다면... 그동안에는 locking 이 발생하면서...
    • 대량의 인서트로 api 값 같은 것 (비행기 시간표 같은 것?) 을 만 단위건을 조회해서 테이블에 부어넣는 작업이 진행 중이라면...하나하나 통신이 느려져서 30분 정도 시간이 소요된다면.... 그 테이블은 그 시간동안.... locking 이 걸려있는 상태인 것...
      • 대안으로는 임시 테이블을 만들고, 데이터를 완성한 후에 insert select 로 부어넣는 방법뿐인데... 그것도 그닥...
      • select (READ) 에 locking 이 걸리는 지는 잘 기억이 안 나는데, insert, update 에 locking 이 걸린다고 해도... 꽤 부담스러울 수 있다. 그런데, 많은 건 수를 처리한다고 한다면... select 의 값에도 유효성이 불확실해지기 때문에 select 에 locking 이 안 걸려도 문제다. (엉뚱한 키 값을 비행기 신청하면 안 되니까.. 없는 걸 신청하면 나중에 찾기라도 하는데, 엉뚱한 것을 신청하면.... 물론 다 방법을 찾으면 찾을 수는 있겠지만...)

현재의 결론

현재는 누구나 그렇겠지만, MyISAM 과 InnoDB 의 선택지에서는 InnoDB 를 선택하는 게 맞다. MyISAM 은 구시대적으로 구현된 것이라서 뭔가 생각지 않은 느낌이 발생할 수 있다. 다른 데이터베이스를 이용해봤던 사람이라면 최소 InnoDB 를 쓰는 게 맞을 듯. (InnoDB 의 성능이 점점 개선되고 있는 것이 느껴짐)

메모리를 이용하는 디비 라거나 하는 것도 있는 듯 한데, 그러한 것들과 선택지를 놓고 고민하는 것이 맞다고 본다.

반응형