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 테이블 작업도 기다리게 되는 성능상의 문제도 생각해 볼 수 있습니다.
도움이 되셨길 바랍니다.
--------------------------------------------------
이후에 InnoDB 타입이 나오면서
트랜잭션, 외부키참조, 트리거 등 훌륭한 많은 기능이 추가되었다.
이후에 패치하면서 속도가 향상되었는데
지금은 MyISAM 타입과 거의 비슷한 속도라고 한다.
그래서 insert, update, delete 작업시 부가적인 작업을 하지 않는다.
하지만 InnoDB타입은 트랜젝션을 지원한다.
일반적으로 MyISAM 타입은 insert, update할 때 빠르고,
InnoDB 타입는 검색시 빠르다고 한다.
혼용시 서버 메모리 설정을 보다 잘 해야한다고 한다.
출처 : http://k.daum.net/qna/view.html?qid=3yoyO