본문 바로가기

ConcurrencyControl

18. LOCK을 활용한 concurrency control 트랜잭션 1의 목적을 달성하기 위해서는 write(x=20) 작업이 필요하다. 그러나, 위 그림은 설명을 쉽게 하기 위해서 단순히 write(x=20) Operation 하나만 실행을 해주면 되는 것처럼 적어놨다. 그러나 write를 하게 될 때, 만약 index가 걸려 있다면 거기에 대한 처리도 해야 할 것이고, 이 데이터가 실제로 저장되는 파 일에 대해서도 이런 저런 처리를 해줘야 하므로, 실제로는 복잡한 실행 과정을 거쳐야 한다. 이때, 트랜잭션1의 write와 트랜잭션2의 write가 동시에 실행이 된다고 해보자. 어떠한 데이터를 write하는 과정은 복잡한 과정이므로, 같은 데이터를 트랜잭션2에서 write를 동시에 처리하게 되면, 최종 적으로 데이터가 깔끔하게 처리되지 않을 가능성이 높다. 그.. 더보기
16. concurrency control - Part 2 unrecoverable schedule 위 그림에서 보듯, transaction1은 commit의 명령어를 만나면서 실행이 종료가 돼, H의 balance=250만원인 상태가 DB 서 버에 영구적으로 저장이 됐다. ( 참고로, 이 commit은 Transaction1에 대한 commit이므로, Transaction2에 해당하는 빨간색 으로 표시된 2개의 명령문에 대해서는 commit이 되지 않는다.) 그런데, Transaction2에서 어떤 예기치 못한 에러가 발생을 하여, ABORT(중단)가 되면, Transaction2에 대해 roll back이 실행이 돼(autocommit에 의해 에러 발생 시, 자동으로 roll back이 실행이 된다), Transaction2의 Operation들의 실행이 모.. 더보기