mysql 트랜잭션 사용시 자동 테이블락이 걸리나요?

mysql 트랜잭션 사용시 자동 테이블락이 걸리나요?

QA

mysql 트랜잭션 사용시 자동 테이블락이 걸리나요?

본문

1.

트랜잭션시 트랜잭션 레벨 락이 걸리며

read lock과 동일하다고 하는데 맞나요?

2.

그렇다면 특별히 write lock이 필요하지 않은이상

따로 table lock 구문을 넣을 필요가 없나요?

3. 

만약 자동으로 read lock이 걸린다면 

start transaction 다음부터 commit또는 rollback

사이에 있는 모든 insert into, update, delete 구문에 포함된 테이블이 락 걸리는 건가요?

이 질문에 댓글 쓰기 :

답변 1

1. 트랜잭션에서 레벨 락은 트랜잭션 동안 데이터베이스에 대한 일관된 접근을 보장하기 위해 사용됩니다. MySQL에서 트랜잭션 레벨은 READ UNCOMMITTED, READ COMMITTED, REPEATABLE READ, SERIALIZABLE로 구성됩니다. READ UNCOMMITTED 레벨에서는 다른 트랜잭션에서 변경 중인 데이터를 읽을 수 있기 때문에 락이 걸리지 않습니다. 그러나 나머지 레벨에서는 read lock이 걸리며, 이는 해당 트랜잭션이 읽는 데이터에 대한 다른 트랜잭션의 변경을 차단합니다.

 

2. write lock이 필요한 경우, 해당 레코드나 테이블에 대한 write lock을 걸기 위해 별도의 table lock 구문을 사용해야 합니다. 하지만, 일반적으로 트랜잭션 레벨을 적절히 설정하면서 충분히 데이터 일관성을 유지할 수 있기 때문에, table lock을 사용하는 경우는 매우 드물게 발생합니다.

 

3. start transaction 이후에 수행되는 모든 insert, update, delete 구문은 해당 트랜잭션에서 사용하는 테이블 레코드에 대한 lock을 요청합니다. 따라서, start transaction 이후에 모든 데이터 변경 작업에서는 해당 트랜잭션에서 사용하는 테이블에 lock이 걸리게 됩니다. 하지만, 다른 트랜잭션에서 해당 테이블에 대한 lock을 요청하거나 이미 lock을 가지고 있는 경우, 해당 트랜잭션은 대기하게 되며, lock이 해제될 때까지 대기합니다.

답변을 작성하시기 전에 로그인 해주세요.
전체 59,609
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT