피드로 돌아가기
Dev.toDatabase
원문 읽기
TRUNCATE 및 OPTIMIZE TABLE 적용으로 데이터 삭제 속도 7400배 개선 및 3GB 디스크 회수
Why telescope:clear Is Slow and How to Reclaim Disk in Seconds
AI 요약
Context
Laravel Telescope의 telescope:clear 명령어가 대량의 데이터 삭제 시 심각한 성능 저하와 디스크 공간 미회수 문제를 야기함. Chunk 단위의 DELETE 루프와 Foreign Key Cascade 제약 조건이 결합되어 DB I/O 부하를 극대화하는 구조적 한계 존재.
Technical Solution
withoutForeignKeyConstraints래퍼를 통한 외래 키 제약 조건 일시 비활성화로 Cascade Delete 오버헤드 제거- Row 단위의 DELETE 대신 Metadata 작업인
TRUNCATE를 사용하여 로그 생성 및 개별 레코드 처리 과정 생략 OPTIMIZE TABLE명령어를 통한 InnoDB 테이블 재구축으로 OS 수준의 물리적 디스크 공간(.ibd 파일) 실제 회수App::isLocal()가드를 적용하여 데이터 복구가 불가능한 TRUNCATE 작업의 운영 환경 실행 방지 설계- 정보 스키마(
information_schema)의 논리적 크기가 아닌 파일 시스템(ls -lah)의 물리적 크기 기반 검증 프로세스 도입
실천 포인트
- 대량 데이터 삭제 시 DELETE 루프보다 TRUNCATE 검토 - FK Cascade 설정이 대규모 배치 삭제 성능에 미치는 영향 분석 - DB 논리적 데이터 크기와 OS 물리적 파일 크기의 차이 이해 및 모니터링 - 물리적 디스크 공간 회수가 필요한 경우 OPTIMIZE TABLE 또는 ALTER TABLE 실행 고려