트랜잭션
데이터베이스에서 데이터를 처리하는 하나의 논리적인 작업 단위.
마지막으로 실행한 커밋(혹은 롤백) 명령 이후부터 새로운 커밋(혹은 롤백) 명령을
실행하는 시점까지 수행된 모든 dml명령을 포함한다.
트랜잭션 특징(ACID)
-원자성(Atomicity)
트랜잭션은 더 이상 쪼개질 수 없는 작업 단위로,
정상적으로 모두 수행되거나 전혀 수행되지 않음을 보장한다. "ALL or Nothing"
-일관성(Consistency)
트랜잭션이 실행되고 난 후와 실행되기 전, DB의 일관성을 보장한다.
여기서 일관성이란 무결성 제약조건이나 데이터 정합성을 말한다.
(데이터 타입 일치 등)
-격리성(Isolation)
여러 트랜잭션이 동시에 실행될 때 각 트랜잭션은 다른 트랜잭션과 독립적으로
수행되어야 한다. 서로의 결과에 영향을 미쳐서는 안된다.
-지속성(Durability)
성공적으로 수행된 트랜잭션은 영원히 반영된다.
트랜잭션 사용 목적
효율적인 작업 수행을 위해 프로세스를 병렬로 처리해야 하는데 그 과정에서 데이터의 불일치가
발생할 수 있다. 이렇게 DB서버에 다중 클라이언트가 작업을 수행할때나 업데이트 도중 중단되었을 경우
발생할 수 있는 데이터 불일치를 방지하기 위해 사용된다.
- DDL,DCL 명령문이 수행된 경우 자동 커밋되지만 DML 명령문의 경우 커밋 혹은 롤백을 해줘야한다.
- SQL Plus의 경우 정상 종료(exit)되었다면 자동 커밋되지만 비정상 종료(정전, 강제종료)되었다면 자동 롤백된다.
COMMIT
모든 작업들을 정상적으로 처리.
데이터베이스에 모두 반영, 변경된 내용을 영구 저장한다.
commit;
EX) client 1, client 2 동시 접속하여 작업하는 경우
동일한 테이블에 대해 client 1 이 데이터를 추가하고 commit은 하지 않은 경우,
client 2 는 변경된 데이터를 확인할 수 없다.
=> 오라클의 메모리에만 저장된 상태이고 테이블에는 저장이 안된 상태
client 1이 commit 을 실행 한 후, client2는 변경된 테이블을 확인할 수 있다.
ROLLBACK
처리 과정에서 발생한 변경 사항을 취소하고
이전 커밋 상태로 되돌린다.
rollback;
SAVEPOINT
현재 작업 중인 트랜잭션을 작게 분할하여 표시할 수 있다.
savepoint 별칭명;
rollback to 별칭명;
EX)
------------------------------------------------- commit insert 구문 ---------------------------> savepoint 별칭(A) update 구문 ---------------------------> savepoint 별칭(B) delete 구문 ------------------------------------------------- 현재 |
rollback -> insert,update,delete 전부 복구
rollback to 별칭A -> update,delete 복구
rollback to 별칭B -> delete 복구
인덱스(INDEX)
책갈피와 같은 역할로 데이터에 빠르게 접근하는 것을 도와줌으로써
데이터베이스의 성능 향상에 도움을 주는 객체이다.
- 인덱스를 위한 추가적인 공간이 필요하다
- 생성하는데 시간이 걸린다
- 데이터의 변경 작업이 자주 일어날 경우에는 오히려 성능이 저하된다.
=> 자주 검색 되면서 자주 변경이 안되는 데이터를 중심으로 인덱스 부여
인덱스 종류
unique index key
non-unique index key
: 중복을 허용
'DB(ORACLE)' 카테고리의 다른 글
[Oracle]오라클 서브쿼리 / 다중행 서브쿼리 비교 연산자-IN, ANY, SOME, ALL, EXISTS (0) | 2021.06.13 |
---|---|
[Oracle]오라클 서브쿼리, 조건문 그룹함수 사용 (0) | 2021.06.12 |
[Oracle]오라클 조인, outer join, self join, ansi join (0) | 2021.06.10 |
[Oracle]오라클 조인개념, cross join, inner join (0) | 2021.06.08 |
[Oracle]데이터 타입, varchar2 char 차이점, 자료형 변경 (0) | 2021.05.31 |