2012-04-12 18 views
6

Sto inserendo in una semplice tabella piccola con 5 attributi e 1000 righe.Mysql: inserimento prestazioni INNODB vs MYISAM

Ho osservato quando il motore è INNODB, ogni inserto sta prendendo 0,03 - 0,05 secondi. Ho cambiato il motore in MYISAM, quindi gli inserti sono più veloci. sta prendendo 0.001 - 0.003.

Qual è il problema. innodb_flush_log_trx_commit = 1 di default. Ero questo setting così com'è. Ecco le mie impostazioni innodb.

innodb_log_buffer_size : 1MB 
innodb_log_file_size : 5MB 
innodb_buffer_pool_size: 8MB 
innodb_flush_log_trx_commit = 1 

Non sono riuscito a capire cosa fosse andato storto. Grazie in anticipo. Cordiali saluti, UDAY

+0

Si dovrebbe provare questo distacco su http://dba.stackexchange.com/ o http://serverfault.com –

+0

grazie microfono. L'ho fatto. – Uday

+0

Nessun problema, buona fortuna. –

risposta

3

innodb_flush_log_at_trx_commit = 1 significa che ogni transazione viene scritta nel buffer di registro.

Impostare su 0 per ottenere prestazioni migliori, o ancora meglio provare a fare tutti gli inserimenti all'interno di una transazione (non dimenticare di impegnarsi alla fine).

si può guardare http://dev.mysql.com/doc/refman/4.1/en/innodb-parameters.html per maggiori dettagli su innodb_flush_log_at_trx_commit e altre variabili

+0

Ciao Argeman, qui sono preoccupato per il fatto che con questa variabile impostata su 1, mostri degli inserti molto molto bassi come gli inserti di 120 KB all'ora. Mantenendo un lato modificando questo valore su 2, quale potrebbe essere il motivo di questa prestazione peggiore con questo valore impostato su 1. – Uday

+0

Il motivo è che ogni transazione viene scritta nel buffer di registro. Se ora si inseriscono senza inserirli manualmente in una transazione, ognuno viene eseguito come una transazione, con conseguente scrittura su disco. Una scrittura su disco impiega circa 10-50 ms su un normale disco rotante ... Potrebbe essere meglio se si ha una cache con batteria tampone su un controller RAID o un SSD, tuttavia – Argeman

+0

Significa davvero che una singola transazione su un server di comodità impiegherà 10 - 50 milli secondi. Io non la penso così Nessuno può accettarlo. Ho questa prestazione non su tutti i server solo su alcuni server. – Uday

Problemi correlati