Transaction 은 사용자가 임의로 정의한 여러 계산을 하나로 묶는 것이다.
Acid Property
Atomicity
=> 수행할 명령이 되면 다 되고, 안되면 다 되지 않아야 함.
=> Abort, Redo 를 통해 성립
Consistency
=> 사용자가 정의한 임의의 조건을 만족하는 걸 일관적이라고 함.
=> 수행 전 일관적인 데이터가 수행 후에도 일관적이어야 함.
=> Attribute Constraint 는 DBMS 가 보장 해줌.
=> 나머지는 User 가 Logic 을 잘 짜면 됨
Isolation
=> 각각의 명령어들이 동시에 실행되어도 Consistency 를 망가트리지 않음
=> 동시 접속을 고려하면, Concurrency 역시 보장해주어야 함.
Durability
=> 시스템이 터져도 값을 복원할 수 있거나, 유지할 수 있어야 함.
Serializablity
Serializable
동시에 시행되는 Instruction 들이 Serial 하게 동작하는 것과 같은 결과를 주는 것이 보장됨
Serial 한 결과와 얼마나 동일한지 말하는 Serializable 은 Concurrency 와 반비례
그래서 아래 표처럼 Level 로 따로 지정 가능함.
Phantom Read
=> transaction 처리 중 다른 transaction 에서 새로 삽입한 데이터가 영향을 줌
Non Repeatable Read
=> 데이터를 읽었는데 다른 Transaction 이 값을 수정하고 commit 해서 값이 계속 달라짐
Dirty Read
=> 다른 Transaction 에서 Commit 안된 Data 도 읽어서, 혹시 abort 되면 내 Transaction 도 abort 됨.
Postgres 에서 Serializability
Begin;
set transaction isolation level [위의 레벨[;
Commit; { or Abort;)
댓글 없음:
댓글 쓰기