DB는 트랜잭션을 보장해준다! 즉 완전 성공하거나 or 완전 실패하거나!를 보장해준다.
A원의 잔고를 5000원 감소시키고, B원의 잔고를 5000원 증가시키는 작업이 한번에 일어난다면 완전 성공하거나 완전실패를 해야지 중간에 하나만 되면 안될 것이다!
모든 작업이 성공해서 데이터베이스에 정상 반영하는 것을 커밋(Commit )이라 하고, 작업 중 하나라도 실패해서 거래 이전으로 되돌리는 것을 롤백(Rollback )이라 함.
sqld 시험에 배운,, 원자성,, 일관성,, 지속성이 있지만,, 실무에선 격리성이 가장 중요하다!
트랜잭션 격리 수준 - Isolation level 이 아래 4가지 단계로 이루어져있는데, 아래로 갈수록 DB입장에서는 성능이 느려진다.
하지만 직렬화 단계까지 가게 되면, 해당 처리가 끝나기 전까지 다음 요청들은 그대로 기다려야 하는 것이기에 순서처리는 확실하지만 병렬처리가 되지 않아 너무 느릴 것이다!
보통 READ COMMITTED(2), REPEATEABLE READ(3) 을 많이 쓴다고 함! 트랜잭션 격리 수준을 다루는 거는 매우 중요한 개념이지만, DB자체에 대한 내용이라 여기까지 하고 넘어감! → 나중에 다시 다뤄보자.
트랜잭션을 더 자세히 이해하기 위해, 데이터베이스 서버 연결 구조와 DB 세션에 대해 알아보자!