/ / Perché mysql alter table esegue sempre copia su temptable? - mysql, performance, memoria, innodb

Perché mysql alter table fa sempre copia su temptable? - mysql, performance, memoria, innodb

Ho una tabella innodb in mysql con meno di 2milioni di record e dati + dimensioni dell'indice di circa 1,5 GB Devo fare alter table per aggiungere una riga al tavolo. Ogni volta che eseguo alter table mysql faccio sempre una copia in temptable. La macchina di database ha 100 GB di RAM, quindi mi aspetto che la tabella delle modifiche debba essere eseguita in memoria. Ho impostato:

tmp_table_size = 10G
max_heap_table_size = 10G
sort_buffer_size = 10G
innodb_buffer_pool_size=50G

Ma questo non ha aiutato. Come posso configurare mysql per evitare di copiare su temptable?

risposte:

2 per risposta № 1

MySQL non funziona ALTER TABLE nella memoria in ogni caso. L'aggiunta di una nuova colonna a una tabella richiede la creazione di una nuova tabella (con il nuovo schema), la copia di tutte le righe dalla vecchia tabella alla nuova tabella e lo scambio atomico della tabella vecchia e nuova. A seconda della versione di MySQL, alcuni tipi di ALTER TABLE, come l'aggiunta di nuovi indici, può essere possibile eseguire "online" dove altre operazioni non sono bloccate durante l'operazione. Tuttavia questo è ancora fatto "su disco" per quanto riguarda la tua domanda.