PDA

Visualizza la versione completa : Ottimizzare performance Tabella MYSQL


ALonE
26-11-2008, 17:34
Buongiorno a tutti...

il mio quesito è questo:
ho una tabella di circa una 30ina di colonne ma un sacco di record, siamo quasi a quota 45000...
tutte le volte che accedo a questa tabella mi si siede tutto.. sia il DBserver che il WEBserver

La tabella è in relzione con altre, inoltre ho una vista in cui raggruppo i campi e poi metto in join questa vista con un altra (e non vi dico la lentezza nell'aprila...).

Ho provato a togliere tutte le chiavi esterne, aggiungere indici, cancellarli e riaggiungerli... ma nada, le performace sono troppo basse e l'applicativo risulta inusabile, non si può aspettare più di 3 secondi per vedere un elenco impaginato di 15 record alla volta e aspettare dai 6 ai 8/9 secondi... troppo, quando richiamo la query più complessa passiamo anche sopra ai 12 secondi con inmancabilmente il sistema che "si siede".

Come posso fare?
Come posso ottimizzare questa tabella?

Grazie!

moty66
26-11-2008, 17:56
c'è qualcosa che non va nei tuo select !!

ho lavorare con DB molto più grossi, ma non ho avuto problemi del genere

se sei sicuro che le tue query sono corretti, allora cambia server !

che motore usi ? MyISAM, InnoDB ? ti consiglio di leggere http://dev.mysql.com/doc/refman/5.1/en/storage-engines.html

saluti

ALonE
26-11-2008, 18:02
la lentezza mi incomicia già aprendo direttamente la tabella ed eseguendo la query da SLQ Manager


SELECT * FROM libri_volumi;

/* Result : "42328 rows fetched (6,016 sec)" */

Non mi sembra sta gran query e non mi sembrano così tanti record da metterci così tanto

Non capisco :master:

moty66
26-11-2008, 18:05
si si, non è normale

devi provare a cambiare server ! cosi avrai buone risposte

saluti

ALonE
26-11-2008, 18:07
Non è il server.. per ora è il mio pc locale... ma a me sembrano troppi cmq... mi aspetterei qualcosa di più "performante"...

serialkiller
26-11-2008, 18:13
Originariamente inviato da ALonE
Non è il server.. per ora è il mio pc locale... ma a me sembrano troppi cmq... mi aspetterei qualcosa di più "performante"...

Così tanto per provare, prova:



$risultato = mysql_list_tables($db_site);

while ($riga = mysql_fetch_row($risultato)) {

$query_opt_1 = mysql_query("OPTIMIZE TABLE ".$riga[0]);

}


Non l'ho provato ma dovrebbe funzionare, poi prova a fare la stessa query e vedi se migliora.

ALonE
26-11-2008, 18:15
Già fatto ma non migliora di tanto...

serialkiller
26-11-2008, 18:45
Originariamente inviato da ALonE
Già fatto ma non migliora di tanto...

Allora non saprei, se puoi provalo su un server diverso, ovviamente più performante.

moty66
26-11-2008, 18:53
select * from my test_table

/* (112.148 Totali, La query ha impiegato 0.0007 sec) */


dovresti avere qualcosa del genere ! uso un server debian con 512 di ram cpu 1.7 GHz

ALonE
26-11-2008, 18:56
L'ho scritto sopra ma riprendo...


SELECT * FROM libri_volumi;

/* Result : "42328 rows fetched (6,016 sec)" */

Il mio portatile è un P4 con 1Gb di ram... del server non conosco le caratteristiche però in locale anche se non è un pc apposito i 6sec sono inaccettabili

Sto ricontrollando tutte le viste per ottimizzarle al meglio

Loading