COMMIT (SQL)은 관계형 데이터베이스 관리 시스템(RDBMS)에서 트랜잭션(transaction)의 수행을 확정하고, 그 결과를 영구적으로 데이터베이스에 반영하도록 하는 데이터 조작 언어(DML) 명령어이다.
정의
- 트랜잭션은 일련의 데이터베이스 연산을 하나의 논리적 작업 단위로 묶은 것으로, ACID(Atomicity, Consistency, Isolation, Durability) 특성을 만족해야 한다.
- COMMIT 명령은 현재 세션에서 시작된 트랜잭션의 모든 변경 사항을 커밋(commit)하여 다른 사용자에게도 보이도록 만든다. 이때 데이터베이스는 로그를 이용해 커밋된 내용을 영구 저장하고, 복구 시점에 해당 변경을 재현할 수 있도록 한다.
구문
표준 SQL ANSI/ISO 9075에 정의된 기본 구문은 다음과 같다.
COMMIT [WORK] [AND [NO] CHAIN];
WORK는 명시적이지만 현재 대부분의 구현에서 생략 가능하다.CHAIN옵션은 트랜잭션이 자동으로 이어지는지를 제어한다.COMMIT AND CHAIN은 현재 트랜잭션을 커밋하고 즉시 새로운 트랜잭션을 시작한다.COMMIT AND NO CHAIN은 커밋 후 자동으로 트랜잭션이 종료된다.
동작 방식
- 로그 기록: 데이터베이스는 커밋 시점에 트랜잭션 로그를 디스크에 영구 기록한다. 이는 장애 복구 시 롤포워드(roll‑forward)를 가능하게 한다.
- 잠금 해제: 트랜잭션 동안 획득한 잠금이 해제되어 다른 세션이 해당 데이터에 접근·수정할 수 있게 된다.
- 버퍼 플러시: 일부 DBMS는 커밋 시점에 버퍼에 남아 있는 변경 내용을 디스크에 플러시(flush)한다. 이 동작은
WRITE-AHEAD LOG(WAL)메커니즘과 결합된다.
주요 구현체 별 특징
| DBMS | 기본 동작 | 자동 커밋 모드 | 옵션 지원 |
|---|---|---|---|
| Oracle | COMMIT → 즉시 영구 저장 |
AUTOCOMMIT OFF (기본) |
AND CHAIN, AND NO CHAIN |
| MySQL (InnoDB) | COMMIT → 트랜잭션 로그 플러시 |
AUTOCOMMIT ON (기본) |
COMMIT만 지원(체인 옵션 없음) |
| PostgreSQL | COMMIT → WAL 플러시 |
AUTOCOMMIT ON (기본) |
COMMIT만 지원(체인 옵션 없음) |
| Microsoft SQL Server | COMMIT TRANSACTION |
AUTOCOMMIT ON (기본) |
COMMIT TRANSACTION 형태, 체인 옵션 없음 |
관련 명령어
ROLLBACK: 현재 트랜잭션의 모든 변경을 취소하고 데이터베이스를 트랜잭션 시작 이전 상태로 되돌린다.SAVEPOINT: 트랜잭션 내에서 부분 롤백이 가능한 지점을 지정한다.SET TRANSACTION: 트랜잭션 격리 수준(isolation level) 등 속성을 지정한다.
사용 예시
BEGIN TRANSACTION; -- 트랜잭션 시작
UPDATE accounts SET balance = balance - 100 WHERE id = 1;
UPDATE accounts SET balance = balance + 100 WHERE id = 2;
COMMIT; -- 두 UPDATE를 원자적으로 적용
표준 및 규격
- SQL:2003, SQL:2011 등 ISO/IEC 9075 표준에
COMMIT구문이 포함되어 있다. - 표준은 기본 구문과
AND CHAIN / AND NO CHAIN옵션을 정의하지만, 실제 구현마다 지원 여부가 다르다.
참고 사항
AUTOCOMMIT모드가 활성화된 경우, 각각의 DML 문이 자동으로 커밋되므로 명시적인COMMIT이 필요하지 않을 수 있다. 그러나 복수의 DML을 하나의 원자적 작업으로 묶고자 할 때는 명시적인 트랜잭션 제어가 필수적이다.- 일부 DBMS는
COMMIT실행 중 발생한 오류(예: 디스크 I/O 오류)로 인해 커밋이 부분적으로만 적용되는 상황을 방지하기 위해 두 단계 커밋(two‑phase commit) 프로토콜을 지원한다.
외부 문헌
- ISO/IEC 9075-2:2011, SQL/Foundation
- Oracle Database SQL Language Reference, 21c Edition
- PostgreSQL Documentation, Chapter “Transaction Control”
본 항목은 공개된 표준 문서와 주요 DBMS 공식 매뉴얼을 기반으로 작성되었으며, 현재까지 확인된 정보에 한한다.