seaking110 님의 블로그
트랜잭션과 인덱스 본문
트랜잭션이란?
- 데이터베이스에서 하나의 논리적인 작업 단위
- ACID 원칙을 지켜야 한다.
- Atomicity (원자성) : 하나라도 실패 시 전체가 롤백
- Consistencty (일관성) : 트랜잭션 실행 전후 데이터 일관성 유지
- Isolation (격리성) : 트랜잭션끼리 독립적으로 실행
- Durability (지속성) : 트랜잭션 완료 후 영구적으로 저장
- Rollback -> 작업 중 하나라도 실패 시 거래 이전으로 되돌리는 것
- Commit -> 작업이 완료된 후 DB에 정상 반영하는 것
- 트랜잭션이란 여러 개의 작업을 하나로 묶은 실행 유닛
- 데이터베이스 트랜잭션은 ACID라는 특성을 가짐
원자성 (Atomicity)
- 한 트랜잭션의 연산들이 모두 성공하거나, 모두 실패되는 성질
- 트랜잭션이 안전성 보장을위해 가져야 할 성질
일관성 ( Consistencty )
- 트랜잭션 이전과 이후 상태는 동일
- 트랜잭션 상태가 일관되어야 한다는 성질
격리성 ( Isolation )
- 트랜잭션 끼리 독립적으로 실행
- 실제로 동시에 여러 개의 트랜잭션들이 수행될 때 각 트랜잭션은 고립되어 있어 연속으로 실행된 것과 동일한 결과를 가져야함
지속성 (Durability)
- 트랜잭션 완료 후 영구적으로 저장
- 하나의 트랜잭션이 성공적으로 수행되었나면 해당 트랜잭션에 대한 로그가 남아야함
- 런타임 오류나 시스템 오류가 발생하더라도 해당 기록은 영구적으로 남아야함
spring에서 트랜잭션 사용법
- @transactional 어노테이션을 사용하자!
- 결제나 재무 관련된 부분의 로직을 짤 때 매우매우 중요!!
- @Transactional(readOnly=true) 를 이용해서 조회부분에서 역시 성능 향상을 시켜줘서 READ에서 사용 가능하다.
- 따라서 CRUD 모두에 Transactional을 적용해 주는게 좋다!
인덱스
- 테이블에서 특정 칼럼을 빠르게 검색할 수 있도록 만든 자료구조
- B+tree를 기반으로 작동하여 검색 성능을 향상
- B+tree는 leaf 노드끼리 연결되어 성능적으로 더욱 뛰어난 트리
- 너무 많은 인덱스는 성능 하락을 야기할 수 있음
'Today I Learned' 카테고리의 다른 글
일정 관리 피드백 (0) | 2025.02.07 |
---|---|
인증/ 인가 (0) | 2025.02.05 |
Spring 숙련 강의 (0) | 2025.02.05 |
일정 관리 프로젝트를 진행하며 (1) | 2025.02.04 |
Spring Annotation과 Request Mapping (0) | 2025.01.24 |