brunch

You can make anything
by writing

C.S.Lewis

by 라트 May 18. 2024

트랜잭션의 직렬 가능 스케줄

주간 라트 2420

다른 사람의 감정을 

읽는 것은 어느 때든지

자유롭게 할 수 있다.


그러나 감정에 반응하는 것은

때를 기다려야 한다.




다수의 트랜잭션이 동시에 수행된 결과가 직렬 스케줄의 결과와 동일한 스케줄을 직렬 가능 스케줄(serializable schedule)이라 하며 일관성을 유지할 수 있는 스케줄이다. 트랜잭션의 직렬화(serialization)를 보다 구체적으로 설명하기 위해 간단한 Read, Write 연산으로만 구성된 스케줄을 생각해 보자. 

2개의 트랜잭션 Ti와 Tj가 있을 때, Ii는 Ti에 포함된 연산이고, Ij를 Tj에 포함된 연산이라고 하자. 만약 Ii와 Ij가 서로 다른 데이터 항목에 접근한다면 그 스케줄에 있는 다른 연산에 영향을 주지 않으므로 연산의 순서를 바꾸어도 상관없다. 그러나 두 연산이 같은 데이터 항목 Q에 접근한다면 명령어의 순서에 따라 결과가 달라질 수 있다. 

데이터 항목에 대하여 서로 다른 트랜잭션이 연산을 수행할 때, 최소 하나의 연산이 Write 연산일 경우 Ti와 Tj는 서로 충돌(conflict)한다고 한다. 서로 충돌하는 경우에는 실행 순서를 교환할 수 없다. 따라서 Ii와 Ij가 모두 Read 연산일 경우에만 실행 순서를 임의로 정할 수 있다. 

<정재화, 2020, 데이터베이스 시스템, 한국방송통신대학교출판문화원> 345쪽, 346쪽




살다 보면 주변의 많은 사람들과 감정 교환을 하면서 살 수밖에 없는 것이 현실이다. 이때에 종종 실수하는 것이 상대방의 감정과 상황을 보고 바로 반응하는 것이다. 상대방의 상황을 보고 나름대로 생각해 보는 것은 나의 자유이지만, 그 생각을 표현하는 것은 적절한 때를 기다려야 한다. 상대방이 나의 반응에 어떠한 기분을 느낄 것인가, 나의 반응에 상처를 받지는 않을 것인지 생각해 보아야 한다. 상대방을 위한 아무리 좋은 충고라 하더라도 상대방이 그 충고를 받아들일 준비가 되어 있지 않은 상태에서는 나의 충고는 상대방에게 상처를 줄 뿐 아무런 도움이 되지 않을 수 있다.



커버 이미지 출처: pixabay.com

브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari