SQLD: SQL기본(6)

SeongGyun Hong·2024년 11월 5일

SQL

목록 보기
9/51

SQL 명령어 및 Lock 개념 요약

1. TRUNCATE

  • 용도: 테이블의 모든 데이터를 삭제.
  • 특징:
    • 모든 행을 일괄 삭제, WHERE 절 사용 불가.
    • 속도가 빠름, 데이터 페이지 자체를 제거.
    • 자동으로 커밋되며 ROLLBACK 불가.
    • 테이블 구조와 인덱스는 유지됨.

2. DELETE

  • 용도: 특정 조건에 맞는 데이터를 삭제.
  • 특징:
    • WHERE 절을 사용하여 원하는 행을 선택 가능.
    • 로그 기록으로 인해 상대적으로 느림.
    • 커밋 전까지 ROLLBACK 가능.
    • 테이블 구조와 인덱스는 유지됨.

3. ALTER

  • 용도: 테이블, 뷰, 인덱스 등의 구조를 변경.
  • 특징:
    • 스키마 변경을 수행 (열 추가, 수정, 삭제).
    • 자동 커밋되어 ROLLBACK 불가.
    • 기준점 역할을 할 수 없음.

4. INSERT INTO ... SELECT

  • 용도: 한 테이블에서 다른 테이블로 데이터 삽입.
  • 특징:
    • 두 번째 문장에서 오류 발생 시 전체 트랜잭션이 롤백됨.
    • 특정 원인으로 인해 삽입이 실패하면, 이전에 삽입된 데이터도 함께 취소됨.

5. ROLLBACK

  • 용도: 트랜잭션 내에서 이전 상태로 되돌리기.
  • 기준점:
    • BEGIN TRANSACTION: 트랜잭션 시작.
    • SAVEPOINT: 특정 상태 저장.
    • COMMIT: 변경 사항 영구 반영, 이후 ROLLBACK 불가.

6. Lock 개념

6.1 선행 Lock (Pre-emptive Lock)

  • 정의: 트랜잭션이 데이터에 대한 잠금을 요청할 때, 다른 트랜잭션이 그 데이터에 접근하지 못하도록 미리 잠금 설정.
  • 목적: 데이터의 무결성을 유지하고 동시성 문제를 방지.
  • 사용 예:
    • 트랜잭션 시작 시, 필요한 자원에 대해 잠금을 미리 설정.
    • 예를 들어, A 트랜잭션이 특정 레코드에 대해 선행 Lock을 설정하면, B 트랜잭션은 해당 레코드에 접근할 수 없음.

6.2 후행 Lock (Deferred Lock)

  • 정의: 트랜잭션이 데이터에 대한 잠금을 요청하지만, 해당 데이터에 대한 작업이 필요할 때까지 잠금 설정을 연기.
  • 목적: 필요할 때만 잠금을 설정하여 시스템의 유연성을 높이고 성능을 개선.
  • 사용 예:
    • A 트랜잭션이 특정 레코드에 대한 작업을 실행하기 전, 잠금 요청을 연기하여 다른 트랜잭션의 접근을 허용.
    • 레코드를 실제로 수정하기 직전에 잠금을 설정.
profile
헤매는 만큼 자기 땅이다.

0개의 댓글