Key Buffer Tuning MyISAM MySQL

Key Buffer Tuning MyISAM MySQL

Zum optimieren des MySQL MyISAM Key Buffer Cache, der Standardmäßig auf 16MB eingestellt ist, muß man folgende Abfrage innerhalb von MySQL ausführen:

mysql> SELECT CONCAT(ROUND(KBS/POWER(1024, IF(PowerOf1024<0,0,IF(PowerOf1024>3,0,PowerOf1024)))+0.4999), \
SUBSTR(' KMG',IF(PowerOf1024<0,0, IF(PowerOf1024>3,0,PowerOf1024))+1,1)) \
recommended_key_buffer_size FROM (SELECT LEAST(POWER(2,32),KBS1) KBS FROM (SELECT SUM(index_length) KBS1 \
FROM information_schema.tables WHERE engine='MyISAM' AND \
table_schema NOT IN ('information_schema','mysql')) AA ) A, (SELECT 2 PowerOf1024) B;

Als Ausgabe erhält man dann die tatsächlich benötigte Größe für die key buffer size

+-----------------------------+
| recommended_key_buffer_size |
+-----------------------------+
| 3111M                       |
+-----------------------------+

um die key_buffer_size anzupassen, muß die my.cnf wie folgt angepaßt werden:

[mysqld]
#
#key_buffer = 64M
key_buffer_size = 3200M

Es wird auf der MySQL Webseite empfohlen anstelle der Variablen key_buffer die Variable key_buffer_size zu setzen, es darf auch nur eine gesetzt werden, da MySQL sich sonst immer am niedrigsten Wert orientiert und diesen Einsetzt.