241007 내일배움캠프 백엔드 Java 6기 TIL : 2차 모의면접 Growth

박대현·2024년 10월 7일
0

트랜잭션 부분을 불합격했다. 좀더 알아보자.

정의 : 여러가지의 작은 작업단위들을 하나의 논리적인 큰 작업단위로 묶는 것

ACID
Atomicity

  • All or Nothing, 모두성공 or 모두실패, 중간에 SQL문이 실패하면 지금까지 작업을 모두 취소하여 rollback한다.

Consistency

  • transaction은 DB상태를 consistent상태에서 또다른 consistent상태로 바꿔줘야함
  • constraints나 trigger를 통해 DB에 정의된 rules(conditions)을 위반하면 rollback
    • commit전에 rule을 위반했는지 확인
  • DB관점 뿐만아니라 application관점에서도 transaction이 consistent한지 확인해야함

Isolation

  • 여러 transaction들이 동시에 실행될때도, 혼자 실행되는것처럼 동작하게 만들어야

Durablity

  • commit된 transaction은 DB에 영구적으로 저장
    • DB system에 문제발생(power fail or DB crash)해도, commit된 transaction은 DB에 남아있음
    • 영구적으로 저장한다 = 비휘발성 메모리(HDD, SSD)에 저장한다.

Isolation level

트랜잭션 고립성 수준은 여러 트랜잭션이 동시에 실행될 때 각 트랜잭션이 서로에게 미치는 영향을 제어하는 방식입니다. 고립성 수준은 데이터 일관성과 성능 사이의 균형을 결정합니다. 일반적으로 네 가지 수준이 있으며, 각 수준은 동시성 문제(Dirty Read, Non-repeatable Read, Phantom Read)를 다르게 처리합니다:

Read Uncommitted: 트랜잭션이 COMMIT되지 않은 데이터를 읽을 수 있습니다(Dirty Read 발생 가능).
Read Committed: 트랜잭션이 COMMIT된 데이터만 읽을 수 있습니다(Non-repeatable Read 발생 가능).
Repeatable Read: 트랜잭션 내에서 같은 데이터를 여러 번 읽더라도 항상 동일한 결과를 반환합니다(Phantom Read 발생 가능).
Serializable: 가장 높은 수준의 고립성으로, 트랜잭션을 직렬적으로 실행하여 모든 동시성 문제를 해결하지만 성능에 부담이 큽니다.



출처:
https://www.youtube.com/watch?v=sLJ8ypeHGlM&t=449s
https://www.youtube.com/watch?v=bLLarZTrebU&list=TLPQMDcxMDIwMjT9fR4zHRDxZg&index=3

0개의 댓글