Skip to content

Archives

  • styczeń 2022
  • grudzień 2021
  • listopad 2021
  • październik 2021
  • wrzesień 2021

Categories

  • Brak kategorii
Trend RepositoryArticles and guides
Articles

Jak uzyskać rozmiar tabeli w MySQL

On 17 grudnia, 2021 by admin

Jak większość relacyjnych baz danych, MySQL dostarcza użytecznych metadanych o samej bazie danych. Podczas gdy większość innych baz danych odnosi się do tych informacji jako catalog, oficjalna dokumentacja MySQL odnosi się do metadanych INFORMATION_SCHEMA jako tables.

Niezależnie od nazwy, ważne są informacje dostarczane przez te INFORMATION_SCHEMA tabele. Wszystko od views i user_privilieges do columns i tables można znaleźć w INFORMATION_SCHEMA. Dla naszych celów szczególnie interesują nas metadane tables, które możemy odpytywać, aby faktycznie wyodrębnić rozmiary różnych tabel w systemie.

List Table Sizes From a Single Database

Jak widać w oficjalnej dokumentacji, tabela INFORMATION_SCHEMA.TABLES zawiera około 20 kolumn, ale dla celów określenia ilości miejsca na dysku wykorzystywanego przez tabele skupimy się w szczególności na dwóch kolumnach: DATA_LENGTH i INDEX_LENGTH.

  • DATA_LENGTH jest długością (lub rozmiarem) wszystkich danych w tabeli (w bytes).
  • INDEX_LENGTH jest długością (lub rozmiarem) pliku indeksu dla tabeli (również w bytes).

Uzbrojeni w te informacje, możemy wykonać zapytanie, które wyświetli listę wszystkich tabel w określonej bazie danych wraz z przestrzenią dyskową (rozmiarem) każdej z nich. Możemy nawet zrobić się nieco bardziej fantazyjni i przekonwertować normalne wartości rozmiaru z bytes na coś bardziej użytecznego i zrozumiałego dla większości ludzi, jak 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;

W tym przykładzie, używając bazy danych bookstore, łączymy DATA_LENGTH i INDEX_LENGTH jako bytes, następnie dzielimy to przez 1024 dwa razy, aby przekonwertować na kilobytes, a następnie megabytes. Nasz zestaw wyników będzie wyglądał mniej więcej tak:

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

Jeśli nie zależy nam na wszystkich tabelach w bazie danych, a jedynie na rozmiarze konkretnej tabeli, możemy po prostu dodać AND TABLE_NAME = "your_table_name" do klauzuli WHERE. Tutaj chcemy tylko informacji o tabeli 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;

Wyniki, zgodnie z oczekiwaniami, są teraz:

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

List All Table Sizes From ALL Databases

Jeśli napotkasz problem, w którym Twoja baza danych zwiększa swój rozmiar, ale nie wiesz, która tabela jest winowajcą, użyteczne może być zapytanie o rozmiar wszystkich tabel we wszystkich bazach danych w całym systemie. Można to łatwo osiągnąć za pomocą następującego zapytania:

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;

Zwróci to nie tylko rozmiar tabeli, ale także nazwę tabeli i bazę danych, z którą jest powiązana.

Dodaj komentarz Anuluj pisanie odpowiedzi

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Archiwa

  • styczeń 2022
  • grudzień 2021
  • listopad 2021
  • październik 2021
  • wrzesień 2021

Meta

  • Zaloguj się
  • Kanał wpisów
  • Kanał komentarzy
  • 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