2012-07-31 43 views

回答

16

取決於存儲引擎

的MyISAM(緩存索引頁從.MYI文件)

SELECT FLOOR(SUM(index_length)/POWER(1024,2)) IndexSizesMB 
FROM information_schema.tables WHERE engine='MyISAM' AND 
table_schema NOT IN ('information_schema','performance_schema','mysql'); 

減去從key_buffer_size。如果答案> 0,則是

的InnoDB(緩存數據和索引頁)

SELECT FLOOR(SUM(data_length+index_length)/POWER(1024,2)) InnoDBSizeMB 
FROM information_schema.tables WHERE engine='InnoDB'; 

減去從innodb_buffer_pool_size。如果答案> 0,則是

我在DBA StackExchange

寫這在一個專門的數據庫服務器,確保InnoDBSizeMB+IndexSizesMB不超過RAM 75%。

+0

謝謝,下面看起來是否現實? 'innodb_buffer_pool_size = 134217728' - 'above-query = 283164672' ='-148946944'。如果是這樣的話,我應該增加我的'innodb_buffer_pool_size',還是下一步呢? – David542 2012-07-31 20:55:58

+1

你的緩衝池是128M。你的InnoDBSize是270M。所以,將'innodb_buffer_pool_size'提升到300M。 – RolandoMySQLDBA 2012-07-31 20:59:28

+0

我redid查詢做MB而不是字節。 – RolandoMySQLDBA 2012-07-31 21:00:48

2

要找到可用內存到MySQL ,看在my.cnf,可能位於:/etc/mysql/my.cnf

key_buffer_size = 264M 

要爲表查找索引的大小:SHOW TABLE status FROM [DBNAME]

+0

在my.cnf文件中,我沒有任何與定義的內存相關的選項。這裏需要定義的具體選項是什麼? – David542 2012-07-31 20:47:33

相關問題