~/tech-blog/category/database — zsh
지금 --명이 보고 있습니다오늘 --누적 --
홈 / 주제

Database 15 posts

인덱스, 락, MVCC, 캐시 등 데이터베이스의 원리와 실무 최적화 경험을 담은 글들입니다.

DATABASE

MySQL DATETIME과 TIMESTAMP

MySQL DATETIME과 TIMESTAMP가 값을 저장하는 방식과 세션 타임존에 따른 변환, 2038년 범위 한계를 예제로 비교하고 어떤 타입을 고를지 기준을 정리합니다.

2026.10.09 · f31faa2 · Database — 5 min
DATABASE

트랜잭션 스케줄과 격리 수준

트랜잭션이 섞여 실행되는 순서인 스케줄과 시리얼라이저블의 뜻, DB가 검사 대신 락과 MVCC라는 규칙을 쓰는 이유, 격리 수준 네 단계와 데드락을 예제 흐름도로 정리합니다.

2026.10.04 · 23b1be6 · Database — 6 min
DATABASE

슬로우 쿼리 개선

응답에 6초 이상 걸리던 페이지의 원인을 실행계획으로 분석하고, MySQL 옵티마이저가 데이터가 적은 테이블을 드라이빙 테이블로 고르며 생긴 문제를 STRAIGHT_JOIN으로 해결한 경험을 정리합니다.

2025.02.21 · c492706 · Database — 7 min
DATABASE

DB 인덱스

MySQL이 인덱스로 B-Tree를 사용하는 이유와 인덱스의 동작 방식을 그림으로 살펴보고, 복합 인덱스를 활용해 불필요한 단일 인덱스로 인한 자원 낭비를 줄이는 실무 설계 방법을 정리합니다.

2024.10.12 · c492706 · Database — 7 min
DATABASE

DB 분산락

비관적 락이 분산 환경에서 갖는 한계와 Redisson 분산락을 사용하는 이유, DB 안에서의 대기와 Redisson pub/sub 방식의 락 획득 차이, 상황별 트레이드오프를 흐름도와 함께 정리합니다.

2024.09.20 · c492706 · Database — 7 min
DATABASE

MVCC (multiversion concurrency control)

락 기반 동시성 제어의 한계를 살펴보고, MVCC가 커밋된 데이터만 읽는 방식과 트랜잭션 격리 수준에 따라 읽는 데이터가 달라지는 원리를 예제 흐름도와 함께 정리합니다.

2024.09.13 · c492706 · Database — 4 min
DATABASE

DBCP

API 요청마다 TCP 연결을 맺고 끊는 비효율을 DBCP가 어떻게 해결하는지 흐름도로 설명하고, MySQL의 max_connections·wait_timeout과 HikariCP의 minimumIdle, maximumPoolSize, maxLifetime, connectionTimeout 설정을 정리합니다.

2024.09.13 · c492706 · Database — 8 min
DATABASE

DB 비관적 락

비관적 락의 개념과 S-Lock/X-Lock, 갭 락과 next-key lock의 동작을 살펴보고, JPA 동시성 테스트로 재고 차감 문제를 해결하는 과정과 갭 락으로 생기는 데드락을 예제 흐름도와 함께 정리합니다.

2024.09.13 · c492706 · Database — 9 min
DATABASE

DB 낙관적 락

재고 차감 동시성 테스트로 문제를 재현하고, JPA @Version 기반 낙관적 락의 동작 원리와 사용 시점, 주의할 점을 예제 흐름도와 함께 정리합니다.

2024.09.13 · c492706 · Database — 7 min
DATABASE

B-tree

B 트리의 정렬·균형 특성을 설명하고, 예시 트리를 그림으로 따라가며 삽입·검색·삭제 동작 방식을 정리합니다.

2023.08.23 · c492706 · Database — 4 min
DATABASE

커넥션 풀과 데이터소스 이해하기

DB 커넥션을 매번 새로 맺을 때 거치는 여섯 단계와 그 문제를 흐름도로 정리하고, 커넥션 풀과 DataSource 추상화가 이를 어떻게 해결하는지 설명합니다.

2023.08.12 · c492706 · Database — 2 min
DATABASE

데이터 적재 및 문제 해결방법

1억 건 규모 테이블의 슬로우 쿼리와 DB 메모리 적재 문제를 실무에서 겪은 과정과, 샤딩·파티셔닝으로 해결하는 방법, DELETE로 용량이 줄지 않는 이유를 정리합니다.

2023.05.06 · c492706 · Database — 5 min
DATABASE

데이터베이스 인덱스와 페이지네이션 최적화

InnoDB의 클러스터·세컨더리·커버링 인덱스 구조를 정리하고, OFFSET 페이지네이션이 느린 이유와 Deferred Join, No Offset, 파티셔닝, 페이지 번호 제한으로 최적화하는 방법을 그림과 함께 비교합니다.

c492706 · Database — 13 min
DATABASE

MySQL 인덱스 정리

MySQL 인덱스의 동작과 장단점, 카디널리티·선택도 개념을 예제 흐름도와 함께 살펴보고, 복합·커버링 인덱스와 LIKE 검색까지 인덱스를 효율적으로 설계하는 방법을 정리합니다.

c492706 · Database — 6 min
DATABASE

Cache Stampede(캐시 스템피드)

if(kakao)에서 소개된 캐시 스템피드 현상의 원인과 해결책(락, 캐시 웜업, 하이브리드 캐시), 그리고 비슷하게 응답 지연을 일으키는 Spring Boot Cold Start와 JIT 컴파일러의 동작 원리를 흐름도와 함께 정리합니다.

c492706 · Database — 10 min
● main 231 posts UTF-8 LF © 2026 코징 RSS · GitHub