Ottimizzare le performances di MySQL

Versione del 20 dic 2010 alle 19:52 di Ferdybassi (discussione | contributi) (Nuova pagina: == Ottimizzare le performances di MySQL == MySQLTuner è uno script in Perl che in analizza il server MySQL e suggerisce le impostazioni migliori basandosi sulle sue statistiche di ut...)
(diff) ← Versione meno recente | Versione attuale (diff) | Versione più recente → (diff)

Ottimizzare le performances di MySQL

MySQLTuner è uno script in Perl che in analizza il server MySQL e suggerisce le impostazioni migliori basandosi sulle sue statistiche di utilizzo.
Non è la strada più completa per ottimizzare il nostro database server, ma è una via rapida e che fornisce sufficienti miglioramenti da giustificare la sua installazione:

apt-get install mysqltuner

Da adesso, digitando mysqltuner nella nostra shell possiamo lanciare il tool:

root@test # mysqltuner
>> MySQLTuner 0.9.0 - Major Hayden
>> Bug reports, feature requests, and downloads at http://mysqltuner.com/
>> Run with '--help' for additional options and output filtering
Please enter your MySQL administrative login: root
Please enter your MySQL administrative password:
-------- General Statistics --------------------------------------------------
[!!] There is a new version of MySQLTuner available
[OK] Currently running supported MySQL version 5.0.51a-24+lenny4-log
[OK] Operating on 64-bit architecture
-------- Storage Engine Statistics -------------------------------------------
[--] Status: +Archive -BDB -Federated +InnoDB -ISAM -NDBCluster
[--] Data in MyISAM tables: 4M (Tables: 1311)
[--] Data in InnoDB tables: 300M (Tables: 2275)
-------- Performance Metrics -------------------------------------------------
[--] Up for: 17h 28m 59s (6M q [97.770 qps], 18K conn, TX: 11B, RX: 1B)
[--] Reads / Writes: 84% / 16%
[--] Total buffers: 2.6M per thread and 106.0M global
[OK] Maximum possible memory usage: 368.5M (9% of installed RAM)
[OK] Slow queries: 0% (2/6M)
[OK] Highest usage of available connections: 11% (11/100)
[OK] Key buffer size / total MyISAM indexes: 16.0M/4.7M
[OK] Key buffer hit rate: 99.2%
[OK] Query cache efficiency: 93.5%
[!!] Query cache prunes per day: 362758
[OK] Sorts requiring temporary tables: 0%
[!!] Joins performed without indexes: 5599
[!!] Temporary tables created on disk: 78%
[OK] Thread cache hit rate: 99%
[!!] Table cache hit rate: 0%
[OK] Open file limit used: 0%
[OK] Table locks acquired immediately: 100%
[!!] InnoDB data size / buffer pool: 300.1M/8.0M
-------- Recommendations -----------------------------------------------------
General recommendations:
MySQL started within last 24 hours - recommendations may be inaccurate
Enable the slow query log to troubleshoot bad queries
Adjust your join queries to always utilize indexes
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:
query_cache_size (> 64M)
join_buffer_size (> 128.0K, or always use indexes with joins)
tmp_table_size (> 32M)
max_heap_table_size (> 16M)
table_cache (> 128)
innodb_buffer_pool_size (>= 300M)

L'output de comando è sufficientemente esplicito e fornisce le raccomandazioni sulle modifiche da effettuare in maniera abbastanza chiara. Nel nostro caso MySQLTuner ci dice che vanno aggiunti o modificati i valori delle seguenti variabili:

query_cache_size (> 64M)
join_buffer_size (> 128.0K, or always use indexes with joins)
tmp_table_size (> 32M)
max_heap_table_size (> 16M)
table_cache (> 128)
innodb_buffer_pool_size (>= 300M)

Apriamo quindi il file di configurazione di MySQL, /etc/mysql/my.cnf e modifichiamolo come suggerito.
Quindi riavviamo il servizio MySQL:

/etc/init.d/mysql restart


br/> --Ferdybassi 20:52, 20 dic 2010 (CET)