개발 Q&A

제목 mysql start transaction (read only | read write)
글쓴이 박쥐 작성시각 2016/10/05 17:05:58
댓글 : 2 추천 : 0 스크랩 : 0 조회수 : 14076   RSS

안녕하세요.

mysql 5.6 부터 생긴 옵션인거 같은데 (정확하지는 않습니다.)

start transaction (read only | read write)

처럼 read only 또는 read write를 옵션으로 추가 할 수 있는데

이게 정확히 어떤 기능을 하는지 궁금합니다.

공식 메뉴얼을 봐도 영어가 짧아서 정확하게 이해가 되지 않네요.

혹시 대략적으로라도 아시는 분 계시면 답변좀 부탁드리겠습니다.

 

 

 다음글 호스팅 문제입니다. (2)
 이전글 실시간으로 댓글이 추가되면 댓글 추가됬다는 알림메세지 ... (1)

댓글

pwrlove / 2016/10/05 17:31:15 / 추천 0

안녕하세요?

start transaction (read only | read write ) 이란?

데이터베이스 transaction 모드를 시작할때, 다른 트랜젝션에서 지금 트렌젝션을 시작해서

작업중인 테이블을 어떻게 허용하느냐를 결정하는 모드 입니다.

데이터베이스에서 트렌젝션을 시작하면, 메모리상에 임시 테이블 영역을 만듭니다.

그런다음 레코드에 insert/update가 발생되면 메모리 상에서 변경을 하고, 

만약 트렌젝션을 롤백하면 메모리를 그냥 없애 버립니다.

커밋을 한다면, 하드디스크에 내용을 복사합니다(내용이 실제 테이블에 반영이 됩니다.).

그런데, 현재 트렌젝션을 진행 중일 경우, 다른 사람(혹은 다른 트렌젝션)이 같은 테이블(혹은 데이터)에 접근을 할 경우,

 1) transaction read only : 그냥 읽기만을 허용한다. 이경우는 변경이 안됩니다.

 2)  transaction read write : 읽기 쓰기 모두를 허용한다.

만약 내가 내용을 적고 있는데, 누군가 또 변경을 한다면 복잡한 문제가 생기겠죠, 그렇지만, 선행 후행 순서만 잘 지켜서 내용이 반영된다면 문제 없겠죠. 그래서 트랜젝션을 사용하는 것입니다.

좀더 자세한건 데이터베이스 내용을 확인 하시면 될듯 합니다.

도움이 되셨으면 합니다.

 

박쥐 / 2016/10/05 17:34:32 / 추천 0

@pwrlove

답변감사합니다. 이해가 잘 되었습니다.^^