용어정리
XA : eXtended Architecture의 줄임말로 말 그대로 확장된 아키텍쳐이다.
Non-XA : XA의 용어를 활용해보면 확장되지 않은 아키텍쳐이다.
트랜잭션 : 거래의 최소 단위이다. 보통 All or Nothing 이라고 얘기한다.
즉 거래라는 것은 서로간의 교환인데 한쪽만 성공한다면 데이터가 망가지기 때문에 정합성을 유지하기 위한 단위라고 볼 수 있다.
활용
일반적으로 DB 트랜잭션의 정합성 유지를 위해 XA 또는 NON-XA를 사용한다.
NON-XA : 기본적인 로컬 트랜잭션.
사용하는 DB가 하나일 때 Non-XA로 단순하게 Commit과 Rollback을 처리할 수 있다.
조금 자세히 설명하자면, DB에 세션 하나에 하나의 트랜잭션을 모두 담아 놓고, 둘다 성공하면 commit하고 하나라도 실패하면 세션을 rollback 시킨다.
XA : 확장된 아키텍쳐라는 말처럼 DB가 여러개 이거나, 트랜잭션의 주체가 여러개일 때 사용할 수 있다. (그 외에도 다양한 상황에서 사용가능하다.)
보통 2pc (two-phase-commit)으로 진행되며, DB가 2개일 때를 예로 간단하게 설명하자면,
- 양쪽 DB에 준비가 되었는지 먼저 물어본다. -> 양쪽 모두 준비가 되었다고 한다. -> 준비가 완료되었다. -> 커밋을 진행한다.
이렇게 진행이 된다. 여기서 한쪽이라도 문제가 있다면, 전부 롤백이 된다.
트랜잭션의 모든 연산은 반드시 한꺼번에 완료가 되어야 하며, 그렇지 않은 경우에는 한꺼번에 취소되어야하는 원자성을 지닌다.
* COMMIT
한꺼번에 완료가 된 경우를 말함. 이 경우에는 작업결과는 데이터베이스에 반영.
* ROLLBACK
취소가 된 경우에는 비정상적인 종료. 이경우에는 작업결과는 모두 취소되게 되어 데이터베이스에 영향을 미치지 않음.
* 트랜잭션(Transaction)의 특성
1) 원자성(Atomicity)
분리할 수 없는 하나의 단위로 작업은 모두 완료되거나 모두 취소되어야 한다.
2) 일관성(Consistency)
사용되는 모든 데이터는 일관되어야 한다.
3) 격리성(Isolation)
접근하고있는 데이터는 다른 트랜잭션으로 부터 격리되어야 한다.
트랜잭션이 진행되기 전과 완료된 후에 상태를 볼 수 있지만, 트랜잭션이 진행되는 중간 데이터는 볼 수 없다.
4)영속성(Durability)
트랜잭션이 정상 종료되면 그 결과는 시스템에 영구적으로 적용되어야 한다
5)순차성(Sequentiality)
데이터를 다시 로드하고 트랜잭션을 재생하여 원래 트랜잭션이 수행 된 후 상태로 데이터를 되돌리는 것
'DataBase > oracle' 카테고리의 다른 글
[ExaCS] Oracle Exadata Cloud Service (0) | 2023.07.21 |
---|---|
[ExaCC] Oracle Exadata Cloud@Customer 란? (0) | 2023.07.21 |
[Oracle Tuxedo] XA / non-XA 무엇이고 언제 사용할까? (0) | 2022.09.13 |