|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: May 2003
Città: Padova
Messaggi: 1220
|
client mysql lento su una tabella
scrivo qui visto che magari è un topic più da "server"....
ho 2 pc Windows 7, uno monta un gestionalino in java con db mysql 5, l'altro il medesimo gestionale in versione client che usa il db mysql del primo il client, una volta avviato, apre tranquillamente le varie schede relative ad anagrafiche varie, fatture, ecc. ma quando apre l'elenco degli ordini si pianta di brutto, e ci mette diversi secondi per caricare i dati (la tabella contiene circa 25.000 righe, poi quando apre l'ordine carica il dettaglio ma si tratta di 4-5 righe ciascuna). la cosa va' avanti da circa 10 giorni, mentre per anni non ha mai dati problemi. ho controllato (e disabilitato) antivirus e firewall, ma non cambia niente. disabilitato anche ipv6. provato ad ottimizzare le tabelle con mysqlcheck. niente di niente. l'unico sospetto è il KB3197868 che si è installato il 9 di questo mese. cos'altro potrei guardare per fare un debug? Ultima modifica di mmiat : 16-11-2016 alle 16:58. |
|
|
|
|
|
#2 |
|
Bannato
Iscritto dal: Aug 2016
Messaggi: 871
|
anche se non me ne intendo affatto proverei mysql.exe
|
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: May 2003
Città: Padova
Messaggi: 1220
|
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Apr 2005
Messaggi: 3299
|
Troppo generico come problema.
Farei diverse prove 1) Una select direttamente dalla tabella funziona ? (usando la conosle o mysqlworkbench o altro tool) 2) Oltre a mysqlcheck hai provato mysqloptimize ? 3) C'è qualcosa nei log? 4) Logghi le query sql lente? Rientra nel caso? 5) Quando fai questa particolare ricerca, la cpu che fa? 6) Hai già provato con un altro pc a buttare su il backup e collegarti lì? |
|
|
|
|
|
#5 |
|
Moderatore
Iscritto dal: Nov 2006
Messaggi: 22047
|
sarebbe inoltre utile avere alcune indicazioni sulla macchina dove gira il dbms (processore memoria e disco) e i settaggi del my.ini
spesso problemi di performance si hanno a causa di cache troppo limitata (o di errori di progettazione del db ma che purtroppo è di competenza della ditta che ha sviluppato il gestionale
__________________
"WS" (p280,cx750m,4790k+212evo,z97pro,4x8GB ddr3 1600c11,GTX760-DC2OC,MZ-7TE500, WD20EFRX) Desktop (three hundred,650gq,3800x+nh-u14s ,x570 arous elite,2x16GB ddr4 3200c16, rx5600xt pulse P5 1TB)+NB: Lenovo p53 i7-9750H,64GB DDR4,2x1TB SSD, T1000 |
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: May 2003
Città: Padova
Messaggi: 1220
|
|
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Nov 2001
Città: Kendermore
Messaggi: 6681
|
Oltre ai consigli già dati e che quoto io mi concentrerei su questi aspetti:
1) cerca di individuare le query lente (http://dev.mysql.com/doc/refman/5.7/...query-log.html) 2) cerca di riprodurre il problema magari utilizzando l'istruzione explain per capire come viene effettuata la query(http://dev.mysql.com/doc/refman/5.7/en/explain.html) 3) verifica la documentazione del gestionale, ha delle guide di performance tuning? Ci sono operazioni schedulate che non girano? 4) verifica i campi oggetto della query, hanno indici? 5) prova ad aggiornare gli indici usando le istruzioni optimize (http://dev.mysql.com/doc/refman/5.7/...ize-table.html) e analyze (http://dev.mysql.com/doc/refman/5.7/...yze-table.html) 6) se non ci sono indici prova a crearli e verifica se questo migliora la situazione I punti fino a 4 puoi provarli direttamente sul db, non possono provocare alcun danno, i punti 5 e 6 modificano qualcosa ma non sono distruttive, se però non ti senti sicuro puoi sempre fare un dump e ripristinarlo su un nuovo database.
__________________
https://tasslehoff.burrfoot.it | Cloud? Enough is enough! | SPID… grazie ma no grazie "Arguing that you don't care about the right to privacy because you have nothing to hide is no different than saying you don't care about free speech because you have nothing to say." |
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: May 2003
Città: Padova
Messaggi: 1220
|
non ne vengo fuori....
1. temo non sia colpa di mysql, se infatti loggo le query lente nessuna supera 1 secondo.... 2. non ho capito bene come usarlo, riproverò 3. il gestionale è un programmino in java fatto da un mio amico, gli ho chiesto info ma non ha saputo darmi nemmeno lui indicazioni, è un programma vecchio e non più mantenuto, che comunque ha funzionato benissimo per 10 anni 4. e 6. gli indici ci sono 5. ho fatto qualche tentativo ma non è cambiato nulla che diavolo sarà cambiato? magari qualcosa in java? |
|
|
|
|
|
#9 |
|
Bannato
Iscritto dal: Aug 2016
Messaggi: 871
|
finquando non mi bannano-sospendono ti rispondo.
qualsiasi cosa tu faccia è inutile se 1) non logghi tutte le query (ti basta un banale proxy mysql, o se sei meno pratico anche lo slow log) 2) individuata la query "fatale", la fai eseguire a mysql.exe (cioè al client mysql), tagliando via tutta la croppa java 3) se a quel punto è ancora lenta, ovviamente, vai di EXPLAIN e magari EXPLAIN EXTENDED (se usi mariadb). 4) poi inizi a valutare l'esistenza di costrutti inadatti (tipo IN con mysql, cioè in assenza di subquery dipendenti materializzate) 5) valuti la selettività degli indici 6) controlli i parametri del server (in particolare parliamo di innodb?) 7) vai poi con mysqladmin a controllare se ci sono rallentamenti dovuti alla trasmissione dei dati o da un mix di scritture 8) vai di tool ex-percona (cosa sempre buona e giusta) 9) posti qui la query e te la riscrivo. la metto all'ultimo posto perchè non sono più propenso a dare questo genere di aiuti. PS ovviamente non mi intendo affatto di database mysql con migliaia di utenti e indici così grandi che non stanno nella RAM |
|
|
|
|
|
#10 | |
|
Senior Member
Iscritto dal: Apr 2005
Messaggi: 3299
|
Quote:
|
|
|
|
|
|
|
#11 | |
|
Senior Member
Iscritto dal: May 2003
Città: Padova
Messaggi: 1220
|
il db occupa 40MB
la tabella più complessa è rigafattura con 74.000 record ordine è una tabella da 24.000 record le tabelle sono innodb quando ho attivato i log il client è diventato ancora più lento quanto alle query, le ho loggate tutte e ho visto che quando interrogo un ordine lui lancia qualcosa come una 20ina o più di query, questo perché il programma usa hybernate il quale probabilmente crea chissà quali sovrastrutture il fatto che siano tante query piccole probabilmente impegna molto la comunicazione tra client e server ? EDIT: ho installato un xampp e da phpmyadmin > stato ho recuperato un po' di info, mi sono segnato quelle in rosso: Quote:
Ultima modifica di mmiat : 12-01-2017 alle 17:27. |
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 08:46.




















