개발자 팁
개발자에게 운영 DB 권한을 어디까지 줄 것인가
전면 차단도 전면 허용도 실무에서 지속되지 않는다. 단계별 권한 분리와 감사 기록.
자연어로 DB에 묻는 것의 한계 — 스키마가 답을 결정한다
같은 질문도 스키마 설계에 따라 답이 달라진다. AI 질의가 실패하는 구조적 지점.
LLM이 만든 SQL을 그대로 실행하면 안 되는 이유 — 검증 항목 여섯 가지
자연어로 SQL을 얻는 것은 편하지만 검증 없이 실행하면 위험하다. 실행 전 확인 목록.
로컬 개발 DB를 운영과 얼마나 같게 맞출 것인가
운영과 다른 로컬 환경에서 놓치는 문제들. 무엇을 맞추고 무엇을 달라도 되는지.
운영 중인 테이블을 바꾸는 순서 — 컬럼 삭제는 마지막에
스키마 변경과 배포 순서가 어긋나면 장애가 난다. 무중단으로 진행하는 단계별 절차.
N+1 쿼리를 발견하는 법 — 로그를 보면 바로 보인다
ORM에서 흔한 N+1 문제의 판별과 해결. 즉시 로딩이 항상 답은 아닌 이유.
정규화를 어디까지 할 것인가 — 3NF 이후의 판단
정규화는 규칙이 아니라 트레이드오프다. 언제 비정규화가 정당화되는지의 기준.
느린 쿼리를 찾는 순서 — 감이 아니라 로그에서 시작한다
어디가 느린지 추측하지 않고 측정으로 좁히는 절차. slow query log부터 실행 계획까지.
인덱스를 만들었는데 안 타는 경우 — 옵티마이저가 무시하는 조건들
인덱스가 있는데 풀스캔이 나오는 대표적 원인 여섯 가지와 확인 방법.
트랜잭션 격리 수준을 언제 올려야 하는가 — 실제로 겪는 이상 현상
격리 수준의 이론적 정의보다 어떤 증상이 나올 때 무엇을 바꿔야 하는지를 정리한다.