Mysql optimalisatie
Het stond al zo lang op het lijstje om uit te zoeken dat het er maar eens van moest komen. Mysql heeft tot nu toe altijd gedraaid met de standaard parameters. Omdat standaarden uitgaan van gemiddelden kan het altijd zo zijn dat een paar kleine aanpassingen voor specifieke situaties verbeteringen met zich mee brengen.
Om een globaal beeld te krijgen heb ik een scriptje gebruikt genaamd Mysqltuner. Dit script gaf een aantal opvallende dingen:
[!!] InnoDB is enabled but isn't being used
[!!] Temporary tables created on disk: 51%
[!!] Table cache hit rate: 0%
-------- Recommendations -----------------------------------------------------
General recommendations:
Add skip-innodb to MySQL configuration to disable InnoDB
When making adjustments, make tmp_table_size/max_heap_table_size equal
Reduce your SELECT DISTINCT queries without LIMIT clauses
Increase table_cache gradually to avoid file descriptor limits
Variables to adjust:
tmp_table_size (> 32M)
max_heap_table_size (> 16M)
table_cache (> 64)
Allereerst heb ik een tweetal parameters aangepast in my.cnf:
set-variable=tmp_table_size=64M
set-variable=max_heap_table_size=64M
Na ongeveer een week heb ik nogmaals naar de status gekeken en kwam tot de ontdekking dat het aanpassen van die twee variabelen eigenlijk niet veel uitmaakte, de cijfers waren nog gelijk. Na nog wat uitpluizen en een hoop uitproberen heb ik nog een tweetal variabelen aangepast:
set-variable=key_buffer_size=64M
set-variable=table_cache=256
Over een week nog maar eens zien of dit geholpen heeft. Mijn gevoel zegt van wel, maar beter is het om zeker te weten.