2020년 7월 1일 수요일

SQL Transaction

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

댓글 없음:

댓글 쓰기

List