SQL COMMIT 완전 정복! – 초보자도 이해하는 트랜잭션의 핵심

Sue·2025년 7월 2일
0
post-thumbnail

✅ SQL COMMIT 완전 정복! – 초보자도 이해하는 트랜잭션의 핵심

안녕하세요! 😊
오늘은 SQL을 공부하면서 꼭 알아야 할 COMMIT이라는 개념에 대해 쉽게 풀어보려고 합니다.

데이터베이스를 다룰 때 자주 보게 되는 이 단어, 과연 어떤 의미일까요?


🔍 COMMIT이란 무엇인가요?

COMMIT은 한마디로 말하면 "지금까지의 변경사항을 확정해서 데이터베이스에 저장해!" 라는 뜻이에요.

예를 들어, 우리가 은행 앱을 만든다고 가정해볼게요.

UPDATE accounts SET balance = balance - 1000 WHERE account_id = 1;
UPDATE accounts SET balance = balance + 1000 WHERE account_id = 2;

이 두 줄은 A 계좌에서 1000원을 빼고, B 계좌에 1000원을 더하는 코드예요. 하지만 이 중 하나만 실행되고 다른 하나는 실패하면 어떻게 될까요?

👉 A의 돈은 빠졌는데 B에게는 안 들어가는 데이터 오류가 생기겠죠. 😱

그래서 이런 여러 개의 작업을 하나의 덩어리(=트랜잭션) 로 묶고, 다 성공했을 때만 저장(=COMMIT)하는 거예요.


💡 트랜잭션이란?

간단히 말하면,

여러 개의 작업을 하나처럼 묶어서 처리하는 것

입니다.

그리고 트랜잭션은 보통 이렇게 구성됩니다:

BEGIN;        -- 트랜잭션 시작
...           -- 여러 작업 (INSERT, UPDATE, DELETE 등)
COMMIT;       -- 저장 (확정!)

또는 실패했을 경우:

ROLLBACK;     -- 되돌리기 (취소!)

🎯 COMMIT의 핵심 기능

기능설명
데이터 확정지금까지의 작업 결과를 데이터베이스에 영구 저장
작업 단위여러 SQL 문을 하나의 논리적 작업으로 묶음
안전성오류나 실패 상황에서 데이터 일관성을 지킴

🧪 예제: 트랜잭션과 COMMIT

BEGIN;

UPDATE products SET stock = stock - 1 WHERE id = 101;
UPDATE orders SET status = 'paid' WHERE order_id = 555;

COMMIT;

위 작업이 모두 성공하면 COMMIT을 실행해서 주문이 정상적으로 처리됩니다.
만약 중간에 오류가 났다면?

ROLLBACK;

을 실행해서 아무 일도 없던 것처럼 원상복구할 수 있어요.


🚨 자동 COMMIT 주의!

어떤 데이터베이스(예: MySQL 기본 설정)는 각 SQL 문이 실행될 때마다 자동으로 COMMIT해버립니다.
그럴 경우 ROLLBACK이 안 되기 때문에, 중요한 작업에서는 자동 커밋을 꺼두고 수동으로 COMMIT/ROLLBACK을 하는 게 좋습니다.


SQL에서 명령어(COMMIT)를 쓰지 않아도 데이터가 DB에 저장되는 경우가 있었는데요. 이게 아까 위에서 설명한 "자동 커밋(Auto-Commit)"이라는 기능 때문이었습니다.

✅ 명령어 없이도 DB에 저장되는 경우: 자동 커밋(Auto-Commit)

💡 자동 커밋이란?

SQL 문이 실행되자마자 자동으로 COMMIT되는 기능입니다.

즉, INSERT, UPDATE, DELETE 같은 문장을 실행하면, 별도로 COMMIT을 하지 않아도 그 결과가 즉시 DB에 반영됩니다.


📌 언제 자동 커밋이 일어나나요?

아래와 같은 상황에서는 자동으로 COMMIT이 발생해요:

1. 기본 설정이 Auto-Commit인 DBMS 사용 시

  • MySQL: 기본값이 자동 커밋 모드입니다.

    • INSERT, UPDATE, DELETE 등을 실행하면 자동으로 커밋됩니다.
  • SQLite: 대부분의 명령이 자동 커밋됩니다, 다만 BEGIN TRANSACTION으로 명시하면 수동 커밋으로 전환됨.

  • Oracle, PostgreSQL 등은 기본적으로 자동 커밋이 아님.

👉 일부 도구(예: DBeaver, SQL Developer, MySQL Workbench)도 자체 설정으로 자동 커밋이 켜져 있을 수 있어요.


2. DDL 문장을 실행할 때

DDL = Data Definition Language
테이블을 만들거나 구조를 바꾸는 명령어

CREATE TABLE users (...);
DROP TABLE orders;
ALTER TABLE products ADD COLUMN category VARCHAR(100);

위와 같은 명령은 대부분의 데이터베이스에서 자동으로 COMMIT됩니다.
이때는 트랜잭션으로 되돌릴 수 없어요.


🚨 주의할 점

  • 자동 커밋이 켜진 상태에서는 ROLLBACK이 소용없을 수 있어요.

    • 실수로 삭제(DELETE)하면 복구가 불가능할 수 있습니다.
  • 대규모 수정 작업이나 중요한 처리는 되도록 수동으로 COMMIT/ROLLBACK을 관리하는 것이 안전합니다.


✅ 정리

  • COMMIT데이터베이스에 변경 내용을 저장하는 명령어
  • 여러 작업을 하나로 묶는 트랜잭션 안에서 사용됨
  • 문제가 생기면 ROLLBACK으로 취소 가능
  • 실무에서 데이터 안정성을 지키는 데 아주 중요!
상황자동 COMMIT 여부
MySQL 기본 설정✅ 자동 커밋
DDL 문 실행 (CREATE, DROP 등)✅ 자동 커밋
명시적 트랜잭션 없이 SQL 실행✅ 대부분 자동 커밋
BEGIN으로 트랜잭션 시작한 경우❌ 수동 커밋 필요
PostgreSQL 등 트랜잭션 기반 DB❌ 수동 커밋 필요
profile
AI/ML Engineer

0개의 댓글