Informationen zur Optimierung einer MySQL Datenbank gibt es im Web in nahezu endloser Fülle. Auch die vorhandene Lektüre, wie z.B. „High Performance MySQL“ ist detailliert und gibt auch Einsteigern nützliche Tipps an die Hand um Engpässe auf dem eigenen Server zu ermitteln und idealerweise zu eliminieren.
Wer weder die Zeit hat sich intensiv einzuarbeiten, noch diverse Fachbücher zu studieren, dem kann MySQLTuner ein hilfreiches Werkzeug sein. Das Perlscript ermittelt anhand der vorhandenen Statistiken mögliche Bottlenecks und zeigt entsprechende Optimierungspotentiale im Form von Empfehlungen und konkreten Einstellungshinweisen.
Neben der Prüfung verschiedener Hit Ratios errechnet MySQLTuner auch den maximal benötigten Speicher der aktuellen Konfiguration. Hier lassen sich mögliche Probleme bei Nutzung der zugelassenen Connection erkennen und vermeiden.
Installation:
[code lang=“shell“]wget http://mysqltuner.pl
chmod +x mysqltuner.pl
./mysqltuner.pl[/code]
Output:
[code lang=“shell“]
>> MySQLTuner 1.0.0 – Major Hayden
>> Bug reports, feature requests, and downloads at
>> Run with ‚–help‘ for additional options and output filtering
——– General Statistics ————————————————–
[–] Skipped version check for MySQLTuner script
[OK] Currently running supported MySQL version 5.0.51a-24+lenny1
[OK] Operating on 64-bit architecture
——– Storage Engine Statistics ——————————————-
[–] Status: +Archive -BDB -Federated +InnoDB -ISAM -NDBCluster
[–] Data in MyISAM tables: 1G (Tables: 86)
[–] Data in InnoDB tables: 176M (Tables: 120)
[–] Data in MEMORY tables: 124K (Tables: 1)
[!!] Total fragmented tables: 17
——– Performance Metrics ————————————————-
[–] Up for: 16d 1h 27m 51s (212M q [153.460 qps], 2M conn, TX: 27B, RX: 14B)
[–] Reads / Writes: 50% / 50%
[–] Total buffers: 58.0M global + 2.6M per thread (100 max threads)
[OK] Maximum possible memory usage: 320.5M (15% of installed RAM)
[OK] Slow queries: 0% (100/212M)
[OK] Highest usage of available connections: 36% (36/100)
[OK] Key buffer size / total MyISAM indexes: 16.0M/120.5M
[OK] Key buffer hit rate: 99.8% (63M cached / 99K reads)
[OK] Query cache efficiency: 31.3% (8M cached / 27M selects)
[!!] Query cache prunes per day: 23191
[OK] Sorts requiring temporary tables: 0% (87 temp sorts / 103K sorts)
[!!] Joins performed without indexes: 3446897
[OK] Temporary tables created on disk: 0% (830 on disk / 4M total)
[OK] Thread cache hit rate: 99% (1K created / 2M connections)
[!!] Table cache hit rate: 0% (64 open / 47K opened)
[OK] Open file limit used: 1% (20/1K)
[OK] Table locks acquired immediately: 99% (60M immediate / 60M locks)
[!!] InnoDB data size / buffer pool: 176.7M/8.0M
——– Recommendations —————————————————–
General recommendations:
Run OPTIMIZE TABLE to defragment tables for better performance
Enable the slow query log to troubleshoot bad queries
Adjust your join queries to always utilize indexes
Increase table_cache gradually to avoid file descriptor limits
Variables to adjust:
query_cache_size (> 16M)
join_buffer_size (> 128.0K, or always use indexes with joins)
table_cache (> 64)
innodb_buffer_pool_size (>= 176M)[/code]
Beachten sollte man, dass sich nach Änderung von Parametern und Neustart des Servers einige Empfehlungen ändern, die auf Basis von Laufzeitstatistiken ermittelt werden. Es macht also durchaus Sinn, dass System ein paar Stunden mit der neuen Konfiguration zu betreiben, bevor man erneut Rückschlüsse aus den gewonnenen Informationen zieht.
End of Life von CentOS Linux 7 – Was bedeutet das für mich?
Der ein oder andere Admin wird sich vermutlich schon lange den 30. Juni 2024 im Kalender vorgemerkt haben, denn dann ist für CentOS Linux 7 das "End of Life" erreicht. Aber auch Benutzer von Red Hat Enterprise Linux 7 sollten sich Gedanken machen, denn auch dieses...
Bitte Link aktualisieren: https://github.com/major/MySQLTuner-perl/blob/master/mysqltuner.pl
Danke. 🙂
mysqltuner.pl geht auch „wieder“. Habe es angepasst, DANKE