본문 바로가기
DB

트랜잭션 보충 wnd

by ernest45 2024. 6. 9.

 

 

 

 

 

 

SERIALIZABLE은 다 막아버리지만, 동시에 발생할 수 있는 트랜잭션을 막아버리면

데이터 베이스의 성능저하가 생길 수 있다

 

 

 

 

db마다 다름

 

 

1. mysql (별표)

2.postgre

 

 

 

 

배타적인 락 (데이터를 수정할 때 읽기도 하지만)

 

 

S는 수정하기 위해, rock을 걸고 해제 후 b는 최초의 

 

 

 

 

 

 

 

공유적인 락 (데이터를 읽을 때)

 

 

 

 

buyer가 product를 읽을 때 (서로가 같이) 읽을 수 있다 rock을 걸지 않음

 

 

 

 

 

Lock의 문제

 

둘 다 산다고 한다면 quantity가 0이 되어야 정상!

 

 

 

 

 

쓰기 시점에선 rock으로  user2가 접근할 수 없지만, 읽기로 lock을 건 상태에서 user1이 w로 바꾸고 unlock을 할 때

수량 변경이 안될 수 있다

 

 

 

 

순차적인 rock으로 인해 읽을 때의 시점에서 s_lock때문에 문제가 발생할 수 있다

 

 

베타락을 사용하면 s_lock을 사용할 수 없게 되긴 하지만,

락을 미리 잡는 것

 

 

 

 

해결점

 

 

 

2PL PROTOCOL도 문제점이 있긴 함

 

 

 

교착상태 Dead Lock

 

 

 

 

 

해결책 중 하나

 

 

 

정리

 

 

'DB' 카테고리의 다른 글

mySql CHAR vs VACHAR  (0) 2024.06.26