- 단일한 논리적인 작업 단위
- 논리적인 이유로 여러 SQL 문들을 단일 작업으로 묶어서 나눠질 수 없게 만든다
- Transaction SQL 문들 중에 일부만 성공해서 DB에 반영되는 일은 일어나지 않는다
- MYSQL 에서는 실행과 동시에 autocommit은 off된다
- Commit / rollback과 함께 Transaction 이 종료되면 원래 autocommit 상태로 돌아간다.
두가지 모두 성공하거나 모두 실패하거나 해야 한다
중간에 SQL문이 실패하면 지금까지의 작업을 모두 취소하여 아무 일도 없었던 것처럼 rollback 한다
- Transaction 은 DB 상태를 일관성 상태에서 또 다른 일관성 상태로 바꿔줘야 한다
- constraints, trigger 등을 통해 DB에 정의된 rules 을 Transaction 이 위반했다면 rollback 해야 한다
- Transaction 이 DB에 정의된 조건을 위반했는지는 DBMS가 commit 전에 확인하고 알려준다
- 여러 Transaction들이 동시에 실행될 때도 혼자 실행되는 것처럼 동작하게 만들어준다
- DBMS는 여러 종류의 isolation level을 제공한다
- 개발자는 isolation level 중에 어떤 level로 Transaction을 동작시킬지 설정할 수 있다
- concurrency control의 주된 목표가 isolation이다
- commit된 Transaction은 DB에 영구적으로 저장한다
- DB에 문제가 생겨도 commit된 Transaction은 DB에 남아 있는다
- Transaction의 연종성은 DBMS가 보장한다