Il mio file ibdata è molto grande, almeno mi sembra molto grande. È eccessivo o negativo?
-rw-rw---- 1 mysql mysql 15G Apr 18 10:11 ibdata1
Il mio file ibdata è molto grande, almeno mi sembra molto grande. È eccessivo o negativo?
-rw-rw---- 1 mysql mysql 15G Apr 18 10:11 ibdata1
Risposte:
Se corri show table status
su una tabella e il Data_free
campo costituisce la stragrande maggioranza delle ibdata1
dimensioni del tuo file, allora potresti avere molto spazio sprecato. Una grande quantità di insert / delete renderà questo un problema. In tal caso, gli inserimenti e le eliminazioni transitorie costituiscono la maggior parte dei dati, quindi hai un buon caso di file per tabella.
Questo non è un "sì" automatico, comunque. Nel mondo si parla molto della frammentazione interna dei file InnoDB, ma inserendoli in un file system poiché il file per tabella sposta la frammentazione a livello di file system anziché a livello di database.
Pensa al tuo file InnoDB come a un filesystem piuttosto che a un file. Se hai molti file, avrai bisogno di un grande filesystem.
Per la maggior parte, i filesystem fanno davvero bene a scalare per gestire terabyte di dati e un numero imprecisato di file. A volte incontrano problemi con una scarsa indicizzazione (ad esempio, limiti al numero di file in una directory prima di un impatto sulle prestazioni), ma per la maggior parte il moderno filesystem può oscillare bene nell'intervallo di terabyte.
InnoDB funziona allo stesso modo. La dimensione del tuo file di dati può essere enorme ... e come i filesystem di grandi dimensioni, che possono presentare problemi con il backup dei dati. Tuttavia, proprio come suddividere il filesystem in più partizioni non aiuta a risolvere questo problema, né tentare di manipolare innodb. Mentre puoi usare innodb_file_per_table , lo consiglio raramente.
Proprio come il tuo filesystem, la risposta migliore è conoscere i limiti internamente e lavorare al suo interno. Comprendere gli indici e applicarli in modo appropriato. Non cercare di dividere InnoDB, non è pensato per questo.
Dato che sto lottando per trasmettere in modo costruttivo il concetto, ecco una rapida lettura delle parole così meglio di me: Terabyte non è un grosso dato, petabyte lo è .
Ricordo una diapositiva di marketing MySQL davvero vecchia in cui il cliente gestiva un data warehouse con alcuni terabyte. Molti anni fa. InnoDB o MyISAM, funzionerebbero entrambi. Questo è uno standard MySQL standard.
Non sudare un database da 15 GB.
InnoDB free: 7364608 kB
I file ibdata non si restringono - se hai recentemente eliminato alcune tabelle o rimosso molte righe - innodb nella tua configurazione non rilascerà lo spazio libero sul filesystem. ti suggerirei:
in questo modo sarai in grado di recuperare lo spazio ogni volta che rilasci una tabella / database innodb - i file idb associati verranno rimossi immediatamente.