트랜잭션

데이터베이스에서 데이터를 처리하는 하나의 논리적인 작업 단위.

마지막으로 실행한 커밋(혹은 롤백) 명령 이후부터 새로운 커밋(혹은 롤백) 명령을

실행하는 시점까지 수행된 모든 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

: 중복을 허용

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

+ Recent posts