31,107,600개의 행이 있는 MySQL 데이터베이스 테이블이 있습니다. InnoDB를 사용합니다. 이것은 CentOS 7 시스템에 있습니다.
테이블에는 다음 열이 포함되어 있습니다.
- ID
- 타임스탬프
- 사과
- 데이터
- 방향
- 사이트 ID
인덱스를 생성하고 싶으므로 다음 명령을 실행합니다.
ALTER TABLE MY_TABLE ADD INDEX idx_my_index (mac, site_id, timestamp);
약 30초 정도 걸리며 다음을 제공합니다.
ERROR 1114 (HY000): The table 'MY_TABLE' is full
내 MySQL은 기본값을 사용하여 /var/lib/mysql
데이터를 저장합니다. 현재 폴더가 있는 파티션의 여유 공간은 12GB이고, 데이터베이스 크기는 2.7GB에 불과하므로 제가 이해한 바에 따르면 충분한 공간이 있어야 합니다.
이 오류가 표시되는 이유는 무엇입니까? 온라인으로 확인한 결과, 임시 테이블을 사용하여 임시 테이블 크기 제한에 도달한 것일 수 있습니다. 그렇게 될까요? 아니면 다른 것입니까? 이를 어떻게 확인하나요?
답변1
ALTER TABLE 문이 실행되는 동안 df를 사용하여 모든 파일 시스템의 공간 사용량을 관찰합니다. tmpfs의 /tmp와 같이 다른 파일 시스템(특히 작은 파일 시스템)의 공간이 급격히 줄어들고 있는지 확인하세요.