포럼

쉽게 설명을 해보도록 할게요.


innodb 와 myisam 은 뭐 트랜잭션을 지원한다던가 다양한 차이점이 있지만,

웹사이트 성능에 가장 큰 영향을 미치는건, locking 방식의 차이라고 할수있습니다.


locking 방식은

innodb 는 row 단위로,

myisam 은 table 단위로 처리하게 되지요.


아 이게 무슨소린지 잘 모르셔도 일단 저 두가지를 이해하고 다음으로 넘어가 주시길 바랍니다.


일단 먼저 왜 데이터베이스가 lock 이라는것을 수행하는지 이해하셔야 합니다.


예를들어서 A 에 10이라는 정보가 들어가있다고 합시다.

우리는 A 에 들어가있는 숫자를 연산을 통해서 2배로 만드는 프로그램을 가지고 있습니다.

근데 그 프로그램 연산하는데에는 무려 20초가 걸린다고 가정해봅시다.


그러면, 

요구 -> A 가져옴 -> 20초 동안 처리 -> 원래값의 2배인 20을 A 에 넣음

의 순서를 가지게 됩니다.

근데 웹서비스(데이터베이스)는 같은 시간에 다양한 요구가 오는 상태가 매우 잦지요.


요구 A 도 A 를 2배로 만들고

요구 B 도 A 를 2배로 만든다고 해봅시다.


요구 A --> A 가져옴 --> 처          리        중 --------------------> 2배인 20을 넣음

이라고 할때

      요구B -----> A 가져옴 --> 처    중 ----------------------------> ??


맨 마지막의 ?? 의 결과값은 몇이 될까요?

원래라면 두번 처리되었으므로, 40이 들어가야 맞지만,

요구 B 가 A 를 가져오는순간에는 여전히 10이므로,

최종값은 20이 됩니다.


이렇게 되면, 난리가 벌어지겠지요?

은행에서 계좌이체를 연타하면 계좌 돈은 한번만 빠져나갔는데 입금은 여러번 되는 돈복사 버그가 벌어질지도 모릅니다.


이러한 것을 막기 위해서 데이터베이스는 lock 이라는걸 지원합니다.

요구 A 가 모든 처리를 끝낼때까지 다른 사람은 A 를 건들지 못하게 하는거죠.


요구 A --> A 가져옴 --> 처          리        중 --------------------> 2배인 20을 넣음

      요구B -----> A 가져옴 --> 처    중 --------------------------> ??



요구 A --> A 가져옴 --> 처          리        중 ----------> 2배인 20을 넣음

      요구B -----> 대기  -----------------------------> A 가져옴 - > 처리 -> 2배인 40을 넣음


을 되게 만드는거지요.


자, 그럼 이게 어떠한 차이를 유발하느냐.

조금더 이야기를 해봅시다.


myisam 의 경우

table 단위로 이러한 lock 을 처리합니다.


xe_documents 라는 XE 문서 전체 테이블 단위로 lock 을 거는거죠.

A 라는 사람이 글을 수정하는 동안에는

B 는 글을 수정할수가 없습니다.

그것이 설사 다른 글이라고 해도 말이죠.


A 가 documents 테이블에서 행동을 하는동안은

documents 테이블에 관련된 모든 요구가 대기상태에 빠집니다.


!!!


innodb 의 경우는 DB 의 row 단위로 lock 을 처리합니다.

myisam 과는 다르게

글 번호 100번을 건들고 있다면

101번은 동시에 건들수 있는거죠.


오오! 동시 작업 능력이 훨씬 나아지고,

대기시간이 나아지는 좋은거군요!


라고 생각할수 있는데, 

이 방식도 단점이 존재합니다.


lock 을 처리해야할 양이 많아져서

그러한 처리양이 부담이 되는거지요.


테이블 단위라면 테이블 30개 정도의 lock 만 관리하면되는데

리플이 300만개라면 300만개의 lock 를 관리해야겠지요


다만 그러한 관리의 부담을 고려하고서라도,

테이블 단위의 락은 테이블에 데이터가 많이 들어가고, 그 데이터에 많은 사람이 접근하는경우는 지연 시간이 기하급수적으로 늘어납니다.


그러한 의미에서 대규모 접속이 많은 사이트의 경우는 innodb 를 추천하는거지요


'-^

글쓴이 제목 최종 글
집으로.. 업그레이드 이후 게시판 ex가 이상합니다. [4] 2011.11.07 by 집으로..
BlogJh 텍스타일은 정말 버려진건가요? [11] 2020.03.14 by ㅠ도라에몽ㅠ
銀童 innodb 와 myisam 에 대한 비교 [2] 2011.11.08 by 지투스
코뿔소2020 XE-Core 데모 사이트(테스트 전용) [33] 2011.11.08 by 양파농부
winter23 게시판 첨부파일 용량 조정(웹호스팅) 문의 [2] 2011.11.08 by winter23
Centell XE는 MAC의 크롬에서 글을 쓸 수 없다던데 말이에요.. [6] 2011.11.08 by FEFE
Community 혹시 특정 글에 대한 댓글 이나 글 작성을 막을 수가 있을까요? [1] 2011.11.08 by FEFE
황비 익숙함과 편리함  
Chosun.us XE Data Importer (데이터 들여오기) 계속 실패하는데 방법이 없을까요? [1] 2011.11.08 by 행복한고니
황비 XE 2.0 출시에 대해서 [14] 2011.11.08 by 황비
VL-2536 일부 해외서버에서 download.xpressengine.com 으로 접근이 안됩니다.  
we09 페이지 위젯에 배경 이미지 넣어보신분(1.5.0.8) file  
DJinside 텍스타일 본문이 안보여요 ㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠ [3] 2011.11.09 by snows96
한용길 도와 주실거죠? 도무지 알수가 없습니다. ㅠ.ㅠ [2] 2011.11.09 by 한용길
난다날아 생각날 때마다 적는 '스킨/프로그램 개발자를 위한 XE 1.5 참고사항' [9] 2011.11.09 by 난다날아
앙태 1.5.0.8 업데이트 이후 용량이 마구마구 증식합니다;; [1] 2011.11.09 by 銀童
고수군 확장성 게시판 모듈시, executeQuery 질문 (도저히 답을 모르겠어서..) [1] 2011.11.09 by San.
빽짱구 1.5.0.8 버전에서 익스7일때 [6] 2011.11.09 by 날개!
SMaker [1.5.0.8] 알 수 없는 버그가 발생하고 있습니다.  
김진교369 불편한 점(복사하기 붙이기 허용해주세요)