2011-09-28 10 views
7

Sono ancora alle prese con le prestazioni del mio database MySQL usando il motore InnoDB. Soprattutto le prestazioni di inserimento dei dati, minori le prestazioni delle query in esecuzione.How-to per MySQL InnoDB (inserire) ottimizzazione delle prestazioni?

Ho cercato su google informazioni, how-to e così via, ma ho trovato la maggior parte delle informazioni piuttosto importanti. Posso trovare da qualche parte sulla rete alcune informazioni di base per i "neofiti", un punto di partenza per l'ottimizzazione delle prestazioni? I primi, più importanti passaggi per l'ottimizzazione di InnoDB, spiegati in modo meno complicato.

Sto utilizzando la piattaforma Windows

+0

http://www.mysqlperformanceblog.com/2011/03/18/video-the-innodb-storage-engine-for-mysql/ –

+0

Lol @ "profondo" ........... – Pacerier

risposta

15

ho usato per gestire una coppia molto grande database MySQL (come, 1TB +). Erano animali enormi e implacabili con un appetito senza fine a causarmi problemi di stomaco.

Ho letto tutto ciò che ho trovato su MySQL Performance Tuning e innodb. Ecco un riassunto di ciò che mi ha aiutato:

  1. Il libro High Performance MySQL è buono, ma solo si ottiene finora.
  2. Il blog MySQL Performance Blog (this link is to their posts tagged 'innodb') era la risorsa complessiva più utile che ho trovato in rete. Entrano nei dettagli su molti problemi di tuning innodb. A volte è "rancido", ma nel complesso è fantastico. Ecco un altro link lì su InnoDB Performance Optimization Basics che va bene.
  3. L'ultima cosa principale che ho imparato è stata la semplice lettura dei documenti MySQL. Ho letto come funziona ogni ultimo parametro, li ho modificati sul mio server e poi ho fatto dei profili di base. Dopo un po 'scoprirai cosa funziona eseguendo grandi query e vedendo cosa succede. Ecco un buon punto di partenza: InnoDB Performance Tuning and Troubleshooting

Alla fine, è solo sperimentando e lavorando attraverso le cose fino a quando si guadagna abbastanza conoscenze per sapere che cosa funziona.

+0

Grazie per la tua risposta dettagliata. Non ho intenzione di lavorare molto a fondo con MySQL e sfortunatamente non ho molto tempo per studiare tutto questo, ma ho dei buoni punti di partenza ora – waanders

+1

@ Kevin, Hai letto come funziona ogni impostazione? Com'è possibile quando ci sono tanto [622 variabili del server] (https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html)? E quella lista include solo alcune delle variabili che sono [specificabili in InnoDB] (http://stackoverflow.com/a/29539807/632951). – Pacerier

+0

Ho letto tutti i documenti per la versione che stavo usando. Era un po 'di tempo fa, ma sì, ce n'erano molti. L'abbiamo costruito nel corso di un paio d'anni. –

-1

Non ho usato la 'rete, ho usato i libri. :)

Il libro che ho usato per imparare MySQL è "Beginning MySQL" di Wrox Press, di Robert Sheldon e Geoff Moes. Il capitolo 15 illustra alcune nozioni di base sull'ottimizzazione. Mi è piaciuto molto questo libro e penso che sarebbe stato una buona lettura ed è stato il mio riferimento numero 1. Ma non è molto specifico del motore di archiviazione.

Ho un altro libro, Pro MySQL da apress che va molto più in dettaglio su particolari motori di archiviazione, ma è anche molto più difficile da leggere. Ancora un buon riferimento però.

+0

Grazie, forse devo comprare questo/i libro/i. Ma per la maggior parte dei problemi di programmazione posso usare la rete, ci dovrebbero essere delle informazioni da qualche parte ... – waanders

4

Per i principianti: innodb_flush_log_at_trx_commit = 0, se puoi permetterti di perdere fino a 1 secondo del tuo lavoro se il server va in crash. Questo è il compromesso tra prestazioni e affidabilità, ma migliorerà enormemente le prestazioni di scrittura. Se ti puoi permettere una cache di scrittura con batteria, usala.

In particolare su Windows, e per le prestazioni in scrittura, MariaDB 5.3 potrebbe essere un'idea migliore di MySQL di serie Oracle, dal momento che MariaDB è in grado di utilizzare meglio l'I/O asincrono su Windows. Ho scritto una nota a riguardo qualche tempo fa, here, su un benchmark sintetico standard che ha un rendimento migliore del 500% rispetto a MySQL 5,5 (vedere le immagini alla fine della nota).

Tuttavia, la prima e principale cosa che uccide le prestazioni è il lavaggio del disco.Questo è risolvibile se si allenta la durata con il parametro * innodb_flush_log_at_trx_commit *, con una cache di scrittura con batteria tampone. Inoltre, potresti prendere in considerazione l'utilizzo di transazioni più grandi, riducendo la quantità di svuotamenti del disco.

Problemi correlati