Transaction
SQL로 작업을 처리하는 단위를 말한다.
SQL로 작업을 할때 일정 단위별로 작업내용을 DB에 적용하거나, 적용하지 않고 되돌릴 수 있는 기능을 제공한다.
하나의 트랜잭션은 그 안에 작업한 내용을 전부 수행하거나, 하나라도 처리되지 않을 경우 전체를 되돌리는
All or Noting 의 방식으로 처리된다. 이를 통해 데이터의 안정성과 일관성을 확보할수 있다.
Commit 트랜잭션의 작업 내용을 DB에 적용하는 명령어. commit의 단위로 하나의 트랜잭션이 나뉜다.
DML이 아닌 DDL(createm alter drop truncate) 가 실행되면 자동으로 commit이 실행 된다.
Rollback 트랜잭션 작업내용을 모두 되돌려 이전 commit 지점으로 되돌린다.
Savepoint 하나의 트랜잭션에서 rollback으로 돌아갈 지점을 이전 commit이 아닌 특정 지점을 지정한다.
savepoint a1; 식으로 지점을 선언할수 있고, rollback a1; 식으로 지정한 지점으로 되돌릴수 있다.
*하나의 트랜잭션에서 변경, 사용중인 data는 lock이 걸려 다른 쿼리문으로 접근할 수 없고, commit이나 rollback으로 작업을 완료해야 lock이 풀린다.
Lock
DML로 특정 데이터를 변경했을때, 트랜잭션을 commit, rollback으로 완료하지 않았을 경우 해당 데이터는 lock이 걸려 다른 쿼리문으론 접근할수 없게해 데이터의 안정성과 일관성을 유지한다.
lock이 걸려 있는 데이터에 접근 할 경우, 먼저 lock을 얻어 작업중인 내용이 완료 될때까지 접근을 요청한 쿼리문은 무한대기상태에서 기다리게 된다.
* 서로 다른 쿼리문이 교차적으로 데이터에 락을 걸어 deadlock이 발생할 경우, 먼저 lock을 얻은 사용자측에 DBMS가 자동으로 deadlock detected message를 출력한다.
'ORACLE > ORACLE 기초' 카테고리의 다른 글
11. Sequence, Index (0) | 2020.09.12 |
---|---|
11. View (0) | 2020.09.12 |
9. 제약조건(Constraint) (0) | 2020.09.12 |
8. DDL 데이터베이스 정의 언어 (0) | 2020.09.12 |
7. DML-Insert, Delete, Update (0) | 2020.09.12 |