2013-10-17 64 views
1

最近,我檢查了我在phpMyAdmin(使用WAMP)中使用的SQL數據庫,並且他們都報告沒有可用空間。之前並不是這樣,我不確定是什麼導致了它的改變。缺乏可用空間的數據庫非常非常緩慢。我重新安裝了WAMP,爲phpMyAdmin創建了一個新用戶,並將數據庫重新導入新用戶,但無濟於事。爲什麼MySQL數據庫中沒有可用空間?

這裏是我用來檢查空間查詢和結果:

SELECT table_schema "beek", SUM(data_length + index_length) /1024/1024 "Data Base Size in MB", SUM(data_free) /1024 /1024 "Free Space in MB" 
FROM information_schema.TABLES 
GROUP BY table_schema 
LIMIT 0 , 30 
 
beek 
Data Base Size in MB 
Free Space in MB 

------------------------------------------- 
beek 

Data Base Size in MB 4.11813927 

Free Space in MB 0.00000000 

----------------------------------------- 
information_schema 

Data Base Size in MB 0.00976563 

Free Space in MB 0.00000000 

--------------------------------------- 
mysql 

Data Base Size in MB 0.76406479 

Free Space in MB 0.00000000 

------------------------------------- 
performance_schema 

Data Base Size in MB 0.00000000 

Free Space in MB 0.00000000 

-------------------------------------------- 

有誰知道爲什麼所有這些數據庫的額外空間的消失了?

回答

3

InnoDB表的「可用空間」被報告爲沒有數據的區的大小。

當一個表空間文件在物理上增長時,它會以很大的頁面增長,稱爲擴展。然後你逐漸插入數據來填補範圍。

當您剛剛分配新擴展數據塊時,您可能先前已經查詢了information_schema,但在您插入數據之前就已經查詢了。然後,當您插入數據時,它將在該範圍內使用一些空間,並且它不再被佔用(即使它只是部分填充)。

當您執行大量DELETE時,表空間文件中間的區域也可能被清空。但是,隨後的INSERT會重用這個可用空間。

無論哪種方式,有零未佔用的範圍是正常的,這不是問題。如果文件需要物理增長,InnoDB可以做到這一點。

有關詳細信息,請參閱:

+0

大,對信息的感謝!仍然有問題,但至少不是這樣。 – GBM

相關問題