Skip to content

Archives

  • Leden 2022
  • Prosinec 2021
  • Listopad 2021
  • Říjen 2021
  • Září 2021

Categories

  • Žádné rubriky
Trend RepositoryArticles and guides
Articles

Jak zjistit velikost tabulky v MySQL

On 17 prosince, 2021 by admin

Stejně jako většina relačních databází poskytuje MySQL užitečná metadata o samotné databázi. Zatímco většina ostatních databází označuje tyto informace jako catalog, oficiální dokumentace MySQL označuje metadata INFORMATION_SCHEMA jako tables.

Nezáleží na názvu, důležité jsou informace, které tyto tabulky INFORMATION_SCHEMA poskytují. V tabulkách INFORMATION_SCHEMA lze nalézt vše od views a user_privilieges až po columns a tables. Pro naše účely nás zajímají zejména metadata tables, na která se můžeme dotazovat, abychom skutečně získali velikost různých tabulek v systému.

Seznam velikostí tabulek z jedné databáze

Jak je vidět v oficiální dokumentaci, tabulka INFORMATION_SCHEMA.TABLES obsahuje přibližně 20 sloupců, ale pro účely zjištění množství místa na disku, které tabulky využívají, se zaměříme zejména na dva sloupce: DATA_LENGTH a INDEX_LENGTH.

  • DATA_LENGTH je délka (nebo velikost) všech dat v tabulce (v bytes).
  • INDEX_LENGTH je délka (nebo velikost) indexového souboru pro tabulku (také v bytes).

S těmito informacemi můžeme provést dotaz, který vypíše všechny tabulky v konkrétní databázi spolu s diskovým prostorem (velikostí) každé z nich. Můžeme být dokonce trochu fantasknější a převést běžné hodnoty velikosti z bytes na něco užitečnějšího a pro většinu lidí srozumitelnějšího, například 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;

V tomto příkladu s použitím databáze bookstore spojíme DATA_LENGTH a INDEX_LENGTH jako bytes, pak je dvakrát vydělíme 1024 a převedeme na kilobytes a pak megabytes. Naše výsledná sada bude vypadat nějak takto:

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

Pokud vás nezajímají všechny tabulky v databázi a chcete pouze velikost konkrétní tabulky, můžete jednoduše přidat AND TABLE_NAME = "your_table_name" do klauzule WHERE. Zde chceme pouze informace o tabulce 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;

Výsledky jsou nyní podle očekávání následující:

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

Seznam všech velikostí tabulek ze VŠECH databází

Pokud se setkáváte s problémem, kdy vám roste velikost databáze, ale nevíte, která tabulka je viníkem, může se vám hodit dotaz na velikost všech tabulek v rámci všech databází v celém systému. Toho lze snadno dosáhnout následujícím dotazem:

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;

Tento dotaz vrátí nejen velikost tabulky, ale také název tabulky a nadřazenou databázi, ke které je přiřazena.

.

Napsat komentář Zrušit odpověď na komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *

Archivy

  • Leden 2022
  • Prosinec 2021
  • Listopad 2021
  • Říjen 2021
  • Září 2021

Základní informace

  • Přihlásit se
  • Zdroj kanálů (příspěvky)
  • Kanál komentářů
  • Česká lokalizace
  • 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