RadarURL
Skip to content
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

MyISAM은 빠릅니다.


InnoDB는 트랜잭션, 동시성 제어 등의 많은 기능이 지원됩니다.


 


그래서 MyISAM은 로그를 쌓는다던가 하는 단순 작업에 많이 쓰이고 보통 웹서비스에는 InnoDB가 많이 쓰입니다.


 


두 종류의 DB를 섞어서 사용하는 것도 가능하지만 백업하기가 좀 까다로워집니다. (두 DB의 백업 방법에 차이가 있어요)

-----------------------------

MyISAM은 속도가 빠르지만 트랜잭션을 지원하지 않습니다.

InnoDB는 속도가 느리지만 트랜잭션을 지원합니다


단순 댓글저장용도이고 성능이 중요하면 MyISAM 사용하시면 될거 같습니다.


용도에 따라서 다르게 설정하면 좋겠지만 성능이슈가 크지 않다면 InnoDB로 통일하는게 관리가 쉽지 않을까요?

----------------------------------


다른 분들께서 답변을 잘 달아주셨으니 저는 '게시판의 댓글'을 위해 사용하시려는 의도에 좀 더 집중해서 답변을 하겠습니다.


 


아시다시피 MyISAM의 경우 자료를 입력/수정/삭제할 경우 테이블 전체에 락이 걸립니다.


InnoDB는 위의 분들께서도 말씀하신 것처럼 트랜잭션을 지원하며 입력/수정/삭제에 대해 건건에 락이 걸립니다.


따라서 게시판의 동시 접속량이 얼마 정도인지 사이트에 따라 많은 차이가 있습니다만 입력/수정/삭제가 아주 빈번하게 일어나면서 동시에 조회가 많이 일어나는 자료에 대해서는 InnoDB를 사용하시는 것을 권장합니다.


 


그리고 마지막에 말씀하신 것은 다른 타입의 테이블들, 특히 MyISAM과 InnoDB테이블은 가급적 같이 사용하시지 않으시는 것이 좋습니다.


키 캐쉬 혹은 InnoDB Pool의 사용에 대한 기본적은 것이 틀린 것은 차지하고라도


만약 MyISAM 테이블 A와 InnoDB 테이블 B를 조인해서 사용하시는 경우,


MyISAM 테이블에 테이블 락이 걸리면 해당 SQL의 성능이 아주 안 좋아질 수 있습니다.


 


도움이 되었길 바라면서, 즐거운 일요일 맞이하세요~ ^0^/"

----------------------------------


일단, 위에 답변에 무수히 나오는 얘기처럼 가장 고려해야 할 부분은 lock 에 관련된 부분입니다.


 


update, delete 가 많은 시스템일 경우 innodb 를 ,


그렇지 않고 대부분이 insert 와 select 로 이루어진 경우는 myisam 을 많이 사용합니다.


 


이유는,


일단 myisam 의 경우 select 성능이 우수하지만 update 나 delete 가 일어날 경우 table lock 을 걸게 됩니다.


그럼 다른 세션에서 update 를 하게 될경우 wait time 이 생기게 되고 ,


이 부분에서 성능저하가 발생하게 됩니다.


 


myisam과 innodb 는 많은 사용자들이 한개의 database 에 혼용해서 사용하지만,


myisam 의 경우 트렌젝션의 개념이 없고, innodb 는 트렌젝션이 존재한다는점..


그리고  table lock 과 row level lock 의 차이 등을 고려했을때 database 단위로 통일된 storage engine 을 사용하시는 것이 좋겠습니다.


 


예를 한번 들어보겠습니다.


product(productid, productname, sum_account) : innodb


account(accountid, user, date) : myisam


 


product 는 판매 물품이 정의되어 있고, account 에는 실제 판매된 log 가 남는다고 가정하겠습니다.


물품이 판매되면 acoount 에 log 가 남는 동시에 prodcut.sum_account 를 증가시켜야 합니다.


 


account 에 해당 row 를 insert 하고, product 에 sum 값을 증가시킨 후 commit 이 일어나기 전에 에러상황이 연출된 경우 두 테이블의 무결성은 보장이 어려워 집니다. 롤백을 하는 경우도 마찬가지이지요.


 


한가지 더 문제는 myisam 의 tablelock 으로 인해 product 테이블 작업도 기다리게 되는 성능상의 문제도 생각해 볼 수 있습니다.


 


도움이 되셨길 바랍니다.


--------------------------------------------------


  • 먼저 나온게 MyISAM 타입이고 속도는 MyISAM 타입이 훨씬 빨랐는데
    이후에 InnoDB 타입이 나오면서
    트랜잭션, 외부키참조, 트리거 등 훌륭한 많은 기능이 추가되었다.
    이후에 패치하면서 속도가 향상되었는데
    지금은 MyISAM 타입과 거의 비슷한 속도라고 한다.
  • 일반적으로 MyISAM 타입은 트렌젝션을 지원하지 않는다.
    그래서 insert, update, delete 작업시 부가적인 작업을 하지 않는다.
    하지만 InnoDB타입은 트랜젝션을 지원한다.
  • 여러가지 상황에 따라 다르겠지만,
    일반적으로 MyISAM 타입은 insert, update할 때 빠르고, 
    InnoDB 타입는 검색시 빠르다고 한다.
    혼용시 서버 메모리 설정을 보다 잘 해야한다고 한다.

    출처 : http://k.daum.net/qna/view.html?qid=3yoyO
  • ?

    1. No Image 05Jul
      by JAESOO
      2016/07/05 by JAESOO
      Views 123 

      mysql이 cpu를 많이 점유하고, DB와의 연결상태가 좋지 않을때

    2. No Image 17Mar
      by JAESOO
      2015/03/17 by JAESOO
      Views 143 

      Mysql slow-query를 이용한 로그 분석

    3. No Image 17Mar
      by JAESOO
      2015/03/17 by JAESOO
      Views 172 

      Mysql 데몬 문제 해결 방안 (cpulimit)

    4. No Image 16Mar
      by JAESOO
      2015/03/16 by JAESOO
      Views 733 

      리눅스 실시간으로 로그 보기 tail 명령어

    5. No Image 16Mar
      by JAESOO
      2015/03/16 by JAESOO
      Views 487 

      mysql 5.5.x my.cnf 참고

    6. No Image 16Mar
      by JAESOO
      2015/03/16 by JAESOO
      Views 545 

      Mysql Slow query log 등록

    7. No Image 16Mar
      by JAESOO
      2015/03/16 by JAESOO
      Views 158 

      MYSQL 성능 향상 정리

    8. No Image 16Mar
      by JAESOO
      2015/03/16 by JAESOO
      Views 418 

      MySQL Query Cache 사용법

    9. No Image 25Dec
      by JAESOO
      2014/12/25 by JAESOO
      Views 181 

      Mysql 에서 Got a packet bigger than 'max_allowed_packet' bytes 오류

    10. No Image 25Dec
      by JAESOO
      2014/12/25 by JAESOO
      Views 308 

      MySQL 내부 변수 max_allowed_packet

    11. No Image 17Nov
      by JAESOO
      2014/11/17 by JAESOO
      Views 299 

      Mysql binary log 정리, 삭제 주기 설정

    12. No Image 17Nov
      by JAESOO
      2014/11/17 by JAESOO
      Views 529 

      MySQL 로그 파일 관리 2 - 로그 파일 남기기

    13. No Image 17Nov
      by JAESOO
      2014/11/17 by JAESOO
      Views 416 

      MySQL 로그 파일 관리 1 - 설정

    14. No Image 17Nov
      by JAESOO
      2014/11/17 by JAESOO
      Views 232 

      MySQL Binary Log 지우는 방법

    15. No Image 17Nov
      by JAESOO
      2014/11/17 by JAESOO
      Views 4003 

      MySQL 설치/사용시 발생 에러 유형별 대처방법

    16. No Image 17Nov
      by JAESOO
      2014/11/17 by JAESOO
      Views 288 

      Mysql 데이터 폴더의 mysql-bin.xxx 파일들 관련 삭제 및 초기화 방법

    17. No Image 07Jul
      by JAESOO
      2014/07/07 by JAESOO
      Views 1685 

      MySQL my.cnf 파일 수정으로 mysql 서버 튜닝하기

    18. No Image 07Jul
      by JAESOO
      2014/07/07 by JAESOO
      Views 1256 

      MySQL에 원격 접속 허용

    19. No Image 23Jan
      by JaeSoo
      2014/01/23 by JaeSoo
      Views 1280 

      mysql에서 (테이블명) is marked as crashed and should be repaired 에러시

    20. 왜 MySQL 에서 InnoDB 를 써야하는가? InnoDB vs MyISAM 비교

    Board Pagination Prev 1 2 Next
    / 2

    PageViews   Today : 4568 Yesterday : 5037 Total : 21960620  /  Counter Status   Today : 4431 Yesterday : 4602 Total : 1187154

    Edited by JAESOO

    sketchbook5, 스케치북5

    sketchbook5, 스케치북5

    나눔글꼴 설치 안내


    이 PC에는 나눔글꼴이 설치되어 있지 않습니다.

    이 사이트를 나눔글꼴로 보기 위해서는
    나눔글꼴을 설치해야 합니다.

    설치 취소