-
- 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 성립
- 서로 다른트랜잭션소속
- 같은 데이터에 접근
- 최소하나는 write operation
-> conflict 관계에 있는 operation은 순서가 바뀌면 결과도 바뀐다
-Conflict Equivalent : 두조건 모두 만족하면 Conflict Equivalent 성립
(두 스케쥴 사이에서)
- 두 스케쥴은 같은 트랜잭션들을 가진다
- 어떤 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