Febbraio 20, 2022

MySQL:: Re: come ridurre un database MySQL

Corretto. Questa è una limitazione del file tablespace condiviso di InnoDB. Sarebbe un’operazione molto costosa per il server MySQL compattare lo spazio utilizzato nel file tablespace e ridurre il file. Immagina se hai un file tablespace da 100 GB e vuoi eseguire una ricostruzione per compattarlo. In genere, le ricostruzioni di tabelle MySQL richiedono che sia il vecchio che il nuovo storage esistano simultaneamente sul disco durante l’operazione.
Quindi il comportamento di InnoDB è quello di lasciare lo spazio vuoto e usarlo per il successivo inserimento di nuove versioni di riga.
Vedi:
Bug #1287http://bugs.mysql.com/bug.php?id=1287
Bug #1341 http://bugs.mysql.com/bug.php?id=1341
Una soluzione per ridurre un tablespace InnoDB condiviso è:
1. Backup * tutti * tabelle InnoDB con mysqldump.
2. Eliminare tutte le tabelle InnoDB.
3. Eliminare fisicamente il file ibdata1 nell’interfaccia del filesystem.
4. Riavviare MySQL Server, che ricrea un nuovo, piccolo file tablespace.
5. Ripristinare tutte le tabelle InnoDB, che espande il file tablespace secondo necessità.
Un’altra soluzione consiste nell’utilizzare l’opzione per memorizzare le tabelle InnoDB in un file separato per tabella. Vedi http://dev.mysql.com/doc/refman/5.0/en/multiple-tablespaces.html Se lo fai, dovresti essere in grado di utilizzare OPTIMIZE TABLE o ALTER TABLE su ogni tabella InnoDB che vuoi ridurre. Questo dovrebbe ricostruire il .file ibd per la singola tabella.
Saluti,
Bill K.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.