HomeAboutMeBlogGuest
© 2025 Sejin Cha. All rights reserved.
Built with Next.js, deployed on Vercel
🤩
개발
/데이터베이스(Database)/
Database
Database
/
🏳️‍🌈
트랜잭션
🏳️‍🌈

트랜잭션

[참고] https://jerryjerryjerry.tistory.com/48
🖼️
Transaction

정의

  • Atomic하게 실행되어야 하는 SQL들을 묶어서 하나의 작업처럼 처리하는 방법
    • 이는 DDL이나 DML 중 레코드를 수정/추가/삭제한 것에만 의미가 있음
    • SELECT에는 트랜잭션을 사용할 이유가 없음
    • 사용방법
    • BEGIN과 END 혹은 BEGIN과 COMMIT 사이에 해당 SQL들을 사용
    • ROLLBACK(Begin 다음에 실행됐던 sql들이 무효화 됨)
  • 은행 계좌 이체가 아주 좋은 예
    • 계좌 이체 : 인출과 입금의 두 과정으로 이루어짐
    • 이 두 과정은 동시에 성공하던지 실패해야 함 ⇒ Atomic 하다는 의미
BEGIN; -- START TRANSACTION (동일한 명령) A의 계좌로부터 인출; B의 계좌로 입금; END; -- COMMIT (동일한 명령)

트랜잭션 커밋 모드 : autocommit

autocommit = True

  • 모든 레코드 수정/삭제/추가 작업이 기본적으로 바로 데이터베이스에 쓰여짐. 이를 커밋 된다고 함
  • 만일 특정 작업을 트랜잭션으로 묶고 싶다면 BEGIN과 END(COMMIT) / ROLLBACK으로 처리

autocommit = False

  • 모든 레코드 수정/삭제/추가 작업이 COMMIT이 호출될 때 까지 커밋 되지 않음
  • 즉 명시적으로 커밋을 해야 함
  • ROLLBACK이 호출되면 앞서 작업들이 무시됨

확인, 설정방법

SET autocommit=0 or 1;
SHOW VARIABLES LIKE 'AUTOCOMMIT'; — MySQL의 경우.