본문으로 건너뛰기
wooncloud

← 모든 태그

#performance

12개의 글.

Postgres 전문검색이 느리면 ts_headline 부터 의심하라 (스니펫 입력 캡)
Postgres 전문검색이 느리면 ts_headline 부터 의심하라 (스니펫 입력 캡)
전문검색이 느린 원인은 인덱스가 아니라 스니펫을 만드는 ts_headline 이었습니다. 입력을 앞 8KB 로 캡해 266ms 를 3ms 로 줄인 과정을 정리했습니다.
2026-10-17 · 4 min read
#postgresql#full-text-search#performance
from_config 모델 로딩이 30초 걸린 이유, 어차피 덮어쓸 난수 초기화
from_config 모델 로딩이 30초 걸린 이유, 어차피 덮어쓸 난수 초기화
from_config 로 뼈대를 만들고 load_state_dict 로 가중치를 채우면 로딩 30초 중 23초를 곧바로 덮어쓰일 난수 초기화에 씁니다. no_init_weights() 로 초기화를 끄면 0.8초까지 줄어듭니다.
2026-10-12 · 4 min read
#pytorch#transformers#model-loading#performance
idx_scan=0 은 인덱스가 필요없다는 뜻이 아니다 — OR 한쪽이 인덱스를 잠근다
idx_scan=0 은 인덱스가 필요없다는 뜻이 아니다 — OR 한쪽이 인덱스를 잠근다
OR로 묶인 조건은 한쪽에 인덱스가 없으면 전체가 Seq Scan으로 떨어져, idx_scan=0인 인덱스도 불필요해서가 아니라 잠긴 것일 수 있습니다. 쿼리를 둘로 분리하자 응답이 3,866ms에서 137ms로 줄었습니다.
2026-08-07 · 9 min read
#postgresql#index#pg_trgm#performance
인덱스를 만들었는데 플래너가 안 쓴다 — EXISTS 가 selectivity 추정을 무너뜨릴 때
인덱스를 만들었는데 플래너가 안 쓴다 — EXISTS 가 selectivity 추정을 무너뜨릴 때
EXISTS 서브쿼리는 semi join 행 수를 실제보다 극단적으로 적게 추정해 플래너가 인덱스의 조기 종료 이득을 0으로 보고 Sort 를 유지하는데, MATERIALIZED CTE 로 EXISTS 를 격리하면 130ms가 3ms로 줄어듭니다.
2026-07-31 · 11 min read
#postgresql#query-plan#index#performance
PostgreSQL 인덱스 설계 총정리 — 부분·복합·커버링·표현식부터 GIN/BRIN까지
PostgreSQL 인덱스 설계 총정리 — 부분·복합·커버링·표현식부터 GIN/BRIN까지
PostgreSQL 인덱스는 부분·복합·커버링(INCLUDE)·표현식 인덱스로 작고 정확하게 좁힐 수 있고, jsonb·배열은 GIN, 시계열 대용량은 BRIN이 적합하며, CONCURRENTLY·EXPLAIN으로 안전하게 운영합니다.
2026-06-11 · 15 min read
#postgresql#database#index#sql#performance
Next.js App Router 캐싱 4계층 완전정복
Next.js App Router 캐싱 4계층 완전정복
Next.js App Router 캐싱은 4계층으로 나뉘며, cookies()·headers()·no-store 하나만 써도 라우트가 동적이 되어 Full Route Cache 가 꺼집니다.
2026-06-07 · 21 min read
#nextjs#react#performance#frontend
Docker 멀티스테이지 빌드로 이미지 90% 줄이기
Docker 멀티스테이지 빌드로 이미지 90% 줄이기
멀티스테이지 빌드로 빌드 도구와 런타임을 분리하면 1GB 넘던 이미지가 slim 기준 200~300MB대로 줄고, 레이어 캐시 순서와 베이스 이미지 선택도 함께 정리합니다.
2026-06-06 · 18 min read
#docker#devops#performance#infra
캐싱 전략 총정리: cache-aside부터 stampede 방어까지
캐싱 전략 총정리: cache-aside부터 stampede 방어까지
기본은 cache-aside 에 TTL 과 쓰기 시 삭제 무효화이며, 인기 키의 캐시 스탬피드는 single-flight 로 중복 요청을 묶고 stale-while-revalidate 로 미스 지연을 없애는 조합으로 막습니다.
2026-06-05 · 28 min read
#backend#redis#performance#architecture
Core Web Vitals 95점 만들기: LCP·CLS·INP
Core Web Vitals 95점 만들기: LCP·CLS·INP
LCP 는 TTFB 와 렌더 블로킹 해소·이미지 preload 로, CLS 는 이미지·광고 슬롯 공간을 미리 예약해서, INP 는 긴 JS 작업을 쪼개 메인 스레드에 양보해서 개선하며, 랩 점수가 아니라 필드 데이터 75퍼센타일로 검증해야 합니다.
2026-06-03 · 24 min read
#frontend#performance#seo#web
커넥션 풀링과 PgBouncer: 연결 고갈 막기
커넥션 풀링과 PgBouncer: 연결 고갈 막기
PostgreSQL 은 연결마다 OS 프로세스를 띄워 연결 고갈이 나기 쉬우며, PgBouncer 를 transaction 모드로 두면 서버 연결을 소수로 묶지만 prepared statement·SET·advisory lock 이 깨질 수 있습니다.
2026-05-30 · 25 min read
#postgresql#database#performance#backend
N+1 쿼리 문제: 원인, 탐지, 해결
N+1 쿼리 문제: 원인, 탐지, 해결
ORM 지연 로딩이 행마다 쿼리를 하나씩 더 날려 N+1(1+N 쿼리)이 생기며, 다대일은 JOIN, 일대다·GraphQL 은 배치 IN·DataLoader 로 쿼리 수를 2개로 고정해 해결합니다.
2026-05-29 · 17 min read
#database#orm#performance#backend
페이지네이션 제대로: OFFSET vs 커서(keyset)
페이지네이션 제대로: OFFSET vs 커서(keyset)
OFFSET 은 깊은 페이지일수록 앞 행을 다 읽고 버려 선형으로 느려지고 데이터 변경 중 중복·누락도 생기지만, keyset(커서) 는 정렬 키로 바로 점프해 성능과 정확성을 모두 지킵니다.
2026-05-28 · 27 min read
#postgresql#database#performance#backend