Performance dopo aggiornamento MySQL (da 4 a 5)

mercoledì 02 maggio 2007 - 23.01

Riccardo.Raneri Profilo | Newbie

Ciao a tutti, questo é il mio primo messaggio su .net Hell :)
Su un webserver Windows 2003 che gestisco ho recentemente aggiornato MySQL alla versione 5, dopo aver tenuto per un paio di anni la 4. Ho semplicemente copiato la cartella DATA e avviato il servizio, funziona tutto e la cosa mi ha stupito non poco :D
Tuttavia, dopo un paio di giorni ho iniziato a notare una grande occupazione di CPU da parte del processo di MySQL. Notando che i check sulle tabelle (mi sembra solo su quelle InnoDB) dava un errore e mi invitava a ripararle, ho eseguito un repair e successivamente un optimize su tutti i database dei 2 o 3 siti che costituiscono il 99% del traffico servito dal server. Mi sembra che ora l'occupazione sia scesa a livelli accettabili, ma mi sembrano comunque superiori a quelli che riscontravo con la v4. C'é qualcosa che ho trascurato, nella migrazione?

Grazie anticipatamente :)

Brainkiller Profilo | Guru

>Ciao a tutti, questo é il mio primo messaggio su .net Hell :)

Ciao Riccardo, benvenuto.

>Su un webserver Windows 2003 che gestisco ho recentemente aggiornato
>MySQL alla versione 5, dopo aver tenuto per un paio di anni la
>4. Ho semplicemente copiato la cartella DATA e avviato il servizio,
>funziona tutto e la cosa mi ha stupito non poco :D

Beh si in realtà la procedura non dovrebbe essere molto complicata. Anche su SQL è abbastanza semplice.

>Mi sembra che ora l'occupazione sia scesa a livelli accettabili,
>ma mi sembrano comunque superiori a quelli che riscontravo con
>la v4. C'é qualcosa che ho trascurato, nella migrazione?

Io darei un'occhiata anche agli indici. Ricostruiscili. Probabilmente è cambiato qualcosa nella gestione indici e fino a quando non li ricostruisci fa fatica (ammesso che tu non l'abbia già fatto).

Ti consiglio anche la lettura di questo Doc per la migrazione da MySQL 4 alla 5. Ormai l'hai fatto ma comunque può essere buono:
http://dev.mysql.com/doc/refman/5.0/en/upgrading-from-4-1.html
Ciao

David De Giacomi | Microsoft MVP
http://blogs.dotnethell.it/david/

Riccardo.Raneri Profilo | Newbie

Prima di tutto grazie mille per la risposta

Nel frattempo ho provato a disinstallare completamente la v4 e v5, ricopiando una seconda volta la cartella /data (questa volta già dalla v5 alla nuova installazione v5), e le cose mi sembrano ulteriormente migliorate.

Per "ricostruire gli indici" cosa intendi esattamente? Pensavo che un REPAIR facesse già questa operazione.

** Un'altra domanda: ero solito, per i backup, utilizzare l'utility "MYSQLDUMP", con questa sintassi:

MYSQLDUMP --opt --password=miapassword --all-database > C:\Backups\nomebackup.sql -u root

dopo l'aggiornamento a v5 ho dovuto aggiungere l'opzione "--single-transaction", altrimenti non funzionava più (andrà bene lo stesso?), però quando ora cerco di effettuare il ripristino, ottengo un messaggio di "access denied for user root @ localhost" relativo alla creazione del database INFORMATION_SCHEMA, che in effetti non é una vera tabella (da quello che ho letto), ma una sorta di entità di "servizio" di MySQL. Ogni volta che devo effettuare un restore devo editare a mano il file .sql per eliminare questa parte o c'é qualcosa che mi sfugge?

Brainkiller Profilo | Guru

>Per "ricostruire gli indici" cosa intendi esattamente? Pensavo
>che un REPAIR facesse già questa operazione.

Non ho lunga esperienza con MySQL. In genere su Oralce e SQL Server quando si fa il tuning del database, si vede la deframmentazione degli indici ed eventualmente si ricostruiscono, aumentando di fatto le performance del database. Non so se il corrispettivo di MySQL è REPAIR. Guarda nella documentazione se tra le attività che fa c'è la ricostruzione indici.

>del database INFORMATION_SCHEMA, che in effetti non é una vera
>tabella (da quello che ho letto), ma una sorta di entità di "servizio"
>di MySQL.

Si è uno schema che fa parte dello standard SQL, quindi se un database aderisce correttamente allo standard deve implementare questo schema.

>Ogni volta che devo effettuare un restore devo editare
>a mano il file .sql per eliminare questa parte o c'é qualcosa
>che mi sfugge?

Per questa procedura ti rimando ad una lettura:
http://dev.mysql.com/doc/refman/5.0/en/disaster-prevention.html

Punto 5.9 e seguenti.
Ciao



David De Giacomi | Microsoft MVP
http://blogs.dotnethell.it/david/

Riccardo.Raneri Profilo | Newbie

Alla fine ho rinunciato, almeno per il momento: ho effettuato il downgrade alla versione 4.1 e le performance sono tornate quelle "di una volta", con una diminuzione che stimo intorno al 20-30% medio di utilizzo CPU. Possibile che l'utilizzo di applicazioni web sviluppate su 4.1 e portate su 5 subiscano un così forte rallentamento?
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2023
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5