반응형
CAST(A.DAILY_FEE*30*(1-B.DISCOUNT_RATE*0.01) AS SIGNED) AS FEE

 

💡 CAST 연산자
: 계산된 FEE값을 정수로 변환

 

AS SIGNED : 부호를 유지

AS UNSIGNED : 부호 제거

반응형
반응형

병행제어(concurrency control)를 하지 않을 때 발생할 수 있는 문제점

1) 갱신 분실 (lost update)

- 두 트랜잭션이 동시에 같은 데이터를 갱신할 때, 하나의 트랜잭션이 그 데이터를 갱신하기 전에 다른 트랜잭션이 갱신함으로써 한 트랜잭션의 갱신 연산이 무효화됨.

 

2) 모순성 (inconsistency)

- 하나의 트랜잭션이 여러 데이터 갱신 연산을 수행할 때, 일관성 없는 상태의 데이터베이스에서 데이터를 가져옴으로써 데이터의 불일치가 발생하는 것을 의미한다. , 트랜잭션에서 이루어지는 연산대로 전과 후가 일관성이 있어야 하는데, 중간에 다른 트랜잭션의 연산작업으로 인해 일관성이 없게 됨.

 

3) 연쇄 복귀 (cascading rollback)

- 병행 수행되던 둘 이상의 트랜잭션 중 어느 한 트랜잭션에 오류가 발생하여 rollback하면 다른 트랜잭션들도 함께 rollback되는 현상.

그런데, 복수의 트랜잭션이 데이터 공유 시 특정 트랜잭션이 처리를 취소할 경우 다른 트랜잭션이 처리한 부분에 대해 취소 불가능

⇒ rollback을 하고자 하는 트랜잭션이 처음상태로 돌아가려고 해도 다른 트랜잭션에서 이미 연산 작업을 완료하고 떠났기 때문에 복귀 작업 불가능

 

반응형

'Database' 카테고리의 다른 글

트랜잭션 격리 수준(Isolation level) 개념 정리  (0) 2022.12.27
반응형

트랜잭션 isolation level

 

트랜잭션 isloation level은 아래의 4가지 단계로 구분된다.

    • read uncommited: commit되지 않은 데이터도 읽을 수 있다
    • read committed: commit된 데이터만 읽는다
    • repeatable read: 하나의 트랜잭션에서는 하나의 스냅샷만 사용
    • serializable: read시에 DML작업이 동시에 진행될 수 없다

 

transaction isolation level table

- 따라서 read commited의 경우 하나의 트랜잭션에서 같은 쿼리를 두 번 실행하면 처음의 쿼리결과와 두번째 쿼리 결과가 다를 수 있다.

- repeatable read는 하나의 트랜잭션에서 같은 쿼리를 두 번 실행하더라도 두 결과가 동일하다.

 

여기서 Phantom read란?

Phantom read : 한 트랜잭션 내에서 같은 쿼리를 두 번 수행 시, 첫 번째 쿼리에서 없던 레코드(유령, Phantom)가 두 번째 쿼리에서 발생하는 현상

 

non-repeatable read와 phantom read는 무슨 차이??

둘 다 한 트랙잭션 내에서 같은 쿼리를 두 번 실행했을 때 처음 쿼리 결과와 두번째 쿼리 결과가 다를 때를 말한다.

- non-repeatable read는 한 레코드의 값이 다른 경우, 즉 달라진 value에 초점

- phantom read는 없던 레코드가 생기거나, 있던 레코드가 없어지는 경우, 즉 레코드의 존재 유무에 초점

 

repeatable read isolation level에서는 non-repeatable read가 발생하지 않는다.

- 다른 트랜잭션이 수정사항을 commit하더라도, 그 트랜잭션이 자신보다 늦게 생긴 트랜잭션이면 해당 변경사항을 반영하지 않기 때문이다.

반응형

+ Recent posts