SERIES

데이터를 빨리 찾는 법

8 Posts·Last updated on September 09, 2026

Backend

DB 인덱스는 왜 빨라지나 — 풀 스캔부터 인덱스가 안 먹는 경우까지

August 16, 2026

안녕하세요, 자바파커입니다. "인덱스 걸었는데 왜 여전히 느리죠?" 인덱스는 "걸면 빨라지는 것"으로 배웁니다. 그런데 실무에서는 걸었는데 안 빨라지는 경우가 꽤 자주 나옵니다. 원리를 모르면 왜 안 먹는지도 알 수 없습니다. 결론부터 말씀드리면 — 인덱스는 "정렬된 사본"입니다. 정렬돼 있으니 이분 탐색처럼 몇 번 만에 도달할 수 있고, 정렬을 활용할 …


Backend

N+1 쿼리 — 목록 하나 불렀는데 쿼리가 101번 나가는 이유

August 22, 2026

안녕하세요, 자바파커입니다. 게시글 100개를 불렀습니다. 쿼리는 101번 나갔습니다. 로컬에서는 아무 문제가 없습니다. 데이터가 열 건뿐이니까요. 그런데 운영에 올라가고 목록에 천 건이 쌓이는 순간, 응답이 갑자기 느려집니다. 로그를 켜 보면 똑같은 모양의 SQL이 화면을 가득 채우고 있습니다. N+1 문제입니다. 그리고 솔직히 말씀드리면, 지금 여러분…


JavaScript

다익스트라 알고리즘 — 지도에서 최단 경로를 찾는 원리

August 29, 2026

안녕하세요. 자바파커입니다. 지도에서 목적지 방향으로 곧게 뻗은 길을 골랐습니다. 눈으로는 가장 가까워 보이지만 도로별 이동 시간을 더하니 19분입니다. 옆으로 돌아간 경로는 10분밖에 걸리지 않습니다. 왜 이런 차이가 생길까요? 최단 경로는 선의 길이가 아니라, 지나온 간선 가중치의 합으로 결정됩니다. 노드가 거리 순서대로 확정되고 마지막에 최단 경로가…



JavaScript

A* 알고리즘 — 다익스트라보다 적게 보고 최단 경로 찾기

August 31, 2026

안녕하세요. 자바파커입니다. 다익스트라 알고리즘은 최단 경로를 정확하게 찾습니다. 다만 목적지가 오른쪽 위에 있어도 시작점 주변을 모든 방향으로 넓게 확인합니다. A*는 여기에 질문 하나를 더합니다. 지금까지 싸게 왔고, 목적지에도 가까운 후보는 어디일까? 이번 예제에서 두 알고리즘이 찾은 경로 비용은 모두 22입니다. 하지만 확정한 칸은 다익스트라 16…


Backend

블룸 필터란? 확실한 NO와 틀릴 수 있는 YES

September 03, 2026

안녕하세요. 자바파커입니다. 데이터가 수억 건 있는 저장소에 어떤 키가 존재하는지 확인해야 한다고 생각해 보겠습니다. 매 요청마다 DB나 디스크를 읽으면 정확하지만 비쌉니다. 그렇다고 모든 키를 메모리에 보관하면 메모리가 커집니다. 블룸 필터(Bloom Filter)는 이 문제에 독특한 답을 냅니다. 없다고 판정하면 확실히 없습니다. 있다고 판정하면 실제…


Backend

일관된 해싱이란? 서버 추가 시 캐시 키 이동을 최소화하는 방법

September 04, 2026

안녕하세요. 자바파커입니다. 분산 캐시에 서버가 세 대 있다고 가정해 보겠습니다. 가장 단순한 배치식은 다음과 같습니다. 이 방식은 빠르고 이해하기 쉽습니다. 하지만 네 번째 서버를 추가하는 순간 식이 로 바뀝니다. 같은 키의 해시값은 그대로인데 나누는 수가 달라져 기존 키 대부분의 목적지가 달라질 수 있습니다. 일관된 해싱의 목적은 데이터를 완벽히 균등…


Backend

Redis LRU는 진짜 LRU가 아니다 — 근사 퇴거 알고리즘 실전 이해

September 05, 2026

안녕하세요. 자바파커입니다. LRU(Least Recently Used)는 캐시가 가득 찼을 때 가장 오래 사용하지 않은 항목을 버리는 정책입니다. 교과서 구현은 모든 키의 사용 순서를 정확히 유지합니다. 그런데 Redis의 는 정확한 LRU가 아닙니다. Redis는 전체 키를 정렬하지 않고 일부 후보를 샘플링해 가장 오래 사용하지 않은 키를 제거합니다.…



JavaScript

정렬 알고리즘 — 1만 개에서 5천만 번과 13만 번의 차이

September 09, 2026

안녕하세요. 자바파커입니다. 정렬 알고리즘의 시간복잡도는 다들 외웁니다. 버블은 , 퀵은 . 그런데 이게 실제로 얼마나 차이 나는지는 잘 와닿지 않습니다. 숫자로 보면 이렇습니다. 원소 수 버블 퀵 배수 32 496 160 3배 1,000 499,500 9,965 50배 10,000 49,995,000 132,877 376배 1,000,000 499,…