Skip to content

Archives

  • 2022 január
  • 2021 december
  • 2021 november
  • 2021 október
  • 2021 szeptember

Categories

  • Nincs kategória
Trend RepositoryArticles and guides
Articles

How to Get the Size of a Table in MySQL

On december 17, 2021 by admin

A legtöbb relációs adatbázishoz hasonlóan a MySQL is hasznos metaadatokat biztosít magáról az adatbázisról. Míg a legtöbb más adatbázis catalog-ként hivatkozik ezekre az információkra, a MySQL hivatalos dokumentációja tables-ként hivatkozik a INFORMATION_SCHEMA metaadatokra.

A névtől függetlenül, ami számít, az az ezen INFORMATION_SCHEMA táblák által nyújtott információ. A INFORMATION_SCHEMA-ban a views-től és a user_privilieges-tól a columns-ig és a tables-ig minden megtalálható. A mi céljaink szempontjából minket különösen a tables metaadat érdekel, amelyet lekérdezhetünk, hogy ténylegesen kinyerjük a rendszerben lévő különböző táblák méretét.

List Table Sizes From a Single Database

Amint az a hivatalos dokumentációból kiderül, a INFORMATION_SCHEMA.TABLES tábla körülbelül 20 oszlopot tartalmaz, de a táblák által használt lemezterület meghatározásához különösen két oszlopra fogunk koncentrálni: DATA_LENGTH és INDEX_LENGTH.

  • DATA_LENGTH a táblázat összes adatának hossza (vagy mérete) (bytes-ban).
  • INDEX_LENGTH a táblázat indexfájljának hossza (vagy mérete) (szintén bytes-ban).

Ezen információk birtokában olyan lekérdezést tudunk végrehajtani, amely egy adott adatbázis összes tábláját felsorolja az egyes táblák lemezterületével (méretével) együtt. Még egy kicsit bonyolultabbá is válhatunk, és a bytes normál méretértékeit átkonvertálhatjuk valami hasznosabbá és a legtöbb ember számára érthetőbbé, például 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;

A bookstore adatbázist használó példában a DATA_LENGTH és INDEX_LENGTH értékeket bytes-ként kombináljuk, majd kétszer elosztjuk a 1024 értékkel, hogy kilobytes-re, majd megabytes-ra konvertáljuk. Az eredményhalmazunk valahogy így fog kinézni:

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

Ha nem érdekli az adatbázis összes táblája, és csak egy adott tábla méretére kíváncsi, egyszerűen hozzáadhatja a WHERE záradékhoz az AND TABLE_NAME = "your_table_name" értéket. Itt csak a book táblára vonatkozó információkra vagyunk kíváncsiak:

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;

Az eredmény a várakozásoknak megfelelően a következő:

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

List All Table Sizes From ALL Databases

Ha olyan problémába ütközik, hogy az adatbázis mérete növekszik, de nem tudja, melyik tábla a bűnös, hasznos lehet, ha lekérdezi az egész rendszer összes adatbázisán belüli összes tábla méretét. Ez könnyen elvégezhető a következő lekérdezéssel:

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;

Ez nem csak a tábla méretét adja vissza, hanem a tábla nevét és a hozzá tartozó szülői adatbázist is.

Vélemény, hozzászólás? Kilépés a válaszból

Az e-mail-címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük

Archívum

  • 2022 január
  • 2021 december
  • 2021 november
  • 2021 október
  • 2021 szeptember

Meta

  • Bejelentkezés
  • Bejegyzések hírcsatorna
  • Hozzászólások hírcsatorna
  • WordPress Magyarország
  • 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