트랜잭션
: 논리적인 일의 단위
기본 설정 하나의 SQL 은 하나의 트랜잭션임
여러 개의 SQL 문들이 합쳐져서 하나의 트랜잭션이 될 수도 있음
트랜잭션의 활용
동시성
-- 대규모 데이터베이스를 수백 , 수천 명 이상의 사용자들이 동시에 접근함
-- 많은 사용자들이 동시에 데이터베이스의 서로 다른 부분 또는 동일한 부분을 접근하면서 데이터베이스를 사용함
동시성 제어
-- 동시에 수행되는 트랜잭션들이 데이터베이스에 미치는 영향 = 이들을 순차적으로 수행하였을 때 데이터베이스에 미치는
영향과 같도록 보장함
-- 다수 사용자가 데이터베이스를 동시에 접근하도록 허용하면서 데이터베이스의 일관성을 유지함
-- 여러 사용자나 여러 응용 프로그램들이 동시에 수행되어도 서로 간섭하지 못하도록 보장함 -> 트랜잭션 단위 , 동시성 제어
회복
데이터베이스를 갱신하는 도중에 시스템 고장 시에도 데이터베이스의 일관성을 유지함 -> 트랙잭션 단위 회복
트랜잭션이 없다면 ?
1. 은행 계좌 이자 증가
전체 계좌들에 대한 이자가 모두 계산되어야 함
만약 일부 계좌 이자만 증가되고 컴퓨터가 다운되었다가 재가동 된다면 ?
->처음부터 다시 계산하면 이중 이자 계산이 됨
2. 다양한 예약 시스템
항공권 , 극장 등의 예약 시스템
좌석을 선점하고 돈을 내기 전에 시스템이 다운됨
돈은 내지 않았지만 좌석을 잡았기 때문에 해당 좌석은 절대 다시 잡을 수 없어짐
3. 은행 계좌 이체 : B 통장에서 돈이 들어 왔는데 A 통장에 돈이 안 빠짐 -> 은행에 막대한 손실이 발생함
트랜잭션의 특성 (반응할거면 다 반응하고 안할거면 다 하지마라)
ACID
1. Atomicity : 원자성
-- 한 트랜잭션 내의 모든 연산들이 완전히 수행되거나 전혀 수행되지 않음 ( All or Nothing ) 을 의미함
-- DBMS 의 회복 모듈은 시스템이 다운되는 경우에 , 부분적으로 데이터베이스를 갱신한 트랜잭션의 영향을 취소함으로써
-- 트랜잭션의 원자성을 보장함
-- 완료된 트랜잭션이 갱신한 사항은 트랜잭션의 영향을 재수행함으로써 트랜잭션의 원자성을 보장함
2. Consistency : 일관성
-- 어떤 트랜잭션이 수행되기 전에 데이터베이스가 일관된 상태를 가졌다면 트랜잭션이 수행된 후에 데이터베이스는 또 다른 일관된 상태를 가짐
-- 트랜잭션이 수행되는 도중에는 데이터베이스가 일시적으로 일관된 상태를 갖지 않을 수 있음
3. Isolation : 격리성
-- 고립성이라고도 함
-- 한 트랜잭션이 데이터를 갱신하는 동안 이 트랜잭션이 완료되기 전에는 갱신 중인 데이터를 다른 트랜잭션들이 접근하지 못하도록 해야 함
-- 다수의 트랜잭션들이 동시에 수행되더라도 그 결과는 어떤 순서에 따라 트랜잭션들을 하나씩 차례대로 수행한 결과와 같아야 함
-- DBMS 의 동시성 제어 모듈이 트랜잭션의 고립성을 보장함
-- DBMS 는 응용들의 요구사항에 따라 다양한 고립 수준 (Isolation Level) 을 제공함
4. Durability : 영속성
-- 일단 한 트랜잭션이 완료되면 이 트랜잭션이 갱신한 것은 그 후에 시스템에 고장이 발생하더라도 손실되지 않음
-- 완료된 트랜잭션의 효과는 시스템이 고장 난 경우에도 데이터베이스에 반영됨
-- DBMS 의 회복 모듈은 시스템이 다운되는 경우에도 트랜잭션의 지속성을 보장함
ACID 와 DB 기능
ACID 특성과 DB 의 기능은 모두 다 연관이 있음 ( 연관성이 높은 순서 )
-- DB 회복 기능 : 원자성과 지속성에 연관됨
-- DB 동시성 제어 : 일관성과 고립성에 연관
-- 무결성 제약 조건 : 일관성과 관련
'Programming > SQL' 카테고리의 다른 글
[SQL/실습] 트랜잭션의 활용 (0) | 2020.12.17 |
---|---|
[SQL] 트랜잭션 제어문 (TCL) / 트랜잭션 모드 (0) | 2020.12.17 |
[SQL] 다양한 중첩 질의문 - 다중 컬럼 서브쿼리 / 상호 연관 서브쿼리 / 중첩질의문 주의점 (0) | 2020.12.17 |
[SQL] 중첩질의문 - 단일행 서브쿼리 / 다중행 서브쿼리 / 비교연산자 (0) | 2020.12.17 |
[SQL/실습] 테이블 조인 - 연습문제 풀어보기 (답안) (0) | 2020.12.17 |