1. 트랜잭션 개요
의미
데이터 베이스의 논리적 연산 단위
밀접히 관련되어 분리될 수 없는 한 개 이상의 데이터베이스 조작
분할 불가능한 최소 단위
all or nothing
특성
원자성(automicity) : all or nothing, 되거나 안됬거나!
일관성(consistency) : 트랜잭션의 전 후에 데이터베이스의 내용이 잘못이 없는 것
고립성(isolation) : 트랜잭션 도중에 다른 트랜잭션이 실행 될 순 없음
지속성(durability) : 트랜잭션의 결과가 영구적으로 저장 됨
TCL
commit : 데이터베이스의 변경사항 반영
rollback : 이전 상태로 복수
save point : 저장점
2. commit
입력, 수정, 삭제한 자료에 대해서 문제가 없다고 판단될 때 commit 명령을 완료할 수 있는 명령
commit 이전의 특징
메모리 버퍼에만 영향을 받음, 복구가 가능함
select문으로 결과 확인 가능
다른 사용자는 현재 사용자가 수행한 명령의 결과를 볼 수 없음
변경된 행은 locking이 걸려있어 다른 사용자가 변경이 불가능 함
commit 이후의 특징
변경된 사항에 대해 데이터베이스에 반영
이전 데이터는 영원히 잃어버리게 됨
모든 사용자는 결과를 볼 수 있음
관련된 행에 LOCKING이 풀리고 다른 사용자들이 행을 조작할 수 있음
DB별 특징
oracle : 사용자가 직접 commit 해줘야 함
sqlserver
auto commit
암시적(시작은 DBMS가 끝은 사용자가)
명시적(시작과 끝을 모두 사용자가 명시 함)
3. rollback
사용자가 입력, 수정, 삭제한 데이터에 대해서 변경 사항을 취소하는 기능, 관련된 행의 locking이 풀림
예)
update into player(player_id, team_id, postion, height, wieght, back_no)
value(‘1999035’, ‘K02’, ‘이운재’, ‘GK’, 182, 82, 1)
rollback;
효과
데이터의 무결성 보장
영구적인 변경 전, 변경사항 확인 가능
논리적으로 연관된 작업을 그루핑하여 처리 가능
4. savepoint
savepoint는 전체 롤백을 막고 특정한 지점까지만 롤백이 가능하도록 지정하는 구문
예)
oracle
savepoint svpt1;
...
rollback to svpt1;sql server
save transaction svtr1;
...
rollback transaction svtr1;
5. 정리
commit, rollback은 CUD 수행에 대해서 데이터 무결성을 보장하기 위함
DDL문장은 그 전후 시점에 자동으로 commit됨
데이터 베이스에 정상적으로 접속을 종료하면 자동으로 트랜잭션이 커밋
이상 종료로 접속 단절 시 자동 롤백
'자격증 > SQLD' 카테고리의 다른 글
GROUP BY, HAVING 절 (0) | 2016.09.09 |
---|---|
where 절 (0) | 2016.09.09 |
DML (Data Manipulation Language, 데이터 조작 언어) (0) | 2016.09.09 |
DDL (Data Definition Language) (0) | 2016.09.09 |
관계형 데이터베이스 개요 (0) | 2016.09.09 |