포럼

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


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 호환 부분 문제 질문 안내 외 1가지  
銀童 ob_gzhandler 옵션에 관해서 [6] file 2011.11.05 by 쏘프티
roks821 페이지 편집을 html 편집 가능하게 [3] file 2011.11.05 by roks821
misol 저작권 어떻게 생각하세요? [3] 2020.03.14 by Garon
Yosida_sakura 1.5 미만 사용자들을 위한 보안패치는 게속 해줄까요? [5] 2011.11.04 by snows96
Community 혹시 DB에 자동으로 게시판 분류 사용과....  
snows96 XE 1.5에서 약관 수정해도 반영안될 시 해결방법  
까멸 관리자 모드로 회원삭제시 오류  
우진홈 XE와 큐브리드는 앞으로 어떤 관계로...? [12] file 2011.11.04 by tobor
도라란 설문조사도 좀더 개발되면 좋을텐데요..  
자래보자 비회원 다운로드 문제점입니다 [5] 2011.11.04 by we09
까멸 파일첨부가 안됩니다ㅠㅠ  
rjsoo 1.5.0.7 웹로딩 빠르게 하는 방법 (xe 사용팁에서 링크 걸음) [9] 2011.11.04 by NA답답이
roks821 콘탠트위젯 정상화는? - 해결완료 ??? -_- [8] file 2011.11.04 by ForHanbi
가브리엘조 1.5 문제있습니다. 해결방법있나요? [1] 2011.11.04 by magosu
가브리엘조 1.5 게시판 생성 및 삭제 어디갔죠? [1] 2011.11.03 by rjsoo
섹시한과쟈 일정 주기로 버전 업그레이드를 해주시면 좋겠네요.+메뉴관련 [2] 2011.11.03 by 에릭리카드
카이네드 자료실이 하루 빨리 개선되었으면 좋겠습니다. [3] 2011.11.03 by Cody
악의미소 html5 사용시 문제점 ..  
magosu 공홈에서 에디터일부기능이 제대로 작동안됩니다. [4] 2011.11.03 by snows96