Tôi đã đọc nhiều lần sau khi bạn xóa một hàng trong bảng InnoDB trong MySQL, không gian của nó không được sử dụng lại, vì vậy nếu bạn tạo nhiều INSERT thành bảng và sau đó DELETE định kỳ một số hàng mà bảng sẽ sử dụng ngày càng nhiều không gian trên đĩa, như thể các hàng không bị xóa.Không gian bị chiếm bởi các hàng đã xóa có được tái sử dụng không?
Gần đây tôi đã được thông báo rằng không gian bị chiếm bởi các hàng đã xóa sẽ được sử dụng lại nhưng chỉ sau khi một số giao dịch hoàn tất và thậm chí sau đó - không đầy đủ. Tôi bây giờ bối rối.
Ai đó có thể vui lòng hiểu điều này với tôi không? Tôi cần phải làm rất nhiều INSERTs vào một bảng InnoDB và sau đó mỗi X phút tôi cần phải xóa các bản ghi có hơn Y phút. Tôi có vấn đề với bảng InnoDB ngày càng phát triển ở đây không, hay nó là hoang tưởng?
Seb, bạn có thể vui lòng cung cấp bất kỳ liên kết chính thức nào cho điều này không? –
@GautamSomani Đây là câu trả lời 6 năm tuổi, tôi không có liên kết trong tầm tay nhưng tôi có thể tìm thấy điều này: https://dev.mysql.com/doc/refman/5.1/en/optimize-table.html: ' Các hàng đã xóa được duy trì trong một danh sách liên kết và các hoạt động INSERT tiếp theo sử dụng lại các vị trí hàng cũ. Bạn có thể sử dụng OPTIMIZE TABLE để lấy lại dung lượng không sử dụng và chống phân mảnh tệp dữ liệu. Sau những thay đổi sâu rộng đối với một bảng, tuyên bố này cũng có thể cải thiện hiệu suất của các câu lệnh sử dụng bảng, đôi khi đáng kể.' Tôi chắc chắn nếu bạn google, bạn sẽ có thể tìm thêm thông tin chính thức về điều này. – Seb