mysql收缩空间的问题
大家讲道理
大家讲道理 2017-04-17 14:51:54
0
3
622

今天转移数据库(从一个数据库到另一个数据库),转移了一部分之后发现硬盘快满了,于是就把就旧的数据库里已经转移完成的表删除了。
我是先TRUNCATE table_name,发现空间没有释放,又DROP TABLE table_name,发现空间还是没有释放。

我去网上搜了一下,发现收缩空间的命令都是针对表的,比如OPTIMIZE TABLE table_name。
我想请问一下,还有别的办法收缩空间吗?

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

全部回覆(3)
阿神

InnoDB引擎的特性就是這樣的。
佔用空間的文件有bin-log文件(二進位日誌)和ibdata1(資料文件,表空間就是在這裡的)
還有一些其他日誌(ib_logfile0)redo-log和undo-log。

你執行TRUNCATE掉了數據,不會對上面這些檔案大小產生影響(減少),反而會增大,要記錄你這個TRUNCATE操作。資料既使被刪除了,ibdata1空間裡也不會被刪除的,因為要刪除裡面的數據,要移動大量磁碟空間。 innodb只是標誌那些資料頁是可以再次使用的,並沒有刪除這塊空間。通常mysql一啟動,會會佔用幾個G的ibdata1 ibdata2。先分配一塊大的磁碟,再慢慢使用,資料在物理上連續(效率高)。避免一直分配磁碟空間,產生很多碎片。

除非你把整個data資料目錄目錄清除(相當於重裝mysql),再重新匯入資料。

磁碟很便宜,掛幾塊大磁碟就行了。磁碟都沒有,玩什麼資料庫。

刘奇

不了解。但是如果買塊硬碟就能解決問題其實根本沒必要去想其它方案了,投入的綜合成本更高,而且發生了這種情況本身就說明你們確實要考慮磁碟空間問題了,比如磁碟陣列,資料表拆分,是否需要redis/memcached來幫助資料庫減壓等,這是更重要的事情。

伊谢尔伦

推薦一下,之前我也遇到過,後來處理了,寫過博客http://astarblog.cn/index.php/2016/04/27/339.html (這算廣告嗎?)

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!