delete語句刪除數據回收表空間

(1)數據刪除流程

單行或多行記錄被刪除, 這些位置會被標記爲複用, 下次插入記錄會直接被複用, 如果是追加無法使用複用,
刪除一個數據頁上的所有記錄, 這個數據頁會被標記爲複用 , 數據頁可以被複用到任何位置, 
delete命令只是把記錄或數據頁標記爲"可複用",磁盤文件是不會變的; 不能回收表空間;

注意:插入數據也會導致數據頁空洞; 例如id1 id2 id4 id5使用的是一塊數據頁, 如果插入id3行數據, 可能會導致mysql分兩個數據頁保存這5行數據; 

(2)回收表空間解決方案: 重建表

重建表的工作原理:  和online的工作原理一致, 參考文章https://blog.51cto.com/1000682/2356596
命令: alter table table_name engine=innodb; 

注意: 重建表語句需要事先獲取mdl寫鎖, 不要在業務高峯期, 複製文件對io性能有一定影響; 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章