![post-thumbnail](https://velog.velcdn.com/images/alpaka206/post/c0ff323a-4684-42cb-b102-3ba25e48df41/image.png)
트랜잭션(Transaction) 정의
- 트랜잭션은 데이터베이스의 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위 또는 한꺼번에 모두 수행되어야 할 일련의 연산들을 의미한다.
- 트랜잭션은 데이터베이스 시스템에서 병행 제어 및 회복 작업 시 처리되는 작업의 논리적 단위로 사용된다.
- 트랜잭션은 사용자가 시스템에 대한 서비스 요구 시 시스템이 응답하기 위한 상태 변환 과정의 작업 단위로 사용된다.
트랜잭션의 상태
![](https://velog.velcdn.com/images/alpaka206/post/7082464f-5fa1-4f9f-8686-29b18ea17c3e/image.png)
- 활동(Active): 트랜잭션이 실행 중인 상태이다.
- 실패(Failed): 트랜잭션 실행에 오류가 발생하여 중단된 상태이다.
- 철회(Aborted): 트랜잭션이 비정상적으로 종료되어 Rollback 연산을 수행한 상태이다.
- 부분 완료(Partially Committed): 트랜잭션을 모두 성공적으로 실행한 후 Commit 연산이 실행되기 직전인 상태이다.
- 완료(Committed): 트랜잭션을 모두 성공적으로 실행한 후 Commit 연산을 실행한 후의 상태이다.
트랜잭션의 특성
- 다음은 데이터의 무결성(Integrity)을 보장하기 위하여 DBMS의 트랜잭션이 가져야 할 특성이다.
- Atomicity(원자성)
- 트랜잭션의 연산은 데이터베이스에 모두 반영되도록 완료(Commit)되든지 아니면 전혀 반영되지 않도록 복구(Rollback)되어야 한다.
- 트랜잭션 내의 모든 명령은 반드시 완벽히 수행되어야 하며, 모두가 완벽히 수행되지 않고 어느 하나라도 오류가 발생하면 트랜잭션 전부가 취소되어야 한다.
- Consistency(일관성)
- 트랜잭션이 그 실행을 성공적으로 완료하면 언제나 일관성 있는 데이터베이스 상태로 변환한다.
- 시스템이 가지고 있는 고정 요소는 트랜잭션 수행 전과 트랜잭션 수행 완료 후의 상태가 같아야 한다.
- Isolation(독립성, 격리성, 순차성)
- 둘 이상의 트랜잭션이 동시에 병행 실행되는 경우 어느 하나의 트랜잭션 실행 중에 다른 트랜잭션의 연산이 끼어들 수 없다.
- 수행중인 트랜잭션은 완전히 완료될 때까지 다른 트랜잭션에서 수행 결과를 참조할 수 없다.
- Durability(영속성, 지속성)
- 성공적으로 완료된 트랜잭션의 결과는 시스템이 고장나더라도 영구적으로 반영되어야 한다.
CRUD 분석
- CRUD는 '생성(Create), 읽기(Read), 갱신(Update), 삭제(Delete)'의 앞 글자만 모아서 만든 용어이며, CRUD 분석은 데이터베이스 테이블에 변화를 주는 트랜잭션의 CRUD 연산에 대해 CRUD 매트릭스를 작성하여 분석하는 것이다.
- CRUD 분석으로 테이블에 발생되는 트랜잭션의 주기별 발생 횟수를 파악하고 연관된 테이블들을 분석하면 테이블에 저장되는 데이터의 양을 유추할 수 있다.
- CRUD 분석을 통해 많은 트랜잭션이 몰리는 테이블을 파악할 수 있으므로 디스크 구성 시 유용한 자료로 활용할 수 있다.
- CRUD 분석을 통해 외부 프로세스 트랜잭션의 부하가 집중되는 데이터베이스 채널을 파악하고 분산시킴으로써 연결 지연이나 타임아웃 오류를 방지할 수 있다.
CRUD 매트릭스
- CRUD 매트릭스는 2차원 형태의 표로서, 행(Row)에는 프로세스를, 열(Column)에는 테이블을 행과 열이 만나는 위치에는 프로세스가 테이블에 발생시키는 변화를 표시하는 업무 프로세스와 데이터 간 상관분석표이다.
- CRUD 매트릭스를 통해 프로세스의 트랜잭션이 테이블에 수행하는 작업을 검증 한다.
- CRUD 매트릭스의 각 셀에는 Create, Read, Update, Delete의 앞 글자가 들어가며, 복수의 변화를 줄 때는 기본적으로 'C > D > U > R'의 우선순위를 적용하여 한 가지만 적지만, 활용 목적에 따라 모두 기록할 수 있다.('주문 변경' 프로세스를 실행하려면 테이블의 데이터를 읽은(Read) 다음 수정(Update) 해야 하므로 R(Read)과 U(Update)가 필요하지만 CRUD 매트릭스에는 우선순위가 높은 'U'만 표시한다.)
- CRUD 매트릭스가 완성되었다면 C, R, U, D 중 어느 것도 적히지 않은 행이나 열, C나 R이 없는 열을 확인하여 불필요하거나 누락된 테이블 또는 프로세스를 찾는다.
- 온라인 쇼핑몰의 CRUD 매트릭스 예시
테이블 프로세스 | 회원 | 상품 | 주문 | 주문목록 | 제조사 |
---|
신규 회원등록 | C | | | | |
회원정보 변경 | R,U | | | | |
주문요청 | R | R | C | C | |
주문변경 | | | R | R,U | |
주문 취소 | | | R, D | R, D | |
상품 등록 | | C | | | C, R |
상품정보 변경 | | R, U | | | R, U |
트랜잭션 분석
- 트랜잭션 분석의 목적은 CRUD 매트릭스를 기반으로 테이블에 발생하는 트랜잭션 양을 분석하여 테이블에 저장되는 데이터의 양을 유추하고 이를 근거로 DB 용량을 산정하고 DB 구조를 최적화하는 것이다.
- 트랜잭션 분석은 업무 개발 담당자가 수행한다.
- 트랜잭션 분석을 통해 프로세스가 과도하게 접근하는 테이블을 확인하여 여러 디스크에 배치함으로써 디스크 입·출력 분산을 통한 성능 향상을 가져올 수 있다.
트랜잭션 분석서
- 트랜잭션 분석서는 단위 프로세스와 CRUD 매트릭스를 이용하여 작성하며, 구성요소에는 단위 프로세스, CRUD 연산, 테이블명, 컬럼명. 테이블 참조 횟수, 트랜잭션 수, 발생 주기 등이 있다.
- 단위 프로세스: 업무를 발생시키는 가장 작은 단위의 프로세스
- CRUD 연산: 프로세스의 트랜잭션이 데이터베이스 테이블에 영향을 주는 C, R, U, D의 4가지 연산
- 테이블명, 컬럼명: 프로세스가 접근하는 데이터베이스의 테이블명을 기록한다. 필요한 경우 테이블의 컬럼명을 적는다. 컬럼명을 적을 때는 마침표로 연결하여 '테이블.컬럼명'과 같이 적는다.
- 테이블 참조횟수: 프로세스가 테이블을 참조하는 횟수
- 트랜잭션 수: 주기별로 수행되는 트랜잭션 횟수
- 발생주기: 연, 분기, 월, 일, 시간 등 트랜잭션 횟수를 측정하기 위한 발생 주기
- 주문요청 프로세스에 대한 트랜잭션 분석서 예시
프로세스 | CRUD | 테이블명 | 컬럼명 | 참조횟수 | 트랜잭션 수 | 주기 |
---|
주문요청 | R | 회원 | 회원번호, 회원명, 주소 | 1 | 150 | 일 |
주문요청 | R | 상품 | 상품번호, 상품명 재고량 | 1 | 150 | 일 |
주문요청 | C | 주문 | 주문번호, 일자, 회원번호 | 3 | 450 | 일 |
주문요청 | C | 주문목록 | 주문번호, 상품번호, 수량, 가격 | 5 | 750 | 일 |