database.sarang.net
UserID
Passwd
Database
DBMS
ㆍMySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
MySQL Q&A 22431 게시물 읽기
No. 22431
트랜잭션 관련 Query 예제.
작성자
강재희(jaybird)
작성일
2004-09-21 18:56
조회수
2,766

안녕하세요....

n개의 피씨에서 하나의 InnoDB를 액세스하여, Read/Write/Modify 하는 경우의 Query 예제를 뼈대만 간추려서

 

써보려구요. 혹시 문제점이 있나 살펴 주시면 감사하겠습니다.

 

 

Isolation-Level 은 디폴트 (REPEATABLE READ )로 가정합니다.

 

1) READ 문

START TRANSACTION;

 

SELECT ... FROM ... LOCK IN SHARE MODE ==> n번 select합니다.

 

COMMIT / ROLLBACK;

 

이렇게 하면, Select문이 처음 수행될때, 해당 테이블에 shared-lock 이 걸리고, commit/ rollback 할때, 그 락이 해제 되는거 맞나요?

 

==================================================

2) WRITE 문

START TRANSACTION;

INSERT INTO ~~~ ==> 마찬 가지로 n번 수행할 수 있습니다.

COMMIT / ROLLBACK;

 

이경우도, 첫번째, Insert에 Exclusive-Lock이 걸리고, commit/rollback시에 그 락이 해제 되는거 맞죠?

 

==================================================

3)UPDATE 문

START TRANSACTION;

UPDATE ==> 마찬 가지로 n번 수행할 수 있습니다.

COMMIT / ROLLBACK;

 

위에서 처럼 처음에 락이 생성되고, 마지막에 락이 해제되는...

 

 

 

 

기술 문서 읽고서 종합해 본 결론입니다. 테스트를 거칠 계획 이지만, 우선 고수님들의 의견을 듣고 싶어서요....

 

답변 부탁드려요... ^^

이 글에 대한 댓글이 총 2건 있습니다.

저두 mysql에서의 lock처리는 어떻게 작동하는지 정확히는 모르지만

일반적인 db에서는 자동적으로 lock처리를 해줍니다.

 

사실 특별하게 lock처리할일이 별로 업죠.. 예전에 isam파일처리

할때는 무지신경써야 했습니다. 잘못하면 deadlock이 발생되니

깐요.   db를 쓰고부터는 수동으로 lock처리할 필요가 전혀 없더군요

 

 

그리고, 트랜젼션의 진정한 의미는 lock처리에 있지 않고, 중간에

에러시,  원상태로 복구하는데 있습니다.

 

예를들면

아래와 같은 문장이 연속적으로 쓸경우 만약 중간에서 오류시

rollback시키지 않으면, db설정에 따라서 자동commit이 되어

데이타가 깨어지는 경우가 발생됩니다.

-----------------------------------------------

insert

 if 오류 then rollback;

update

 if 오류 then rollback;

.

.

if 성공 then commit;

else

   rollback

end if

 

 

 

윤기호님이 2004-09-22 14:03에 작성한 댓글입니다. Edit

윤기호님  답변 감사드립니다.

 

근데,  정작  제 질문에  대한  답변은 아닌 것 같습니다.

 

제가  지금  트랜잭션  제어 가지고  고민하는  수준은  아니라고 생각되거든요.

 

트랜젝션이 일어나는  상황에서  분명히  락이란 것은  중요한 이슈입니다.  

 

수동으로  락을  처리 해야 하는  저의  상황이구요....

 

제 상황을  제대로 인식못하셔서  그렇게  답변해주신 것 같군요..

강재희(jaybird)님이 2004-09-23 03:30에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
22434primary key 를 정한 특정 필드 값을 얻어서 insert 시에 추가 할순없나요?
쿼리
2004-09-22
1179
22433Windows 2000에서 핸들 증가의 문제. [2]
조성우
2004-09-21
1510
22432한글이 이상해요.
김민정
2004-09-21
1215
22431트랜잭션 관련 Query 예제. [2]
강재희
2004-09-21
2766
22430간단한 MYSQL Error 입니다... 한번 봐 주세여... [2]
윤창기
2004-09-21
1490
22429innodb가 정말 제대로 트랜젝션 처리가 되는가요? [8]
윤기호
2004-09-21
4917
22428동일 구조의 테이블에서의 데이터 이동 ...
곤지
2004-09-21
1338
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.020초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다