Mysql

MySql 不使用緩衝池

  • January 27, 2016

我正在檢查 MySql 數據庫上的緩衝池問題。根據此處顯示的獲取數據庫大小的查詢,數據庫總大小約為 11GB。不幸的是,我知道我的記憶體要少得多。這個虛擬機總共只有大約 4.5GB。所以我檢查了 InnoDB 緩衝池的使用情況,希望看到它幾乎滿載。相反,我看到了相反的情況:

show engine innodb status \G;
...
緩衝池大小 163839
可用緩衝區 132864
...

似乎緩衝池幾乎沒有被觸及。而且,是的,這些都是 InnoDB 表:

SELECT Engine, COUNT(*) "Count" 
FROM Information_Schema.Tables 
WHERE table_schema = 'My_Database'
GROUP BY Engine;
引擎數
----- -----
創新數據庫 169

這裡會發生什麼?

我真是個傻瓜……今天早上伺服器重新啟動了。當我完成這個問題時,我意識到了這一點。在數據庫實際需要使用那麼多數據之前,緩衝池不會填滿。實際上,如果我重新執行緩衝池查詢,我可以看到“空閒緩衝區”數量緩慢減少。

我可以執行一些查詢來強製表進入記憶體,但鑑於我知道我沒有足夠的記憶體來處理(希望很快解決這個問題),我應該等待並讓我的使用者告訴數據庫哪些數據更重要。

引用自:https://dba.stackexchange.com/questions/127242