Domanda

Esistono tecniche documentate per accelerare i dump e le importazioni di MySQL?

Ciò includerebbe le impostazioni di my.cnf, l'uso di ramdisk, ecc.

Cercando solo tecniche documentate, preferibilmente con parametri di riferimento che mostrino un potenziale di accelerazione.

È stato utile?

Soluzione

http://www.maatkit.org/ ha un mk-parallel-dump e mk-parallel-restore

Se desideri mysqldump multi-thread, non desiderare altro.Questo strumento esegue il dump delle tabelle MySQL in parallelo.È un mysqldump molto più intelligente che può agire come wrapper per mysqldump (con un comportamento predefinito sensato) o come wrapper attorno a SELECT INTO OUTFILE.È progettato per applicazioni ad alte prestazioni su dimensioni di dati molto grandi, dove la velocità conta molto.Sfrutta più CPU e dischi per eseguire il dump dei dati molto più velocemente.

Ci sono anche varie potenziali opzioni in mysqldump come non creare indici mentre il dump viene importato, ma invece eseguirli in massa al completamento.

Altri suggerimenti

  1. Ottieni una copia di MySQL ad alte prestazioni.Ottimo libro.
  2. Inserti estesi in discariche
  3. Dump con il formato -tab in modo da poter usare mysqlimport, che è più veloce di mysql <dumpfile
  4. Importa con più thread, uno per ogni tabella.
  5. Se possibile, utilizzare un motore di database diverso.Importazione in un motore pesantemente transazionale come InnoDB è terribilmente lenta.Inserire in un motore non tranzionalizzato come Myisam è molto più veloce.
  6. Guarda lo script di confronto tavolo nel toolkit Maakit e vedi se riesci a aggiornare le tabelle anziché scaricarle e importarle.Ma probabilmente stai parlando di backup/restazioni.

Se stai importando in InnoDB, la cosa più efficace che puoi fare è mettere

innodb_flush_log_at_trx_commit = 2

nel tuo my.cnf, temporaneamente mentre l'importazione è in esecuzione.Puoi rimetterlo a posto 1 se hai bisogno di ACID.

Immagino che la tua domanda dipenda anche da dove si trova il collo di bottiglia:

  • Se la tua rete rappresenta un collo di bottiglia, potresti anche dare un'occhiata a -C/--compress bandiera a mysqldump.
  • Se il tuo computer esaurisce la memoria (ad es.inizia lo scambio) dovresti acquistare più memoria.

Inoltre, dai un'occhiata a --quick bandiera per mysqldump (E --disable-keys se stai utilizzando MyIsam).

L'utilizzo di inserti estesi nei dump dovrebbe rendere le importazioni più veloci.

disattivare i controlli delle chiavi esterne e attivare il commit automatico.

mysqlhotcopy potrebbe essere un'alternativa anche per te se hai solo tavoli MyIsam.

Un'altra alternativa è http://www.mydumper.org - backup/ripristino mysql multi-thread che è da 3 a 10 volte più veloce di mysqldump e può gestire sia MyISAM che InnoDB nonché Drizzle http://vbtechsupport.com/1695/

Usando gli indici ma non troppo, attiva la cache delle query, usando Sphinx per database di grandi dimensioni, ecco alcuni buoni consigli http://www.keedeo.com/media/1857/26-astuces-pour-accelerer-vos-requetes-mysql (In francese)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top