피드로 돌아가기
Why telescope:clear Is Slow and How to Reclaim Disk in Seconds
Dev.toDev.to
Database

TRUNCATE 및 OPTIMIZE TABLE 적용으로 데이터 삭제 속도 7400배 개선 및 3GB 디스크 회수

Why telescope:clear Is Slow and How to Reclaim Disk in Seconds

Ivan Mykhavko2026년 4월 29일4intermediate

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 실행 고려

원문 읽기