it-swarm.com.de

So schätzen Sie den Speicherplatz für 1 Million Zeilen, wenn ich in InnoDB MySQL eine Tabelle mit weniger Zeilen habe

Ich möchte den Speicherplatz für 1 Million Zeilen schätzen.

(enter image description here

Derzeit habe ich 8527959 Zeilen, eine Datenlänge von 744 MB und eine Indexlänge von 989,4 MB.

Bitte lassen Sie mich wissen, ob meine Berechnungen korrekt sind.

Gesamtdatenlänge für 1 Million Zeilen

Daten von 744 MB bestehen aus 46500 Seiten mit 16-KB-Blöcken (InnoDB-Seitengröße)

Wenn 46500 Seiten aus 8527959 Zeilen bestehen, besteht 1 Seite aus durchschnittlich 183 Zeilen.

1 Million Zeilen benötigen also (1.000.000/183) Seiten = 5465 Seiten mit 16 KB

1 Million Datenzeilen benötigen also 87,4 MB.

Gesamtindexlänge für 1 Million Zeilen

Indizes von 989,4 MB bestehen aus 61837 Seiten mit 16-KB-Blöcken (InnoDB-Seitengröße)

Wenn 61837 Seiten aus 8527959 Zeilen bestehen, besteht 1 Seite aus durchschnittlich 138 Zeilen.

1 Million Zeilen benötigen also (1.000.000/138) Seiten = 7247 Seiten mit 16 KB

1 Million Datenzeilen benötigen also 115,9 MB.

Gesamter Speicherplatz (ungefähr) für 1 Million Zeilen

Gesamtdatenlänge + Gesamtindexlänge = 87,4 MB + 115,9 MB = 203,3 MB

Ist das richtig?

2
PyRookie

Ihre Grundannahmen sind korrekt. Es ist leicht zu erkennen, dass die Zuordnung pro Zeile knapp 100 Byte pro Zeile und etwas mehr für die Indizes beträgt, sodass Sie eine Gesamtgröße von 200 * 1M = 200M erhalten.

Es müssen jedoch einige wichtige Dinge berücksichtigt werden:

  • Die Tabellen müssen eine identische Struktur und einen äquivalenten Inhalt haben, z. die gleiche exakte Tabelle mit ähnlich großem variablem Inhalt.
  • Mit SHOW TABLE STATUS Erhalten Sie eine Schätzung der Größe (Zeilen, Gesamtgröße) basierend auf der Stichprobe. Diese ist möglicherweise nicht genau, insbesondere wenn große Änderungen an der Tabelle vorgenommen wurden und die automatische Stichprobe noch nicht gestartet wurde. Sie können das Sammeln von Statistiken mit dem Befehl ANALYZE TABLE Erzwingen, dies kann Ihnen jedoch niemals eine 100% ige Genauigkeit garantieren
  • Alles hängt mit logische Größe zusammen, nicht mit physische Größe oder der Größe auf der Festplatte. Wenn Sie 7/8 dieser Tabelle löschen würden, würde die auf der Festplatte verwendete Festplatte im Fall von InnoDB nicht verkleinert, da keine Defragmentierung der Festplatte auftreten würde. Es wird Speicherplatz für das Einfügen anderer Zeilen freigegeben, dies würde jedoch nicht der Fall sein in das Dateisystem freigegeben werden. Um die Größe der Festplatte zu verringern, müssten Sie die Tabelle mit OPTIMIZE TABLE Neu erstellen, was zeitaufwändiger und blockierender ist.
  • Wenn Speicherplatz ein Problem darstellt, sollten Sie die Komprimierung in Betracht ziehen
4
jynus