관리 메뉴

클라이언트/ 서버/ 엔지니어 "게임 개발자"를 향한 매일의 공부일지

트랜젝션 제어와 세션 2 - 세션과 읽기 연관성, LOCK에 대하여 본문

알고리즘 및 자료 관리/데이터베이스

트랜젝션 제어와 세션 2 - 세션과 읽기 연관성, LOCK에 대하여

huenuri 2024. 8. 21. 17:51

새벽 공부할 시간이 30분밖에 남지 않았지만 할 수 있는 데까지 세션을 학습해보려고 한다.

사설은 생략하고 바로 이어서 공부를 진행해본다.

 

학습 내용

세션과 읽기 일관성의 의미

학습 시간

새벽 6시 반 ~ 7시 10분 <40분 소요>


 

 

 

 

 

1. 세션과 읽기 일관성의 의미

 

세션이란?

세션은 어떤 활동을 위한 시간이나 기간은 뜻한다.

 

 

 

 

 

 

 

comend창을 사용하면 창이 두 개가 생기는데 이를 세션이라고 한다. 즉 여기서 우리는 세션 2개를 사용하고 있다.


 

 

 

 

읽기 일관성이란?

 

 

 

 

실습을 통해 확인 1 - SQL Developter

 

오라클에서는 삭제가 되었다. 이제 commend 창에서도 동일한 결과가 나오는지 확인해 보자.

 

 

 

 

 

실습을 통한 확인 2 - Commend

 

먼저 hr 계정에 접속을 했다.

 

 

 

 

그 결과 106개의 행이 나오고 모든 내용이 조회된다.

 

 

 

 

 

100번 직원에서 102번 직원으로 넘어가는 것을 보니 101번이 잘 삭제되었음을 볼 수 있다. 100번이 살아있는 이유는 101만 커밋을 했기 때문이다.


 

 

 

 

오라클에서 COMMIT을 진행했을 때

원래 행은 106개였다. 근데 오라클에서 커밋을 진행하면 다음과 같이 바뀐 것을 볼 수 있다.

 

 

행이 1개 줄어든 105개가 되었다. 이것이 바로 읽기 일관성이다.

 


 

 

 

 

2. 수정 중인 데이터 접근을 막는 LOCK

 

LOCK이란?

특정 세션에서 조작 중인 데이터는 트랜잭션이 완료되기 전까지는 다른 세션에서 조작할 수 없는 상태가 된다. 즉 데이터가 잠기는 것이다. LOCK은 조작 중인 데이터를 다른 세션에서 조작할 수 없도록 접근을 보류시키는 것을 뜻한다.

 

 

 


 

 

 

 

실습을 통해 확인하기 1 - 오라클

이렇게 조회가 되었다.

 

 

 

 

 

실습을 통해 확인하기 2 - Commend

 

100번 행에 AI라는 부서를 하나 등록해 주었다. 그러자 UPDATE가 되었음을 확인할 수 있다.


 

 

 

 

오라클에서 확인하기

 

 

오라클에서 BIGDATE라는 이름의 부서를 100번에 넣어주자 계속해서 작업이 계속되며 끝나지 않는다. LOCK이 걸린 것이다.

 


 

 

 

COMMIT을 해주었을 때

이때 command 창에서 COMMIT을 해주면 이러한 결과를 볼 수 있다.

 

이젠 LOCK이 풀려서 업데이트가 잘 되는 것을 확인했다.

 

 

 

 

 

동시에 두 개의 접속을 할 수 없기 때문에 생기는 현상이다.

 

 

 

 

BIGDATE 결괏값도 잘 들어가 있다. 책에 나오는 실습은 수업 중에 소개된 것과 비슷해서 따로 할 필요는 없을 것 같다.


 

 

 

 

학습을 마치고

이렇게 해서 오늘 불가능할 것 같던 트랜젝션 장까지 학습을 모두 마쳤다. 정말 뿌듯하고 스스로가 대견스러울 정도이다~ 예상보다 10분 정도 초과되었지만 그 정도면 나름 괜찮은 성과이다.
LOCK과 COMMIT에 대한 실습을 진행하며 정말 재미있었다. 11장의 실습문제는 단순한 퀴즈라서 시간 날 때 가볍게 한번 풀어보면 될 것 같다.