


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 |
|---|