글

라벨이 rock인 게시물 표시

데이터베이스 - 트랜잭션

이미지
트랜잭션 트랜잭션은 동시 접속에 의한 사용자 처리 순서. 데이터의 일관성 있는 변경을 수행하도록 한다. 그리고 데이터 삭제, 수정 등과 관련 있는 DML 명령어만 트랜잭션을 구성한다. 이를 공부하기 위해 먼저 두 개의 클라이언트를 사용하여 하나의 데이터베이스를 두 사용자가 공유하고 있는 상황을 만들어주자. 이를 위해서 cmd 창을 두 개를 실행하고 각 각에서 scott으로 접속하자. 먼저 1번 세션에서 dept2라는 테이블을 만든다. 그리고 해당 테이블에 행을 추가한다. 세션 1에서는 다음처럼 행 데이터 하나가 추가되었다. 하지만 세션 2에서는 반영되지 않았다. 만약에 반영되었다면, 어떤 조건에 의해 자동 commit이 된 것이기 때문에 수정 후 바로 해보도록 하자. commit 양쪽 세션을 동기화 시키기 위해서는 commit이라는 명령어를 사용해야한다. 이는 각 데이터베이스가 달라질 때, 이에 대해서 제대로 입력을 한 것인지 다른 세션에게 알려줘야 하기 때문이다. commit을 입력할 경우 제대로 처리가 된 것으로 인정되어 나머지 세션에도 반영된다. 세션 2에서 확인해보자. 제대로 반영되고 있다. rollback 또 데이터를 하나 넣어보겠다. 이번엔 데이터가 잘못 입력된 상황을 가정하겠다. 잘못된 입력에 대해서 데이터베이스가 변경되어서는 안되기 때문에 이를 취소해보도록 하자. 이를 위해서 rollback을 사용한다. 반영이 안된 채 남아있다. 트랜잭션 종료시점 트랜잭션의 종료 시점은 중요하다. 트랜잭션이 진행 중일 경우에는 데이터를 변경 중인 세션과 나머지 세션간의 데이터가 동기화되어 있지 않는데, 트랜잭션 종료와 함께 각 세션이 동기화되기 때문이다. 종료 조건을 살펴보자. commit/ rollback 명령어 실행 테이블 생성과 같은 DDL 명령 실행 DCL 명령어 실행 exit을 사용하거...