A volte accade di dover fare degli alter table su alcune tabelle molto grandi e non avere idea di quando, se mai lo farà, il processo terminerà.

Se nel file di configurazione di MySql è stata imposta l’opzione innodb_file_per_table, è possibile seguire lo stato di avanzamento confrontando le dimensioni del file orginale con il file temporaneo creato da MySql.

Per esempio se voglio aggiungere la colonna col1 alla tabella bigtable1 nel database data1 eseguirò:

Nella directory del database MYSQL_DATA_DIR/data1 comparirà un file con un nome tipo #sql-977_820.ibd. Raffrontando le dimensioni di questo file con il file orginale ( bigtable1.ibd ) avrò la percentuale di avanzamento.

Per farlo in un one-liner :

che ritorna la percentuale di avanzamento del comando.

Dove

mostra la dimensione del file temporaneo,

mostra la dimensione del file originale, e bc effettua la divisione e stampa la percentuale di avanzamento.