- Home
- Categorie
- Coding e Sistemistica
- Hosting, Server e Domini
- Ottimizzare e configurare Mysql per grande database InnoDB
-
Ottimizzare e configurare Mysql per grande database InnoDB
In questi giorni mi scervellavo a capire il perchè le pagine del mio sito caricavano lentamente e quindi mi sono messo a rivedere le migliaia di query e la configurazione di Mysql. Infine mi sono accorto che il problema non era nel database ma bensì altrove in quanto anche per aprire questa semplice pagina html [HTML]<html><head><head><body>ciao</body></html>[/HTML] il server rispondeva in 8 secondi. Sto risolvendo quel problema riconfigurando il server
Comunque sia il mio database non è ottimizzato al meglio. Di seguito ecco cosa mi mostra in rosso PhpMyAdmin cliccando in Stato.```Slow_queries 146
Innodb_buffer_pool_reads 24.9 k
Innodb_row_lock_waits 2
Handler_read_rnd 752.9 M
Handler_read_rnd_next 3.8 G
Qcache_lowmem_prunes 690.3 k
Created_tmp_disk_tables 1.3 M
Select_full_join 108.7 k
Opened_tables 21.2 k
Table_locks_waited 5Gli indici di alcune tabelle sono davvero alti specie dove ho più di 1 milione di righe. In PROCESSLIST l'id identificativo dell "utente" per il quale si sta eseguendo una query è davvero alto 341139. Precedentemente arrivava massimo a 1000 (credo riciclava le connessioni già esistenti). Sul server sono presenti molti database con diversi Motori. I più grandi hanno come motore InnoDB, gli altri MyISAM. Attualmente ho questa configurazione:
max_connections = 400
query_cache_size = 128M
table_cache=2048
tmp_table_size = 1G
thread_cache_size=286
connect_timeout = 100
interactive_timeout = 100
wait_timeout = 500
query_cache_limit = 4M
query_cache_size = 128M
query_cache_type = 1
open_files_limit = 8192
max_allowed_packet = 16000M
join_buffer_size = 16M
max_heap_table_size = 1G
key_cache_block_size = 1024
max_sort_length = 1024
key_cache_division_limit = 100
skip-partition
//MY ISAM
myisam_max_sort_file_size=100G
myisam_sort_buffer_size=2G
key_buffer_size=64M
read_buffer_size=256M
read_rnd_buffer_size=256K
sort_buffer_size=2G
//INNO DB
innodb_additional_mem_pool_size=32M
innodb_flush_log_at_trx_commit = 2
innodb_log_buffer_size=16M
innodb_buffer_pool_size=6G
innodb_log_file_size=1G
innodb_thread_concurrency=17Il server dove gira l'ambaradam è questo (anche se lo stiamo per cambiare con uno migliore):
Server Rack Dell R410
CPU: 2 x Intel Xeon Quad L5609 4x core 1.86
RAM: 16 GB
HardDisk: 2 x 1 TB SATA a 7200 rpm
OS: Windows Server 2008 Standard 64 Bit
Connectivity: 100 Mbit/s> Il server hosta un sito web che interroga un database MYSQL INNODB di 10gb (sempre in crescita), con 200 accessi simultanei circa (spero cresceranno :D ); ci gira anche un programma che aggiorna di continuo il database e che sul server attuale consuma circa il 20% della cpu con decine di connessioni a webservice. Qualche giorno fa ho provato ad ottimizzare il database con MySQLTuner ma penso di aver peggiorato la situazione. Avete qualche consiglio da darmi per ottimizzare la velocità di questo database? Spero mi possiate dare una mano :smile5:
-
Se il problema è l'iowait del disco è consigliato un server con dischi SSD per la parte DB.
Hai anche provato ad aggiornare mysql con una versione più aggiornata? Hanno fatto notevoli migliorie di performance su innodb da mysql 5.5
-
Allora ho trovato il problema della lentezza e l'ho risolta -> giorgiotave .it/forum/hosting-housing-e-domini/221718-urgente-cambio-server-scelta-del-nuovo.html#post1128451
Adesso è tornato tutto come era inizialmente! Ma vorrei comunque migliorare le impostazioni del db e evitare quegli avvisi in rosso. La versione di Mysql che è istallata è proprio la 5.5.
Qualche suggerimento per abbassare questi valori??Slow_queries 146
Innodb_buffer_pool_reads 24.9 k
Innodb_row_lock_waits 2
Handler_read_rnd 752.9 M
Handler_read_rnd_next 3.8 G
Qcache_lowmem_prunes 690.3 k
Created_tmp_disk_tables 1.3 M
Select_full_join 108.7 k
Opened_tables 21.2 k
Table_locks_waited 5
-
Ciao,
se separi il DB, prendi una macchina Linux e prova ad installare MySQL Percona
-
Io suggerirei di installare MariaDB nella versione 10...
-
Non ho tempo per cambiare database o provare nuove emozioni xD volevo solo qualche consiglio per migliorare la configurazione senza stravolgere nulla
-
Conosci MariaDB peppinosh?
-
Ne conosco la storia ma non l'ho mai usato o testato
-
Io lo uso e non c'è nessun test da fare... ho disinstallato Mysql e installato questo database e i server hanno ritrovato una seconda giovinezza...
-
ho disinstallato Mysql e installato questo database
Non ho questo tempo.. probabilmente poi ci saranno problemi di incompatibilità.. non posso rischiare per ora
-
Il solo rischio che corri è di restare nella situazione attuale...
MariaDb è un fork di Mysql, compatibilità totale e con caratteristiche che Mysql non ha.
https://mariadb.com/kb/en/mariadb/mariadb-vs-mysql-features/Buon lavoro!