[DB] TCL

Na young·2024년 2월 16일
0

DB

목록 보기
14/17

Github
https://github.com/nayeo2/mySQL

트랜잭션 (Transaction)

하나 이상의 데이터베이스 연산이 묶여서 하나의 논리적인 작업 단위로 처리되는 것을 말한다.


ACID (트랜잭션의 특징)

  1. 원자성 (Atomicity) : 일련의 연산 중 하나라도 실패하면 전체 연산이 취소된다.
  2. 일관성 (Consistency) : 트랜잭션이 완료되면 데이터베이스의 일관성이 유지된다.
  3. 격리성 (Isolation) : 여러 개의 트랜잭션이 동시에 수행될 때 각각의 트랜잭션이 서로에게 영향을 끼치지 않는다.
  4. 지속성 (Durability) : 트랜잭션이 완료되면 결과가 영구적으로 반영된다.

ACID를 현실에서 찾아보기

은행 어플리케이션의 경우

  1. 원자성(Atomicity): 만일 출금 연산이 성공하고 입금 연산이 실패하면, 이전 상태로 롤백되어야 한다. 롤백 시키기 위하여 출금 연산과 입금 연산을 하나의 트랜잭션으로 묶어서 처리한다. 그리하면 하나의 연산이 실패했을 경우 전체 작업이 롤백된다.

  2. 일관성(Consistency): 트랜잭션 실행 전에 데이터베이스를 락(lock)하여 다른 사용자가 데이터를 수정하지 못하도록 한다.

  3. 격리성(Isolation): 동시에 여러 개의 계좌 이체 작업이 발생할 수 있으므로, 트랜잭션 간 상호 간섭을 방지해야 한다. 트랜잭션 간 격리 수준(Isolation level)을 설정하여 다른 트랜잭션의 영향을 받지 않도록 합니다.

  4. 지속성(Durability): 트랜잭션이 완료되었을 때, 데이터베이스에 변경 내용을 저장하고 장애가 발생해도 이전 상태로 롤백되지 않도록 복구와 백업 작업을 수행합니다.


MySQL의 TCL

  1. COMMIT : 현재까지 수행한 트랜잭션 커밋.
    변경한 내용이 영구적으로 데이터베이스에 적용된다.
  2. ROLLBACK : 현재까지 수행한 트랜잭션 롤백.
    변경 내용이 모두 취소되고 이전 상태로 되돌아간다.
  3. SAVEPOINT : 트랜잭션 내에서 저장점 설정.
    롤백할 때 저장점 이후의 변경 내용만 취소할 수 있다.
  4. ROLLBACK TO SAVEPOINT : 설정한 저장점으로 롤백.
-- 트랜잭션 시작
START TRANSACTION;

-- Customers 테이블에 새로운 데이터 삽입
INSERT INTO Customers (customer_id, customer_name, city)
VALUES (1, 'John', 'New York');

-- Orders 테이블에 새로운 데이터 삽입
INSERT INTO Orders (order_id, customer_id, order_date, total_amount)
VALUES (1, 1, '2023-05-11', 100.00);

-- 만약 데이터 삽입 중 에러가 발생하면 롤백
ROLLBACK;
-- 에러가 발생하지 않으면 커밋
COMMIT;
profile
개발어린이

0개의 댓글

관련 채용 정보