Domanda

Ciao, sto usando Mysql 5.0.x

Ho appena cambiato molte tabelle da MyISAM a InnoDB

Con le tabelle MyISAM ci sono voluti circa 1 minuto per installare il nostro database Con InnoDB sono necessari circa 15 minuti per installare lo stesso database

Perché InnoDB impiega così tanto tempo?

Cosa posso fare per accelerare le cose?

L'installazione del database procede come segue

1) Elimina lo schema

2) Crea lo schema

3) Crea tabelle

4) Crea procedure memorizzate

5) Inserisci i dati predefiniti

6) Inserisci i dati tramite la procedura memorizzata

EDIT:

L'inserimento di dati predefiniti richiede la maggior parte del tempo

È stato utile?

Soluzione

Modifica il passaggio Inserisci dati per avviare una transazione all'inizio e per impegnarla alla fine. Otterrai un miglioramento, te lo garantisco. (Se disponi di molti dati, potresti voler suddividere la transazione per tabella.)

Se la tua applicazione non utilizza affatto le transazioni, allora dovresti impostare il parametro innodb_flush_log_at_trx_commit su 2. Questo ti restituirà molte prestazioni perché quasi sicuramente avrai abilitato auto_commit e questo genera sono configurate molte più transazioni rispetto ai parametri predefiniti di InnoDB. Questa impostazione interrompe inutilmente lo svuotamento dei buffer del disco ad ogni commit.

Altri suggerimenti

15 minuti non mi sembrano eccessivi. Dopotutto, è un costo una tantum.

Non ne sono certo, ma immagino che parte della spiegazione sia che l'integrità referenziale non sia gratuita. InnoDB deve fare più lavoro per garantirlo, quindi ovviamente ci vorrebbe più tempo.

Forse è necessario modificare lo script per aggiungere vincoli dopo la creazione delle tabelle.

Come ha detto duffymo, disabilita i tuoi vincoli (indici e chiavi primarie / primarie) prima di inserire i dati.

Forse dovresti ripristinare alcuni indici prima che i dati vengano inseriti tramite la procedura memorizzata, se utilizza molte seleziona istruzioni

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