Skip to content

Archives

  • Januar 2022
  • Dezember 2021
  • November 2021
  • Oktober 2021
  • September 2021

Categories

  • Keine Kategorien
Trend RepositoryArticles and guides
Articles

How to Get the Size of a Table in MySQL

On Dezember 17, 2021 by admin

Wie die meisten relationalen Datenbanken bietet MySQL nützliche Metadaten über die Datenbank selbst. Während die meisten anderen Datenbanken diese Informationen als catalog bezeichnen, bezieht sich die offizielle MySQL-Dokumentation auf die INFORMATION_SCHEMA-Metadaten als tables.

Ungeachtet des Namens kommt es auf die Informationen an, die von diesen INFORMATION_SCHEMA-Tabellen bereitgestellt werden. Alles von views und user_privilieges bis columns und tables ist in der INFORMATION_SCHEMA zu finden. Für unsere Zwecke sind wir besonders an den tables-Metadaten interessiert, die wir abfragen können, um die Größe der verschiedenen Tabellen im System zu ermitteln.

List Table Sizes From a Single Database

Wie in der offiziellen Dokumentation zu sehen ist, enthält die Tabelle INFORMATION_SCHEMA.TABLES etwa 20 Spalten, aber um den von den Tabellen belegten Speicherplatz zu ermitteln, konzentrieren wir uns auf zwei Spalten im Besonderen: DATA_LENGTH und INDEX_LENGTH.

  • DATA_LENGTH ist die Länge (oder Größe) aller Daten in der Tabelle (in bytes).
  • INDEX_LENGTH ist die Länge (oder Größe) der Indexdatei für die Tabelle (ebenfalls in bytes).

Mit diesen Informationen können wir eine Abfrage ausführen, die alle Tabellen in einer bestimmten Datenbank zusammen mit dem Speicherplatz (Größe) jeder Tabelle auflistet. Wir können sogar noch etwas raffinierter werden und die normalen Größenwerte von bytes in etwas Nützlicheres und für die meisten Leute Verständlicheres wie megabytes umwandeln.

SELECT TABLE_NAME AS `Table`, ROUND((DATA_LENGTH + INDEX_LENGTH) / 1024 / 1024) AS `Size (MB)`FROM information_schema.TABLESWHERE TABLE_SCHEMA = "bookstore"ORDER BY (DATA_LENGTH + INDEX_LENGTH)DESC;

In diesem Beispiel mit der Datenbank bookstore kombinieren wir DATA_LENGTH und INDEX_LENGTH als bytes und teilen es dann zweimal durch 1024, um es in kilobytes und dann in megabytes umzuwandeln. Unsere Ergebnismenge sieht dann etwa so aus:

+----------------------------------+-----------+| Table | Size (MB) |+----------------------------------+-----------+| book | 267 || author | 39 || post | 27 || cache | 24 |...

Wenn Sie sich nicht für alle Tabellen in der Datenbank interessieren und nur die Größe einer bestimmten Tabelle wollen, können Sie einfach AND TABLE_NAME = "your_table_name" zur WHERE-Klausel hinzufügen. Hier wollen wir nur Informationen über die Tabelle book:

SELECT TABLE_NAME AS `Table`, ROUND((DATA_LENGTH + INDEX_LENGTH) / 1024 / 1024) AS `Size (MB)`FROM information_schema.TABLESWHERE TABLE_SCHEMA = "bookstore" AND TABLE_NAME = "book"ORDER BY (DATA_LENGTH + INDEX_LENGTH)DESC;

Die Ergebnisse sind nun, wie erwartet, wie folgt:

+-------+-----------+| Table | Size (MB) |+-------+-----------+| book | 267 |+-------+-----------+1 row in set (0.00 sec)

Liste aller Tabellengrößen aus allen Datenbanken

Wenn Sie ein Problem haben, bei dem Ihre Datenbank immer größer wird, Sie aber nicht wissen, welche Tabelle der Übeltäter ist, kann es nützlich sein, die Größe aller Tabellen in allen Datenbanken des gesamten Systems abzufragen. Dies lässt sich leicht mit der folgenden Abfrage bewerkstelligen:

SELECT TABLE_SCHEMA AS `Database`, TABLE_NAME AS `Table`, ROUND((DATA_LENGTH + INDEX_LENGTH) / 1024 / 1024) AS `Size (MB)`FROM information_schema.TABLESORDER BY (DATA_LENGTH + INDEX_LENGTH)DESC;

Dies gibt nicht nur die Größe der Tabelle zurück, sondern auch den Tabellennamen und die übergeordnete Datenbank, der sie zugeordnet ist.

Schreibe einen Kommentar Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Archive

  • Januar 2022
  • Dezember 2021
  • November 2021
  • Oktober 2021
  • September 2021

Meta

  • Anmelden
  • Feed der Einträge
  • Kommentare-Feed
  • WordPress.org
  • DeutschDeutsch
  • NederlandsNederlands
  • SvenskaSvenska
  • DanskDansk
  • EspañolEspañol
  • FrançaisFrançais
  • PortuguêsPortuguês
  • ItalianoItaliano
  • RomânăRomână
  • PolskiPolski
  • ČeštinaČeština
  • MagyarMagyar
  • SuomiSuomi
  • 日本語日本語

Copyright Trend Repository 2022 | Theme by ThemeinProgress | Proudly powered by WordPress