Notice
Recent Posts
Recent Comments
Link
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
Tags more
Archives
Today
Total
관리 메뉴

seaking110 님의 블로그

트랜잭션과 인덱스 본문

Today I Learned

트랜잭션과 인덱스

seaking110 2025. 2. 5. 15:28

트랜잭션이란?

  • 데이터베이스에서 하나의 논리적인 작업 단위
  • 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