#데이터베이스
-
PostgreSQL Partitioning과 대용량 테이블 관리
수억 건짜리 테이블은 조회보다 관리에서 먼저 무너진다. 오래된 데이터를 지우는 DELETE가 몇 시간씩 돌고, VACUUM이 끝나지 않고, 인덱스 하나 만들 때마다 서비스 점검 공지를 낸다. 이 글은 PostgreSQL 선언적 파티셔닝으로 이 문제를 푸는 방법을 정리한다. 방식 고르기,
-
CAP Theorem과 PACELC로 분산 시스템 설계 결정하기
복제된 데이터를 쓰는 시스템은 언젠가 노드 사이 통신이 끊기고, 그 순간 "그래도 응답할 것인가, 틀릴 수 있으니 거절할 것인가"를 고르게 된다. CAP은 이 선택이 피할 수 없다는 것을, PACELC는 장애가 없는 평상시에도 지연과 일관성 사이의 선택이 계속된다는 것을 알려 준다. 이
-
개발 기록 2026-10-31 오후: 기술 아티클 11편 발행, 다이어그램 추가, 공개 확인
이번 기록은 10월 31일 저녁부터 11월 1일 오전까지 myblog에서 한 작업이다. /blogtecharticle 커맨드로 기술 아티클 11편을 두 번에 나눠 발행했고, 편마다 다이어그램을 넣은 뒤 이미지 추가 커밋을 남겼다. 발행 흐름 10월 31일 저녁에 5편을 먼저 발행했다.
-
대량 데이터 처리에서 Cursor·Batch·Bulk Insert 비교
수십만~수백만 건을 읽고 쓰는 야간 배치나 데이터 이관은 SQL보다 "몇 번 왕복하고 몇 번 커밋하느냐"가 시간을 정한다. 이 글은 읽는 쪽의 OFFSET 페이징·키셋 페이징·서버 커서와, 쓰는 쪽의 한 건씩 INSERT·JDBC 배치·벌크 로드를 같은 기준왕복, 메모리, 커밋 단위,
-
HikariCP Connection Pool 고갈 원인과 용량 산정
HikariCP 커넥션 풀이 고갈되면 DB는 한가한데 애플리케이션 요청이 30초씩 멈췄다가 한꺼번에 실패한다. 풀 크기를 늘리는 것이 첫 반응이지만, 원인이 커넥션을 오래 잡는 코드라면 늘린 만큼 DB 부하만 커진다. 이 글은 고갈이 어떻게 보이는지, 무엇이 고갈을 만드는지, 지표로 원
-
DB 인덱스가 있는데도 Full Scan이 발생하는 이유
인덱스를 만들었는데도 쿼리가 테이블 전체를 읽는 일은 흔하다. 원인은 대부분 세 가지 중 하나다. 조건이 인덱스를 쓸 수 없는 모양이거나, 옵티마이저가 계산해 보니 전체를 읽는 편이 싸거나, 옵티마이저가 잘못된 정보로 계산했거나. 이 글은 실행계획으로 원인을 찾는 순서와, 원인마다 SQ