디비초보인 학생입니다...데드락의 개념을 확실히 알고 싶습니다..^^
디비 트랜잭션은 begin tran ~ commit tran(or rollback tran)으로 관리됩니다.
여기서 하나의 예를 들면
사용자 1의 transaction
begin tran
insert table_a values('1')
update table_b set ...
commit tran
사용자 2의 transaction
insert table_b values('1')
update table_a set ...
위와 같은 사용자 1, 2의 트랜잭션이 동시에 수행됐다면
"begin tran"하는 순간에 사용자 1,2가 사용하는 테이블은 lock상태가 됩니다
그런데 사용자 1, 2가 각각 동일한 테이블에 대해서 서로 반대로 lock상태를 유지하면서 lock이 풀리기만 기다리는 상태되기 때문에 이때 데이터베이스는 교착상태에 빠지게 되는데
이러한 상태를 데드락이라고 하며, 데드락을 피하는 방법은
일정한 기준을 세워서 트랜잭션의 진행(테이블 사용순서 같은)을 동일하게 사용하면 데드락을 피할 수 있습니다
적절한 설명이 됐는지요?