DB-Query
글 6편
-
ddl-auto: update의 빈틈을 보완 DDL 자동화로 메우기
Flyway를 걷어낸 뒤 남은 숙제 앞서 Flyway를 도입하고 3주 만에 걷어낸 이야기를 썼다. 걷어낸 뒤 스키마는 JPA ddl-auto와, 사람이 손으로 적용하는 SQL 파일 묶음(db/manual/*.sql)으로 관리해 왔다. 여기엔 두 가지 구멍이 있었다. stg 환경은 ...
-
뷰를 물질화 테이블로 — 읽기 비용을 쓰기 시점으로 옮기기
읽을 때마다 5개 CTE를 풀스캔하고 있었다 대시보드 조회에 쓰이는 엔티티 하나가 @Subselect로 매핑된 뷰였다. CTE 5개를 엮은 집계 뷰인데, MySQL은 이 뷰를 실체화해두지 않으므로 조회할 때마다 전체를 다시 계산한다. 화면을 열 때마다 풀스캔이 도는 셈이다. 데이터...
-
Flyway를 도입하고 3주 만에 걷어낸 이야기
도입과 철수 사이 22일 2026년 5월 13일 b832f20d로 Flyway를 처음 도입했고, 6월 4일 9e3a7aaa로 걷어냈다. 그 사이 22일 동안 FlywayConfig는 221줄까지 자라났다가 통째로 삭제됐다. 성공담이 아니라 철수 회고다. 왜 도입했나 이 프로젝트는 ...
-
정규화된 조인을 버리고 역정규화하기 — 백필 마이그레이션 포함
문제 장비 A가 어느 조직에 속하는지 알아내려면 두 단계 조인이 필요했다. A ──(point_sq)──> B ──(매핑 테이블)──> 조직 A는 조직을 직접 갖지 않는다. A는 고객 B에 붙어 있고, B가 조직 매핑 테이블을 통해 조직에 연결된다. 정규화 관점에서는 정...
-
GIN trigram 인덱스를 만들었는데 왜 안 빨라지지?
인덱스를 만든 날과 인덱스가 실제로 쓰인 날이 13일 떨어져 있다 2026년 3월 12일 커밋 361bc9e에서 GIN trigram 인덱스를 넣었다. 그런데 그 인덱스가 실제로 쿼리 플랜에 등장하기 시작한 건 3월 25일 커밋 4fb9cbd부터다. 그 사이 13일 동안 인덱스는 ...
-
PostgreSQL 바인드 파라미터 65,535개 한도에 부딪히다
문제 엑셀로 장비 매핑 정보를 일괄 업로드하는 기능이 있다. 수백 행 정도는 잘 돌았다. 그런데 실제 현장 데이터로 수만 행을 올리자 배치 INSERT에서 터졌다. MyBatis <foreach>로 만든 멀티 로우 INSERT였다. 행이 많아질수록 SQL 하나에 붙는 바...