소피it블로그

[DB] 트랜잭션(Transaction) 본문

CS/데이터베이스

[DB] 트랜잭션(Transaction)

sophie_l 2022. 11. 13. 22:20

1. 트랜잭션

DB에서 하나의 논리적 기능을 수행하기 위한 작업의 단위. 하나의 트랜잭션은 커밋되거나 롤백되어야 한다.

  • 커밋(commit): 하나의 트랜잭션이 문제 없이 처리되어 데이터베이스가 다시 일관된 상태에 있을 때, 변경된 내용을 모두 영구적으로 저장하는 연산
  • 롤백(rollback): 하나의 트랜잭션 처리가 비정상적으로 끝나 데이터베이스의 일관성이 깨졌을 때, 모든 연산을 취소하여 트랜잭션 이전의 상태로 돌리는 것.

2. 트랜잭션의 특성(ACID)

  • 원자성(Atomicity): all or nothing, 트랜잭션과 관련된 모든 연산은 전부 정상적으로 수행 완료되거나 아무런 연산도 수행되지 않아야 한다.
  • 일관성(Consistency): 트랜잭션이 끝난 후에도 데이터베이스가 일관된 상태로 유지되어야 한다.
  • 독립성(Isolation): 하나의 트랜잭션이 다른 트랜잭션의 수행에 끼어들 수 없다.
  • 지속성(Durability): 성공적으로 수행된 트랜잭션은 영구적으로 반영되어야 한다.

3. 격리 수준

isolation level dirty read non-repeatable read phantom read
read uncommited O O O
read commited - O O
repeatable read - - O
serializable - - -
  • 격리 수준: 낮은 레벨일수록 동시성이 증가하지만 무결성에 문제가 생기며, 높은 레벨일수록 무결성은 유지할 수 있으나 동시성이 저하되며 비용이 증가한다.
    • read uncommited(레벨 0): 가장 낮은 격리 수준. 아직 커밋되지 않은 데이터를 다른 트랜잭션이 읽는 것을 허용한다. 따라서 가장 빠르지만, DB의 일관성 유지가 어려워진다.
    • read commited(레벨 1): 가장 많이 사용되는 격리 수준으로, MySQL, Oracle 등에서 기본값. 커밋이 완료된 데이터에 대해서만 "조회"를 허용. 어떤 트랜잭션이 접근한 행을 다른 트랜잭션이 "수정"할 수 있다.
    • repeatable read(레벨 2): 하나의 트랜잭션이 수정한 행을 다른 트랜잭션이 "수정"할 수 없도록 막아줌으로써 트랜잭션 범위 내에서 조회한 데이터의 내용이 항상 동일함을 보장. 새로운 행을 "추가"하는 것은 막지 않는다.
    • serializable(레벨 3): 트랜잭션을 순차적으로 진행시키기 때문에 여러 트랜잭션이 동시에 같은 행에 접근할 수 없다. 다른 사용자의 "수정", "입력"이 불가능하다.
  • 격리 수준에 따라 발생하는 현상
    • dirty read: 수정되었으나 커밋되지 않은 데이터를 다른 트랜잭션에서 읽을 수 있을 때 발생한다.
    • non-repeatable read: 한 트랜잭션 내에서 같은 쿼리를 두 번 이상 조회하였는데 그 사이 다른 트랜잭션이 값을 수정 또는 삭제하여 결괏값이 다른 경우.
    • phantom read: 한 트랜잭션 내에서 레코드를 두 번 이상 조회할 때 첫 번째 쿼리에서 없던 레코드가 두 번째 쿼리에서 나타나는 현상으로, 트랜잭션 도중 새로운 레코드의 삽입을 허용하기 때문에 발생함.

참고 자료:

https://github.com/WeareSoft/tech-interview/blob/master/contents/db.md#4-database

 

GitHub - WeareSoft/tech-interview: 🙍 tech interview

:loudspeaker:🙍 tech interview. Contribute to WeareSoft/tech-interview development by creating an account on GitHub.

github.com

http://www.yes24.com/Product/Goods/108887922

 

면접을 위한 CS 전공지식 노트 - YES24

디자인 패턴, 네트워크, 운영체제, 데이터베이스, 자료 구조, 개발자 면접과 포트폴리오까지!CS 전공지식 습득과 면접 대비, 이 책 한 권이면 충분하다!개발자 면접에서 큰 비중을 차지하는 CS(Comp

www.yes24.com

'CS > 데이터베이스' 카테고리의 다른 글

[DB] 조인(Join)  (0) 2022.11.13
[DB] 정규화(Normalization)  (0) 2022.11.13
[DB] 인덱스(Index)  (0) 2022.11.13
[DB] 데이터베이스 기본  (0) 2022.11.13
[SQL] 프로그래머스 SQL 고득점 Kit -String, Date (MySQL)  (0) 2022.11.04