2012-07-31 3 views

Antwort

16

Abhängig von Storage Engine

MyISAM (Caches Index Seiten von .MYI Dateien)

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'); 

subtrahiert, dass aus key_buffer_size. Wenn die Antwort> 0, dann Ja

InnoDB (Caches Daten- und Indexseiten)

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

subtrahieren, dass aus innodb_buffer_pool_size. Wenn die Antwort> 0, dann Ja

ich dazu in der DBA StackExchange

schrieb

Auf einem dedizierten Server DB, stellen Sie sicher, InnoDBSizeMB+IndexSizesMB nicht 75% des RAM nicht übersteigt.

+0

Danke, scheint das folgende realistisch? 'innodb_buffer_pool_size = 134217728' -' über-query = 283164672' = '-148946944'. Wenn dies der Fall ist, sollte ich meine 'innodb_buffer_pool_size' erhöhen, oder was wäre der nächste Schritt hier? – David542

+1

Ihr Pufferpool ist 128M. Ihre InnoDBSize ist 270M. Raise 'innodb_buffer_pool_size' also auf 300M. – RolandoMySQLDBA

+0

Ich habe die Abfrage neu gemacht, um MB statt Bytes zu machen. – RolandoMySQLDBA

2

Um Speicher zur Verfügung zu MySQL finden aussehen, in my.cnf, wahrscheinlich finden Sie unter: /etc/mysql/my.cnf

key_buffer_size = 264M 

Um die Größe von Indizes für eine Tabelle zu finden: SHOW TABLE status FROM [DBNAME]

+0

In meiner my.cnf Datei habe ich keine Optionen im Zusammenhang mit Speicher definiert. Was ist die spezifische Option, die hier definiert werden müsste? – David542