실전 · 트러블슈팅
CockroachDB 인덱스걸었는데 20만 행을 다 읽은 이유
내부 테스트에서 클러스터 리소스 목록 조회가 느려서 인덱스를 걸었다. 실행시간이 233ms에서 104ms로 줄어서 처음엔 해결된 줄 알았다. 그런데 EXPLAIN ANALYZE에서 읽은 행 수를 보니 205,000에서 200,025로 거의 그대로였다. 숫자가 이상했다.
내부 테스트에서 클러스터 리소스 목록 조회가 느려서 인덱스를 걸었다. 실행시간이 233ms에서 104ms로 줄어서 처음엔 해결된 줄 알았다. 그런데 EXPLAIN ANALYZE에서 읽은 행 수를 보니 205,000에서 200,025로 거의 그대로였다. 숫자가 이상했다.
DB 총정리 셋째 편, 설계 이야기. 중복이 만드는 이상 현상과 1·2·3정규형, 측정한 병목에만 쓰는 반정규화, 그리고 비즈니스 로직을 ORM에 둘지 Stored Procedure에 둘지.
DB 총정리 둘째 편. ACID는 트랜잭션의 약속이고, 격리 수준은 그중 격리성을 성능과 맞바꾸는 다이얼이며, Redo/Undo는 장애가 나도 원자성과 지속성을 지키는 장치다.
DB 총정리 첫 편. 데드락과 라이브락, 비관적 락과 낙관적 락을 고르는 기준, 그리고 WHERE가 빠진 UPDATE 한 줄로 전체 유저가 로그아웃된 사고.
pod를 여러 개 띄우자 같은 job을 두 pod가 동시에 완료 처리하는 경합이 생겼다. 분산락 없이 조건부 UPDATE 한 문장, CAS 패턴으로 막은 과정.