Notice
Recent Posts
Recent Comments
Link
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

개발 블로그

[데이터베이스] 트랜잭션(transaction)이란?/트랜잭션 개념, 성질 본문

전공 공부/데이터베이스

[데이터베이스] 트랜잭션(transaction)이란?/트랜잭션 개념, 성질

토산인 2022. 12. 17. 21:28

 

트랜잭션(transaction)이란?

DB 상태를 변경하기 위한 작업의 논리적 단위로, 검색/삽입/수정/삭제 명령을 포함하는 컴퓨터 프로그램에 의해 수행된다. 

 

 

명시적인 트랜잭션

트랜잭션의 범위를 명시적으로 선언하는 것을 말한다. BEGIN, START TRANSACTION 구문을 사용해 트랜잭션을 시작하고 필요한 모든 질의를 전달하고 COMMIT 또는 ROLLBACK으로 트랜잭션을 종료한다.

COMMIT은 트랜잭션을 완료하는 것으로, 커밋을 해야 테이블에 변경된 데이터가 실제로 적용된다. ROLLBACK은 트랜잭션이 시작되기 전의 상태로 돌아간다. 

 

트랜잭션은 보통 DBMS Connector를 사용하는 애플리케이션 내에서 사용한다.

 

 

Auto-Commit

명시적인 트랜잭션 구문을 작성하지 않은 한 문장의 작은 질의도 트랜잭션이다. 트랜잭션은 반드시 커밋되어야 실제로 테이블의 데이터를 변경한다. 다만 명시적인 트랜잭션 구문을 작성하지 않아도 데이터를 변경시키는데, 내부적으로 auto-commit이 설정돼 있기 때문에 테이블에 데이터가 적용되는 것을 확인할 수 있다. 만약 auto-commit이 꺼져있다면 매번 커밋을 해줘야 DB의 상태가 변경된다.

 

 

히스토리 로그 (또는 undo log)

DBMS에서는 데이터베이스의 상태를 변경시키는 질의를 기록하기 위해 히스토리 로그를 사용한다. 

트랜잭션은 COMMIT 후에 테이블의 데이터를 변경하는데, 커밋이 되지 않은 상태에서 SELECT로 조회하면 테이블에서 변경된 데이터를 확인할 수 있다. 이는 테이블의 데이터를 읽는 것이 아니라 히스토리 로그에 있는 데이터를 읽었기 때문에 견경된 데이터를 확인한 것이다. 

 

 

트랜잭션의 성질

1. 원자성 (Atomicity)

하나의 트랜잭션은 원자적(더 이상 나눌 수 없는) 수행 단위이다. 즉 트랜잭션은 부분만 완료되는 것이 아니라 완전히 수행되거나 또는 수행되지 말아야 한다.

예를 들어 5개의 데이터를 하나의 트랜잭션으로 삽입하는데, 한 데이터로 인해 에러가 난다면 나머지 데이터도 반영되지 않고 이전 상태로 돌아온다. 

 

2. 일관성 (Consistency)

하나의 트랜잭션이 간섭 없이 처음부터 끝까지 완전히 실행된 경우, 작업 자체가 완료된 이후에도 일관된 상태여야 한다. 

 

3. 고립성 (Isolation)

하나의 트랜잭션은 여러 트랜잭션들이 동시에 실행돼도 다른 트랜잭션들로부터 고립되어 실행되는 것처럼 보여야 한다. 즉 여러 트랜잭션이 동시적으로 처리될 때 DB의 상태를 변경시키는 질의가 존재하더라도 그 영향은 해당 트랜잭션 내에만 끼쳐야 한다. 

 

4. 지속성 (Durability)

트랜잭션이 정상적으로 완료돼 데이터베이스가 변경된 경우, 변경된 결과는 지속되어야 한다.