집 >데이터 베이스 >MySQL 튜토리얼 >MySQL에서 테이블스페이스 조각화를 지우는 자세한 예
조각화 원인
테이블 저장소는 조각화됩니다. 콘텐츠 행이 삭제될 때마다 공간이 비어 있게 됩니다. 그러나 일정 기간 내에 많은 수의 삭제 작업을 수행하면 이로 인해 발생합니다. 이 빈 공간을 목록의 내용을 저장하는 데 사용되는 공간보다 크게 만듭니다. 삽입 작업을 수행할 때 MySQL은 빈 공간을 사용하려고 시도하지만 특정 빈 공간이 적절한 크기의 데이터로 채워지지 않은 경우 여전히 완전히 점유될 수 없으므로 MySQL이 데이터를 스캔할 때 스캔하는 개체는 실제로 목록의 용량 요구 사항의 상한선, 즉 데이터가 기록되는 영역의 최고 위치입니다. 이 기사에서는 주로 MySQL에서 테이블 공간 조각화를 지우는 자세한 예에 대한 관련 정보를 공유하겠습니다. 이 기사가 도움이 필요한 모든 사람에게 도움이 되기를 바랍니다.
권장되는 관련 mysql 비디오 자습서: "mysql tutorial"
예:
A 테이블에는 10,000개의 행이 있고 각 행은 10바이트이며 100,000바이트의 저장 공간을 차지합니다. 한 행. 실제 내용은 10바이트에 불과하지만 MySQL은 이를 읽을 때 여전히 100,000바이트 테이블로 처리하여 처리합니다. 따라서 조각이 많을수록 쿼리 성능에 더 많은 영향을 미칩니다.
테이블의 조각 크기 확인
(1) 특정 테이블의 조각 크기 확인
mysql> SHOW TABLE STATUS LIKE '表名';
결과의 'Data_free' 열 값이 조각 크기입니다
(2) 목록 조각난 모든 테이블
mysql> select table_schema db, table_name, data_free, engine from information_schema.tables where table_schema not in ('information_schema', 'mysql') and data_free > 0;
테이블 조각 지우기
(1) MyISAM 테이블
mysql> optimize table 表名
(2) InnoDB 테이블
mysql> alter table 表名 engine=InnoDB
인덱스와 데이터가 분리되어 있기 때문에 MyISAM도 엔진이 다르고 OPTIMIZE 작업도 다릅니다.
OPTIMIZE 작업은 테이블을 일시적으로 잠그기 때문에 데이터 양이 많을수록 시간이 오래 걸리므로 부적절합니다. 설정에 관계없이 프로그램에 Optimize 명령을 넣으려면, 아무리 적중률이 낮더라도 방문 횟수가 증가하면 전체 적중률도 높아지게 되는데, 이는 확실히 운영 효율성에 큰 영향을 미칠 것입니다. 더 좋은 방법은 쉘이 되어 mysql 필드에서 information_schema.TABLES를 정기적으로 확인하고 DATA_FREE 필드를 확인하는 것입니다. 0보다 크면 조각화가 있음을 의미합니다
Recommendation
삭제 작업입니다. 조각은 테이블을 일시적으로 잠급니다. 예를 들어 매주 수요일 이른 아침에 여물통 시간 실행에 정기적으로 액세스하는 스크립트를 만들 수 있습니다. DATA_FREE 필드를 확인하세요. 생각하는 경고 값보다 크면 한 번 청소해 보세요.
관련 권장 사항:
mysql-MySQL 테이블 공간 삭제 문제(버전 5.6)
Mysql 쿼리 캐시 조각화, 캐시 적중률 및 Nagios 모니터링
mysql 테이블 조각화 원인 분석 및 정리 up _PHP 튜토리얼
위 내용은 MySQL에서 테이블스페이스 조각화를 지우는 자세한 예의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!