PDA

View Full Version : Mysql lento?


gennysa
22-08-2011, 13:04
Ciao a tutti..
come al solito sto impazzendo..

Ho creato su VMware una macchina virtuale con ubuntu e Lamp.. eseguo uno script in php di inserimento prodotti in DB mysql che impiega circa 18 minuti per 35000 record..
Ho quindi installato ubuntu su una macchina reale (quindi + performante con tutta la Ram disponibile ecc..) configurando Lamp allo stesso modo che lo avevo configurato su Vmware..
E' da ieri mattina che non riesco a capire perchè sulla macchina reale lo script impiega più di 1 ora... Credevo che il problema era relativo alla velocità del disco e stamattina ho persino acquistato un SSD.. ma niente...

Dove sta il problema? è mysql ? o altro?
Grazie in anticipo

SerMagnus
22-08-2011, 13:45
è sicuramente un problema di configurazione, verifica anche le versioni installate e le estensioni di php

una curiosità come ti colleghi da php a mysql?

gennysa
22-08-2011, 13:50
Ciao grazie per la risposta..
le versioni e le estensioni sono perfettamente uguali a quelle installate in vmware.

Mi collego da terminale tramite script php..

Gimli[2BV!2B]
22-08-2011, 19:11
Svolge semplici inserimenti?
Se non fa solo inserimenti, eventuali colonne coinvolte in join o where sono tutte indicizzate? InnoDB? Attenzione che anche indici buoni per alcune query rischiano di rallentarne altre. (http://www.mysqlperformanceblog.com/2010/05/22/extending-index-for-innodb-tables-can-hurt-performance-in-a-surprising-way/)

Gli inserimenti vengono svolti per ogni singolo record o a blocchi di n record? (solitamente insert a blocchi sono notevolmente più veloci, se i dati permettono di farli)

Ah, anche eventuali utilizzi di condizioni IN ( a, b, n ) sono spesso causa di rallentamenti inattesi (creazione tabelle temporanee che in macchina virtuale credo potrebbero risultare più veloci).

gennysa
22-08-2011, 19:29
Premetto che ho pochissima pratica...
cmq non so risponderti..

So che c'è InnoDB, i record vanno singolarmente.. ma non so delle tabelle temporanee

Ho appena provato l'ennesimo tentativo..
Ho clonato la macchina virtuale su hd ho lanciato ubuntu e la stessa macchina su vmware è veloce mentre in "reale" sempre lenta..

dai 18 minuti di vmware siamo a circa 45 minuti in locale...

SerMagnus
24-08-2011, 13:08
ma la macchina reale è pulita?

cmq per sfizio fai una prova: rimuovi tutti gli indici, pialla la tabella e poi li rilancia lo script per l'inserimento

ally
24-08-2011, 18:05
...come ti connetti al db?...usi un pool o apri chiudi la connessione di volta in volta?...

gennysa
26-08-2011, 12:37
ciao ho risolto impostando per innodb

set innodb_flush_log_at_trx_commit = 2

e va decisamente mooolto meglio..
grazie cmq dell'aiuto