[DB/SQL] SQL 기본 및 활용 - TCL & DCL

Joo·2024년 2월 22일

RDB & SQL

목록 보기
8/24

강의 링크 : https://www.youtube.com/watch?v=DdoLuLnRbwc&list=PLg_wJlcMiuKtGdlIaAZ0rOPPQuTDENnEQ&index=9


TCL (Transaction Control Language)

트랜잭션

  • 데이터베이스의 논리적 연산 단위
    • 의미적으로 분할할 수 없는 최소의 단위
    • 일반적으로 하나의 트랜잭션은 여러 SQL 문장을 포함함
    • 성공시 모든 연산을 반영, 취소시 모든 연산을 취소 → All or Nothing
  • 트랜잭션의 예
    • 도서 주문
      • 재고 수량 감소, 주문 내역 생성, 결제, 포인트 적립
    • 계좌 이체
      • 원 계좌의 잔액 감소, 다른 계좌의 잔액 증가
    • 교통카드 충전
      • 잔액 증가, 결제

트랜잭션 관리 프로그램이 지켜야 할 4가지 특성(ACID)

  • 트랜잭션의 4가지 특성 : ACID
    • 원자성
      • 트랜잭션은 쪼개지면 안 됨 (모두 성공 or 다 실행 되지 않아야 함)
    • 일관성
    • 고립성
    • 지속성
      • COMMIT 실행 후 영구적으로 저장됨

  • COMMIT 실행 전 상태에서는..
    UPDATE PLAYER SET HEIGHT = HEIGHT + 10;
    • 변경된 내용은 메모리에 임시로 저장됨
    • 현재 사용자는 증가한 HEIGHT 값을 읽을 수 있음
    • 다른 사용자는 증가 전 HEIGHT 값만 읽을 수 있음
    • HEIGHT에는 잠금(Locking)이 설정되어 다른 사용자는 값을 변경할 수 없음

  • COMMIT 실행 후, COMMIT;
    • 변경된 내용은 DB에 저장됨
    • 변경 내용을 모든 다른 사용자가 볼 수 있음
    • 이전 데이터는 모두 사라짐 (별도 로그 보관시 복구 가능)
    • 관련된 행에 대한 잠금이 해제되어 다른 사용자가 변경할 수 있음

TCL

  • 트랜잭션을 제어하기 위한 명령어
    • COMMIT : 변경된 내용을 DB에 영구적으로 반영
    • ROLLBACK :
      • 기본 - 변경된 내용을 버리고 변경 전 상태(마지막 COMMIT)로 복귀 (잘 했어도 버리기)
      • SAVEPOINT를 지정한 경우, 지정한 저장점까지마나 복귀
      • SAVEPOINT = 부분 복귀를 위해 지정한 저장점
    • COMMIT의 반대가 ROLLBACK이고, ROLLBACK을 위해 필요한 게 SAVEPOINT
  • 트랜잭션은 SQL문 실행시 자동 시작, COMMIT/ROLLBACK 실행시 종료
  • 자동 커밋 / 자동 롤백
    • DDL 문장 수행시 DDL 수행 전에 자동으로 커밋 (auto commit)
    • DB를 정상적으로 접속 종료하면 자동 커밋
    • 애플리케이션의 이상 종료로 DB와의 접속이 단절되었을 때 자동 롤백

ROLLBACK

SAVEPOINT

  • 미리 지정한 SAVEPOINT까지만 ROLLBACK
    • 특정 저장점까지 롤백하면 그 이후의 명령과 저장점은 모두 무효가 됨
  • 일부 tool에서는 지원되지 않음
  • 동일 이름으로 여러 저장점 정의시 나중에 정의한 저장점이 유효


DCL (Data Control Language)

DCL

  • 사용자의 계정 생성/삭제, 권한 부여/회수에 대한 명령어

profile
적당히 공부한 거 정리하는 곳

0개의 댓글