Kích thước tệp của không gian bảng InnoDB sẽ không bao giờ tự động giảm, bất kể bạn xóa bao nhiêu dữ liệu.
Điều bạn có thể làm, mặc dù tốn rất nhiều công sức, là tạo một vùng bảng cho mỗi bảng bằng cách đặt
innodb_file_per_table
Phần dài của vấn đề này là bạn cần xuất TẤT CẢ DỮ LIỆU từ máy chủ mysql (thiết lập một máy chủ mới sẽ dễ dàng hơn) và sau đó nhập lại dữ liệu. Thay vì một tệp ibdata1 duy nhất chứa dữ liệu cho mỗi và mọi bảng, bạn sẽ tìm thấy rất nhiều tệp có tên tablename.ibd
chỉ lưu giữ dữ liệu cho một bảng duy nhất.
Sau đó:
Sau đó, khi bạn xóa nhiều dữ liệu khỏi các bảng, bạn có thể cho phép mysql tạo lại tệp dữ liệu bằng cách phát hành
alter table <tablename> engine=myisam;
để chuyển sang MyIsam (và xóa tệp dữ liệu InnoDB cho bảng này) và sau đó
alter table <tablename> engine=innodb;
để tạo lại bảng.