ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [DB] 트랜잭션 동시에 실행해서 성능올리기 ( confilct serializable한 nonserial schedule을 허용하기 )
    TIL 2024. 4. 8. 17:25

     

     

     

    nonserial schedule(논시리얼 스케쥴)  : 트랜잭션이 순차적이지않고 겹쳐서 실행되는 스케쥴

    장점)

    • 트랜잭션이 겹침
    • 동시성이 올라간다 (성능이 향상된다)
    • I/O작업마다 다음 트랜잭션 동작 실행한다

    (I/O 입출력 작업은 CPU가 유휴상태로 있는 작업이다. 그래서 CPU가 유휴상태로있는 시간동안 다른 트랜잭션의 동작을 실행함으로써 CPU의 유휴시간이 줄어들고 성능이 좋아진다.)

     

    단점)

    • 결과가 이상해질 수 있다

    (동시에 트랜잭션을 수행하다보니 잘못된 값을 읽거나 써서 결과가 이상해질 수 있다)

     

     

     

    - serial schedule(시리얼 스케쥴) : 트랜잭션이 순차적으로 수행되는 스케쥴

     

    장점)

    • 결과가 이상해질 가능성이 없다

    (하나의 트랜잭션이 완전히 끝나고 다음 트랜잭션이 수행되기때문에 결과가 이상해질 가능성이없음)

     

    단점)

    • 동시성이 떨어져서 성능이 저하된다.
    • CPU가 노는 구간(I/O작업)이 많이 생긴다.

     

     

     

     

     

    성능이 좋으면서 결과가 이상해지지 않으려면?)

     

    -> "Conflict Serializable한 논시리얼 스케쥴을 허용하자!"

     

    -> 어떤 시리얼 스케쥴과 하나라도 Conflict equivalent하다면 그 스케쥴은 Conflict Serializable하다

     

     

     

     

     

     

     

     

     

    -스케쥴 : 여러 트랜잭션들이 동시에 실행될때, 각 트랜잭션에 속한 operation들의 실행순서

     

    -> 각 트랜잭션내 operation들의 순서는 바뀌지 않는다

     

     

     

    -operation : 실행되는 하나의쿼리

     

     

     

    - Conflict : 세가지 조건을 모두 만족하면 Conflict 성립

    (두 operation 사이에서)

     

     

    다음의 세가지조건을 만족하면 Conflict 성립

    1. 서로 다른트랜잭션소속
    2. 같은 데이터에 접근
    3. 최소하나는 write operation

    -> conflict 관계에 있는 operation은 순서가 바뀌면 결과도 바뀐다

     

     

     

    -Conflict Equivalent : 두조건 모두 만족하면 Conflict Equivalent 성립

    (두 스케쥴 사이에서)

    1. 두 스케쥴은 같은 트랜잭션들을 가진다
    2. 어떤 Conflict Operations의 순서도 양쪽 스케쥴이 모두 동일하다

     

     

    -*Conflict Serialzable : 시리얼 스케쥴과 Conflict Equivalent 하다

     

     

    concurrency control : 어떤스케쥴도 serializable하게 만드는 것

     

     

    다양한 Isolation Level(격리수준)을 적절히 이용해서  동시성을 조절할 수 있다

     

    isolation level을 높이면 serializable 수준이 올라가고 트랜잭션이 순차적으로 실행됨에따라 성능이 떨어진다(동시성하락) 

     

     

    'TIL' 카테고리의 다른 글

    [ERROR] ReferenceError: exports is not defined in ES module scope  (0) 2024.05.28
    Express static  (0) 2024.05.25
    [DB] soft delete 논리삭제  (0) 2024.04.05
    N+1 문제 해결하기  (0) 2024.04.05
    3계층구조)  (0) 2024.04.05
Designed by Tistory.