我刪除了一部分資料:
mysql> delete from pending_22 limit 1000;
Query OK, 1000 rows affected (2.99 sec)
但是delete是不會自動釋放空間的,該表資料表空間大小仍然是之前的大小:30408704
想通過optimize table來釋放下空間:
mysql> optimize table pending_22; +------------------+----------+----------+-------------------------------------------------------------------+
| Table | Op | Msg_type | Msg_text |
+------------------+----------+----------+-------------------------------------------------------------------+
| np002.pending_22 | optimize | note | Table does not support optimize, doing recreate + analyze instead |
| np002.pending_22 | optimize | status | OK |
+------------------+----------+----------+-------------------------------------------------------------------+
2 rows in set (7.49 sec)
該表是innodb類型。
解決辦法:
mysql> alter table pending_22 engine=innodb;
Query OK, 8299 rows affected (6.63 sec)
Records: 8299 Duplicates: 0 Warnings: 0
再觀察下其資料表空間大小變成了27262976。
注意:最佳化的前提是獨立資料表空間模式(參數innodb_file_per_table為ON),否則沒有任何效果的。
對於共用資料表空間模式,想釋放磁碟空間,請參考:http://blog.csdn.net/yabingshi_tech/article/details/52274990