회사에서 발표한 자료를 공유합니다.
Repeatable Read
라고 불리고, Oracle DB 에서는 Serializable
라고 불립니다.Write Skew
현상이 일어납니다Write Skew
현상은 하나의 트랜잭션 안에서는 문제가 없지만 결과적으로는 제약을 위반하는 결과들이 초래하는 것을 말합니다.name | 당직 |
---|---|
jaquan | true |
giri | true |
koil | false |
clasn | false |
dugi | false |
모든 개발자 리스트를 읽어서, 당직하는 사람이 1 이상이면 자신의 당직을 오프합니다.
transaction begin;
count= select count(*) from backends where 당직 is true
if count >=2 {
update backends set 당직 = true where name = {요청한 이름}
}
transaction commit;
2PL 방식에서는 Lock 으로 방어 할 수 있습니다.
transaction begin;
count= select count(*) from backends where 당직 is true **for update**
if count >=2 {
update backends set 당직 = true where name = {요청한 이름}
}
transaction commit;
SI 에서는 table 설계를 변경하여 방어 할 수 있습니다.
date | 당직 서는 사람 |
---|---|
2023-02-01 | giri,jaquan |
For this reason, PostgreSQL historically did not even provide serializability, instead offering snapshot isolation as its highest isolation level.
Serializable
을 지원하기 위해 나온 Serializable Snapshot Isolation
을 살펴봅시다.SIREAD
와 WRITE
을 기록해둔다.