Skip to content

Archives

  • januar 2022
  • december 2021
  • november 2021
  • oktober 2021
  • september 2021

Categories

  • Ingen kategorier
Trend RepositoryArticles and guides
Articles

Hvordan får du størrelsen af en tabel i MySQL

On december 17, 2021 by admin

Som de fleste relationelle databaser giver MySQL nyttige metadata om selve databasen. Mens de fleste andre databaser henviser til disse oplysninger som en catalog, henviser den officielle MySQL-dokumentation til INFORMATION_SCHEMA-metadataene som tables.

Uanset navnet er det, der betyder noget, de oplysninger, der leveres af disse INFORMATION_SCHEMA-tabeller. Alt fra views og user_privilieges til columns og tables kan findes i INFORMATION_SCHEMA. Til vores formål er vi især interesseret i tables-metadata, som vi kan forespørge på for rent faktisk at udtrække størrelsen af forskellige tabeller i systemet.

Liste over tabelstørrelser fra en enkelt database

Som det fremgår af den officielle dokumentation, indeholder INFORMATION_SCHEMA.TABLES-tabellen omkring 20 kolonner, men med henblik på at bestemme mængden af diskplads, der bruges af tabeller, vil vi især fokusere på to kolonner: DATA_LENGTH og INDEX_LENGTH.

  • DATA_LENGTH er længden (eller størrelsen) af alle data i tabellen (i bytes).
  • INDEX_LENGTH er længden (eller størrelsen) af indeksfilen for tabellen (også i bytes).

Med disse oplysninger kan vi udføre en forespørgsel, der viser alle tabeller i en bestemt database sammen med diskpladsen (størrelsen) for hver enkelt. Vi kan endda blive lidt finere og konvertere de normale størrelsesværdier fra bytes til noget mere nyttigt og forståeligt for de fleste mennesker 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 dette eksempel med bookstore-databasen kombinerer vi DATA_LENGTH og INDEX_LENGTH som bytes og dividerer det derefter med 1024 to gange for at konvertere til kilobytes og derefter megabytes. Vores resultatsæt vil se nogenlunde sådan ud:

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

Hvis du er ligeglad med alle tabeller i databasen og kun ønsker størrelsen af en bestemt tabel, kan du blot tilføje AND TABLE_NAME = "your_table_name" til WHERE-klausulen. Her ønsker vi kun oplysninger 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;

Resultaterne er som forventet nu:

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

List All Table Sizes From ALL Databases

Hvis du løber ind i et problem, hvor din database vokser i størrelse, men du ikke ved, hvilken tabel der er synderen, kan det være nyttigt at forespørge efter størrelsen af alle tabeller i alle databaser i hele systemet. Dette kan nemt gøres med følgende forespørgsel:

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;

Dette returnerer ikke kun størrelsen på tabellen, men også tabellens navn og den overordnede database, som den er tilknyttet.

Skriv et svar Annuller svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *

Arkiver

  • januar 2022
  • december 2021
  • november 2021
  • oktober 2021
  • september 2021

Meta

  • Log ind
  • Indlægsfeed
  • Kommentarfeed
  • 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