Database 3

DB 공부하며 궁금했던 점

Q1: Transaction은 어떻게 구현되는걸까?이를 이해하기 위해 undo log에 대해 알아야 했다. undo log: 실행 취소 로그 레코드의 집합으로 Transaction 실행 후 rollback시 undo log를 참조해 이전 데이터로 복구하기 위해 사용하는 log이다. 쉽게 말하면 Transaction이 데이터를 변경하면 undo log에 현재 상태를 로그 형태로 기록하는 친구이다.Transaction이 Commit 되면 undo log는 삭제되거나 정리된다.1. undo log는 메모리에만 저장되는건 아니다.Transaction이 커지거나 메모리가 부족하면 disk에도 저장된다. 2. undo log는 데이터 변경이 발생할 때마다 기록된다.내가 햇갈렸던 부분이 undo log는 Transa..

Database 2025.03.14

캐시 처리

Redis를 활용하여 캐시를 진행하는 것이 일반적이지만 분산 환경이 아니라면 Redis를 사용하는 게 오버 엔지니어링이라고 생각했다.Redis를 사용하게 되면 새로운 인스턴스를 돌리게 될텐데 분산 환경이 아닌 서비스라면 Redis를 굳이 써야 하나 싶었지만 언제 로드벨런싱을 적용하게 될지 모르니 구현은 해놔야 겠다고 생각했다. 내가 생각한 전략은 application.yml 파일에서 profiles 설정에 따라 캐싱을 Redis에 할지 Local Memory에 할지 결정하는 방식을 생각했다.# application.ymlspring: profiles: active: redis # DB 연결 로직 # application-redis.ymlredis: host: localhost port: ..

Database 2025.01.16

MySQL과 PostgreSQL 성능 비교

온실가스 API를 만들며 MySQL과 PostgreSQL의 성능을 비교 분석했습니다.Rows: 8,644(데이터가 많은 경우)날짜별 조회 API: /api/v1/weathers/details?day=20101030  1. 기본 조회 MySQL 7 ms ~ 8 ms PostgreSQL 4 ms ~ 6ms 2. 인덱스 적용 후 조회MySQL4 ms ~ 6msPostgreSQL3 ms ~ 5 ms  날짜 범위별 조회API: /api/v1/weathers?start=19701010&end=20201010 1. 기본 조회MySQL 24 ms ~ 37 msPostgreSQL14 ms ~ 26ms 2. 인덱스 적용 후 조회MySQL11 ms ~ 19msPostgreSQL12 ms ~ 29 ms  성능을 비교하였을 ..

Database 2025.01.16