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
  • ?

    List of Articles
    번호 제목 글쓴이 날짜 조회 수
    39 mySQL에서 사용자와 권한 처누 2004.04.16 7299
    38 Mysql 기초-DB 설치, 관리자지정, 계정추가 등 처누 2004.06.06 7328
    37 MySql 테이블 검사 및 복구하기 [ myisamchk ] JaeSoo 2005.11.26 6860
    36 mysql에서 사용자 계정 비밀번호 변경 방법 JaeSoo 2006.02.16 7836
    » MySQL에서 테이블을 생성할때 MyISAM과 InnoDB 어느것을 선택하나요? JaeSoo 2010.01.25 7555
    34 [Mysql] 범위 삭제 DELETE 쿼리 JaeSoo 2010.05.05 8078
    33 mysql 4.x 버전의 euc-kr(latin1) DB를 mysql 5.x 버전으로 이전 하는법 JaeSoo 2011.04.30 8500
    32 MySQL Dump뜨는 방법 및 복구 방법 JaeSoo 2011.06.08 10672
    31 fedora core4 mysql 서버설치 및 windows client로 접속 JaeSoo 2011.06.16 12663
    30 [Fedora 8] Mysql 5.0.67 설치 JaeSoo 2011.06.16 10331
    29 Mysql DB 손상됬을경우 점검 및 복구 명령 JaeSoo 2011.09.16 9246
    28 MySQL 재설치시 오류 JaeSoo 2011.11.15 7568
    27 MySQL Data file 위치 JaeSoo 2011.11.15 5533
    26 MySQL Plugin 'InnoDB' init function returned error. JaeSoo 2011.11.15 5722
    25 mysqlcheck 유틸리티 사용법(analyze, optimize, repair) JaeSoo 2012.06.05 4601
    24 윈도우환경에서 MySQL 설치하기 JaeSoo 2013.03.13 3503
    23 MySQL database 정보 import하기 JaeSoo 2013.03.13 1324
    22 MySQL 테이블 형태 변경하기 MyISAM -> InnoDB(또는 InnoDB -> MyISAM) JaeSoo 2013.03.19 1589
    21 [MySQL] phpMyAdmin으로 MyISAM 테이블 형식을 InnoDB로 바꾸기 JaeSoo 2013.03.19 6706
    20 왜 MySQL 에서 InnoDB 를 써야하는가? InnoDB vs MyISAM 비교 JaeSoo 2013.04.12 3888
    Board Pagination Prev 1 2 Next
    / 2

    PageViews   Today : 144 Yesterday : 2394 Total : 21713802  /  Counter Status   Today : 127 Yesterday : 1232 Total : 1142269

    Edited by JAESOO

    sketchbook5, 스케치북5

    sketchbook5, 스케치북5

    나눔글꼴 설치 안내


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

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

    설치 취소