Hoppa till innehåll

Archives

  • januari 2022
  • december 2021
  • november 2021
  • oktober 2021
  • september 2021

Categories

  • Inga kategorier
Trend RepositoryArticles and guides
Articles

Hur man får fram storleken på en tabell i MySQL

On december 17, 2021 by admin

Som de flesta relationsdatabaser tillhandahåller MySQL användbara metadata om själva databasen. Medan de flesta andra databaser hänvisar till denna information som en catalog, hänvisar den officiella MySQL-dokumentationen till INFORMATION_SCHEMA-metadata som tables.

Oavsett namnet är det viktiga den information som tillhandahålls av dessa INFORMATION_SCHEMA-tabeller. Allt från views och user_privilieges till columns och tables finns i INFORMATION_SCHEMA. För våra syften är vi särskilt intresserade av tables-metadata, som vi kan fråga efter för att faktiskt ta fram storleken på olika tabeller i systemet.

List Table Sizes From a Single Database

Som framgår av den officiella dokumentationen innehåller INFORMATION_SCHEMA.TABLES-tabellen cirka 20 kolumner, men för att bestämma hur mycket diskutrymme som tabellerna använder fokuserar vi på två kolumner i synnerhet: DATA_LENGTH och INDEX_LENGTH.

  • DATA_LENGTH är längden (eller storleken) på alla data i tabellen (i bytes).
  • INDEX_LENGTH är längden (eller storleken) på indexfilen för tabellen (även den i bytes).

Med den här informationen kan vi utföra en fråga som listar alla tabeller i en specifik databas tillsammans med diskutrymmet (storleken) för varje. Vi kan till och med bli lite finare och konvertera de normala storleksvärdena från bytes till något mer användbart och begripligt för de flesta som megabytes.

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;

I det här exemplet, där vi använder databasen bookstore, kombinerar vi DATA_LENGTH och INDEX_LENGTH som bytes, och dividerar sedan med 1024 två gånger för att omvandla det till kilobytes och sedan megabytes. Vår resultatuppsättning kommer att se ut ungefär så här:

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

Om du inte bryr dig om alla tabeller i databasen och bara vill ha storleken på en viss tabell kan du helt enkelt lägga till AND TABLE_NAME = "your_table_name" i WHERE-klausulen. Här vill vi bara ha information om tabellen 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;

Resultaten blir som väntat nu:

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

List All Table Sizes From ALL Databases

Om du stöter på ett problem där din databas växer i storlek men du inte vet vilken tabell som är boven i dramat kan det vara användbart att fråga efter storleken på alla tabeller i alla databaser i hela systemet. Detta kan enkelt göras med följande fråga:

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;

Detta returnerar inte bara storleken på tabellen, utan även tabellens namn och den överordnade databasen som den är associerad med.

Lämna ett svar Avbryt svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *

Arkiv

  • januari 2022
  • december 2021
  • november 2021
  • oktober 2021
  • september 2021

Meta

  • Logga in
  • Flöde för inlägg
  • Flöde för kommentarer
  • 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
  • 日本語日本語

Upphovsrätt Trend Repository 2022 | Tema av ThemeinProgress | Drivs med WordPress