답변:
show table status
테이블에서 실행 하고 Data_free
필드가 ibdata1
파일 크기의 대부분을 차지하는 경우 공간이 많이 낭비 될 수 있습니다. 많은 양의 삽입 / 삭제로 인해 문제가 발생합니다. 이 경우에 일시적인 삽입 및 삭제가 대량의 데이터를 구성하는 경우 테이블 당 파일이 적합합니다.
하지만 자동 "예"는 아닙니다. InnoDB 파일 내부의 내부 조각화에 대해서는 전 세계에서 많은 이야기가 있지만 파일 당 파일로 파일 시스템에 배치하면 조각화가 데이터베이스 수준 대신 파일 시스템 수준으로 이동합니다.
InnoDB 파일을 파일이 아닌 파일 시스템으로 생각하십시오. 파일이 많으면 큰 파일 시스템이 필요합니다.
대부분의 경우 파일 시스템은 실제로 테라 바이트 단위의 데이터와 수많은 파일을 처리하도록 확장하는 데 능숙합니다. 때로는 색인화 문제 (예 : 성능에 영향을 미치기 전에 디렉토리의 파일 수에 대한 제한)가 발생하지만 대부분의 경우 최신 파일 시스템은 테라 바이트 범위로 잘 흔들릴 수 있습니다.
InnoDB는 같은 방식으로 작동합니다. 데이터 파일의 크기는 매우 클 수 있습니다. 큰 파일 시스템과 마찬가지로 데이터 백업과 관련된 문제가 발생할 수 있습니다. 그러나 파일 시스템을 여러 파티션으로 분할해도이 문제에 도움이되지 않는 것처럼 innodb를 조작하지도 않습니다. innodb_file_per_table 사용할 수는 있지만 거의 권장하지 않습니다.
파일 시스템과 마찬가지로 더 나은 대답은 내부적으로 한계를 알고 그 안에서 작동하는 것입니다. 인덱스를 이해하고 적절하게 적용하십시오. InnoDB를 분리하려고 시도하지 마십시오.
개념을 건설적으로 전달하기 위해 고군분투하고 있기 때문에 여기에 내가 할 수있는 것보다 더 나은 단어를 빠르게 읽으십시오. 테라 바이트는 빅 데이터가 아니며 페타 바이트입니다 .
고객이 몇 테라 바이트로 데이터웨어 하우스를 실행하고있는 정말 오래된 MySQL 마케팅 슬라이드를 기억합니다. 몇 년 전. InnoDB 또는 MyISAM은 둘 다 작동합니다. 이것은 표준 MySQL 제품입니다.
15GB 데이터베이스를 땀 흘리지 마십시오.
InnoDB free: 7364608 kB
ibdata 파일은 축소되지 않습니다-최근에 일부 테이블을 삭제하거나 많은 행을 제거하면 구성의 innodb가 여유 공간을 파일 시스템으로 다시 해제하지 않습니다. 나는 당신에게 제안 할 것입니다 :
이런 식으로 innodb 테이블 / 데이터베이스를 삭제할 때마다 공간을 되 찾을 수 있습니다. 관련 idb 파일은 즉시 제거됩니다.