2012-04-06 6 views
5

Possiedo un server mysql RAM dedicato solo da 32 GB RAM in esecuzione sulla configurazione predefinita. Voglio cambiare il tipo di motore in InnoDB di una tabella per evitare blocchi della tabella. Ha 50 milioni di record e la dimensione su disco è di circa 15 GB. Sto usando mysql versione 5.5 Credo che avrò bisogno di aggiungere le seguenti opzioni e riavviare mysql.Modifica del tipo di tabella in InnoDB

innodb_buffer_pool_size=1G 
innodb_log_file_size=100M 
innodb_file_per_table=1 

Cosa altro è considerato necessario durante la modifica del tipo di motore?

risposta

13

Effettuerai effettivamente un comando per convertire ogni tabella.

Si va più veloce di ordinare prima tabella:

ALTER TABLE tablename ORDER BY primary_key_column; 

Quindi, eseguire il comando alter:

ALTER TABLE tablename ENGINE = INNODB; 

Si potrebbe prendere un po 'se la tabella è molto grande, e utilizzerà un sacco di CPU ....

+0

La mia domanda riguarda le modifiche alla configurazione my.cnf che devono essere eseguite poiché il cnf corrente non ha parametri correlati a innodb. – shantanuo

+0

La soluzione seguente suggerisce "SHOW ENGINES" che indica se sono necessarie ulteriori modifiche al file my.cnf. Se è così, assicurati che "skip-innodb" sia commentato. Ricorda di riavviare il tuo motore mysql con garbo. –

+0

In tal caso, InnoDB verrà eseguito sui valori predefiniti. La mia domanda riguarda le impostazioni predefinite che devono essere modificate. O funzionerà bene a lungo termine con le impostazioni predefinite? Ho elencato i 3 parametri più importanti, ma volevo saperne di più. – shantanuo

7

Prima di tutto controlla se il tuo database supporta il motore InnoDB (scommetto che sia supportato;)):

SHOW ENGINES\G 

Se è così, c'è già di default innodb related parameters in atto, controllarli con:

SHOW VARIABLES LIKE '%innodb%' 

e cercare di capirli e alterare il alle vostre specifiche esigenze. Anche se usi i parametri predefiniti, ora puoi giocare con le tabelle InnoDB.

Se si desidera creare solo le tabelle InnoDB, è possibile cambiare il motore di memorizzazione di default, sia per la sessione corrente con: SET storage_engine=INNODB; o nella configurazione utilizzando default-storage engine opzione.

A proposito, il modo più veloce per convertire una tabella in InnoDB non è il modo sopra descritto. Si può effettuare le seguenti operazioni per convertire una tabella di InnoDB semplicemente inserendo i dati:

CREATE TABE new AS SELECT * FROM old WHERE 1<>1; 
ALTER TABLE new ENGINE = INNODB; 
INSERT INTO new SELECT * FROM old; 

Naturalmente è necessario aggiungere gli indici necessari manualmente, ma il suo solito vale il tempo (e il dolore) si salva rispetto al lo ALTER TABLE ... su tavoli leggermente più grandi.

+0

Perché la risposta molto più utile non è accettata? +1 da me – fancyPants