Database
-
TABLE SWAP 개선: ALTER TABLE RENAME vs RENAME TABLEDatabase 2025. 9. 5. 20:56
TABLE SWAP 시 ALTER 대신 RENAME 을 사용하자OverviewETL 파이프라인에서는 새로운 데이터를 운영 테이블에 반영할 때, Zero-downtime(무중단)으로 테이블을 교체하는 전략이 필요합니다. 이를 위해 흔히 테이블 스왑(Table Swap) 방식을 사용합니다. 예를 들어, 기존 운영 테이블이 foo라면foo → foo_old (백업 보존)foo_new → foo (새로운 테이블로 교체) 이렇게 이름을 교체하면 서비스는 중단 없이 새로운 데이터를 사용할 수 있고 동시에 foo_old로 이용해 빠른 롤백도 가능합니다. 테이블 이름 교체 방식MySQL에서 테이블 이름을 교체할 수 있는 방법은 두 가지입니다.-- ALTER 사용ALTER TABLE ... RENAME TO-- RENA..
-
MySQL 실험: 공간 인덱스 Optimizer 동작 분석 & 성능 실험Database 2025. 9. 4. 22:22
공간인덱스를 안 타네? Optimizer가 의도한대로 동작했습니다.OverviewAPI 성능 로그를 보다가, 특정 테이블에서 ST_Intersects 쿼리만 유독 느린 걸 발견했습니다.A 테이블 (약 1.2만 rows) → 인덱스 사용B 테이블 (약 56만 rows) → 인덱스 사용R 테이블 (약 8.3만 rows) → 인덱스 무시 + 풀스캔 발생 🤔인덱스도 정상인데 왜 R 테이블 만 풀스캔일까?Optimizer가 cost를 어떻게 계산하는지 직접 확인해보기로 하고 실험을 설계했습니다.실험 방법실험환경DBMS: MySQL 5.7.40Geometry: POINT 타입테이블 3종 세트 준비I TABLE: 공간 인덱스 강제 (FORCE INDEX)F TABLE: 인덱스 없음(풀스캔)O TABLE: Optim..