TIL - 20250805

juni·2025년 8월 5일

TIL

목록 보기
85/316

0805 트랜잭션과 DCL


✅ 트랜잭션(Transaction)이란?

  • 트랜잭션은 더 이상 쪼갤 수 없는 논리적 작업 단위
  • 예: 계좌이체 (A 계좌 차감 + B 계좌 증가 = 하나의 트랜잭션)
  • All or Nothing 원칙: 둘 다 성공해야 최종 반영, 하나라도 실패 시 전체 롤백

➕ 트랜잭션 관련 키워드

  • COMMIT: 트랜잭션 결과를 DB에 "영구 저장"
  • ROLLBACK: 트랜잭션 중 변경 사항을 "되돌림"
  • SAVEPOINT: 중간 저장점, 부분 ROLLBACK 가능

✅ 트랜잭션 4대 특성 (ACID)

특성설명
원자성전체 작업 중 하나라도 실패하면 모두 롤백
일관성트랜잭션 전/후 DB 상태가 일관되게 유지
격리성동시에 실행되는 트랜잭션은 서로 간섭 못함
지속성COMMIT 후 결과는 영구 반영됨

사례1: 은행 이체
출금 + 입금을 하나의 트랜잭션으로 묶어야 함

사례2: 영화 예매
좌석 선택, 결제, 예매 등록 등 일련의 작업은 하나의 트랜잭션


✅ SAVEPOINT와 자동 커밋

  • SAVEPOINT: 트랜잭션 내 중간 저장 지점 설정

    SAVEPOINT save1;
    ROLLBACK TO SAVEPOINT save1;
  • 자동 커밋 (Auto Commit):

    • CREATE, ALTER, DROP, TRUNCATEDDL 명령어는 자동 COMMIT 유발
    • 주의: DML 수행 중 DDL 실행하면, 그 전까지의 DML이 자동 저장됨

✅ DCL (데이터 제어어)

DCL은 데이터에 접근할 수 있는 권한을 부여/회수하는 역할

  • GRANT: 권한 부여
  • REVOKE: 권한 회수

시스템 권한 vs 객체 권한

종류설명예시
시스템 권한DB 접속, 사용자/테이블 생성 등의 권한CREATE SESSION, CREATE TABLE
객체 권한특정 테이블이나 뷰에 대한 권한SELECT, INSERT, UPDATE, DELETE

✅ 권한 관리 예시

  1. 사용자 생성
CREATE USER MARKETER IDENTIFIED BY marketing123;
  1. 시스템 권한 부여
GRANT CREATE SESSION TO MARKETER;
  1. 객체 권한 부여
GRANT SELECT ON COURSES TO MARKETER;
  1. 권한 위임
GRANT SELECT ON COURSES TO MARKETER WITH GRANT OPTION;
  1. 권한 회수
REVOKE SELECT ON COURSES FROM MARKETER;
REVOKE CREATE SESSION FROM MARKETER;

✅ ROLE을 활용한 효율적 권한 관리

  • ROLE은 여러 권한을 묶어두는 권한 꾸러미 (직책 개념)

ROLE 관리 절차

  1. ROLE 생성
CREATE ROLE DEV_ROLE;
  1. ROLE에 권한 추가
GRANT CREATE SESSION, CREATE TABLE TO DEV_ROLE;
GRANT SELECT, INSERT, UPDATE, DELETE ON COURSES TO DEV_ROLE;
  1. 사용자에게 ROLE 부여
CREATE USER DEV01 IDENTIFIED BY devpass;
GRANT DEV_ROLE TO DEV01;
  1. ROLE 회수
REVOKE DEV_ROLE FROM DEV01;

📌 요약

  • 트랜잭션은 논리적 작업 단위로, COMMIT과 ROLLBACK으로 제어함
  • ACID 원칙은 트랜잭션 안정성을 보장
  • SAVEPOINT로 부분 롤백 가능, DDL은 자동 커밋 유발 주의
  • DCL로 권한을 부여(GRANT)하거나 회수(REVOKE) 가능
  • ROLE을 통해 권한을 효율적으로 묶어서 관리할 수 있음

0개의 댓글