2023.09.12 - Transactional 복습

mjjin·2023년 9월 11일
0

Transactional을 공부했던 기억이 나지만 까먹었으므로 다시 공부해보기로 했다.

Transactional

스프링 프레임워크에서 제공하는 어노테이션으로, 특정 메서드나 클래스에
트랜잭션 관리를 적용하고자 할 때 사용된다.

트랜잭션이란 여러 개의 연산이 모두 성공하거나 모두 실패하는 방식으로
데이터의 일관성을 유지하는 방법이다.

Transactional의 이점

- 원자성(Atomicity)

트랜잭션 내의 모든 연산이 성공적으로 완료되거나, 아니면 모두 롤백되어 데이터의 일관성을 유지

- 일관성(Consistency)

데이터베이스를 하나의 일관된 상태에서 다른 일관된 상태로 전환

- 독립성(Isolation)

동시에 실행되는 여러 트랜잭션들이 서로 영향을 미치지 않도록 함

- 지속성(Durability)

성공적으로 완료된 트랜잭션의 결과는 시스템 장애가 발생하더라도 유지된다.

Transactional의 단점

- 성능저하

트랜잭션 관리는 데이터베이스 리소스를 사용하며, 모든 메서드에 트랜잭션을 적용하면 성능 저하가 발생된다.

- 복잡성 증가

간단한 작업에 트랜잭션을 적용하면, 코드가 불필요하게 복잡해질 수 있다.

- 관리 오버헤드

트랜잭션 관리는 커밋, 롤백 등 추가적인 연산을 필요로 하기 때문에 시스템의 오버헤드를 증가시킨다.

시스템의 오버헤드

시스템이 특정 작업을 수행하는데 필요한 추가적인 자원이나 시간을 나타낸다.

- 부적절한 전파 옵션

전파 옵션을 잘못 설정하면 예기치 않은 동작이나 데이터 불일치 문제가 발생할 수 있다.


Transactional를 배울 때에는 장점에만 초점을 맞췄는데,
왜 모든 상황에서 쓰이지 않는건지가 궁금해서 단점도 살펴보았다.

장, 단점을 알게 되었으니 적절한 상황에서 사용할 수 있을 것 같다.

0개의 댓글