> For the complete documentation index, see [llms.txt](https://byulseop-til.gitbook.io/sinheeseop_til/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://byulseop-til.gitbook.io/sinheeseop_til/database/db/transaction_acid.md).

# Transaction and ACID

* 하나의 작업단위가 지켜야 할 규칙(ACID)이다.
* 넓은 의미로는 그냥 하나의 작업단위를 말한다.

## ACID 란?

* Atomicity(원자성) - 모두 성공하거나 모두 실패해야함.
  * 하나의 작업 단위를 여러 작은 작업 단위들로 나눈다면, 하나의 작은 작업 단위 하나라도 실패하면 전체 실패임.
* Consistency(일관성) - DB에 정의된 규칙(제약조건 등)이 지켜져야함
  * 예로들어서 어떤 작업을 하였더니 개체 무결성 조건이 깨진다던가 하면 안됨.
* Isolation(격리성) - 여러 트랜잭션이 동시에 실행 될 때 서로 간섭하면 안된다.
  * 동시성 문제 일으키면 안된다고 ㅇㅇ
* Durablity(지속성)
  * 한번 커밋되면 어떤 일이 있어도 데이터는 보전 되어야함.
  * 뭐 서버가 날아갔다던가... 하는 물리적 문제는 제외, 소프트웨어적/논리적 보장임.

### 격리 레벨

격리성에는 격리 레벨이라는 것이 있음. 가장 낮은건 그냥 커밋하지 않아도 접근이 가능한\
즉, 동시성에 대한 안전을 전혀 보장 할 수 없고 가장 높은건 걍 순차 처리라 처리 효율이 극악임.\
대부분 DB는 커밋 후 읽기라는 레벨을 사용한다고 들음. 자세한건 나중에 공부 후 추가하자.
