Skip to content

Archives

  • ianuarie 2022
  • decembrie 2021
  • noiembrie 2021
  • octombrie 2021
  • septembrie 2021

Categories

  • Nicio categorie
Trend RepositoryArticles and guides
Articles

Cum se obține dimensiunea unui tabel în MySQL

On decembrie 17, 2021 by admin

Ca majoritatea bazelor de date relaționale, MySQL oferă metadate utile despre baza de date în sine. În timp ce majoritatea celorlalte baze de date se referă la aceste informații ca fiind catalog, documentația oficială MySQL se referă la metadatele INFORMATION_SCHEMA ca fiind tables.

Indiferent de nume, ceea ce contează sunt informațiile furnizate de aceste tabele INFORMATION_SCHEMA. Totul, de la views și user_privilieges până la columns și tables poate fi găsit în INFORMATION_SCHEMA. Pentru scopurile noastre, suntem interesați în special de metadatele tables, pe care le putem interoga pentru a extrage efectiv dimensiunea diferitelor tabele din sistem.

Listul dimensiunilor tabelelor dintr-o singură bază de date

După cum se poate vedea în documentația oficială, tabelul INFORMATION_SCHEMA.TABLES conține în jur de 20 de coloane, dar în scopul determinării volumului de spațiu pe disc utilizat de tabele, ne vom concentra asupra a două coloane în special: DATA_LENGTH și INDEX_LENGTH.

  • DATA_LENGTH este lungimea (sau dimensiunea tuturor datelor din tabel (în bytes).
  • INDEX_LENGTH este lungimea (sau dimensiunea) fișierului de index pentru tabel (tot în bytes).

Înarmați cu aceste informații, putem executa o interogare care va lista toate tabelele dintr-o anumită bază de date împreună cu spațiul pe disc (dimensiunea) fiecăreia. Putem chiar să devenim un pic mai pretențioși și să convertim valorile normale ale dimensiunii din bytes în ceva mai util și mai ușor de înțeles pentru majoritatea oamenilor, cum ar fi 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;

În acest exemplu, folosind baza de date bookstore, combinăm DATA_LENGTH și INDEX_LENGTH ca bytes, apoi împărțim de două ori cu 1024 pentru a le converti în kilobytes și apoi megabytes. Setul nostru de rezultate va arăta cam așa:

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

Dacă nu vă pasă de toate tabelele din baza de date și doriți doar dimensiunea unei anumite tabele, puteți adăuga pur și simplu AND TABLE_NAME = "your_table_name" la clauza WHERE. Aici dorim doar informații despre tabelul 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;

Rezultatele, așa cum era de așteptat, sunt acum:

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

List All Table Sizes From ALL Databases

Dacă vă confruntați cu o problemă în care baza de date crește în dimensiune, dar nu știți ce tabel este vinovat, poate fi util să interogați dimensiunea tuturor tabelelor din toate bazele de date din întregul sistem. Acest lucru poate fi realizat cu ușurință cu următoarea interogare:

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;

Aceasta va returna nu numai dimensiunea tabelului, ci și numele tabelului și baza de date părinte cu care este asociat.

Lasă un răspuns Anulează răspunsul

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *

Arhive

  • ianuarie 2022
  • decembrie 2021
  • noiembrie 2021
  • octombrie 2021
  • septembrie 2021

Meta

  • Autentificare
  • Flux intrări
  • Flux comentarii
  • 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