Skip to content

Archives

  • 2022年1月
  • 2021年12月
  • 2021年11月
  • 2021年10月
  • 2021年9月

Categories

  • カテゴリーなし
Trend RepositoryArticles and guides
Articles

How to Get the Size of the Table in MySQL

On 12月 17, 2021 by admin

ほとんどのリレーショナルデータベースと同様に、MySQLはデータベース自体に関する便利なメタデータを提供します。 他のほとんどのデータベースではこの情報を catalog と呼んでいますが、MySQL の公式ドキュメントでは INFORMATION_SCHEMA メタデータを tables と呼んでいます。

名称に関係なく、重要なのはこれらの INFORMATION_SCHEMA テーブルが提供する情報です。 views および user_privilieges から columns および tables まで、すべてが INFORMATION_SCHEMA で見つかります。 このメタデータは、システム内のさまざまなテーブルのサイズを実際に抽出するためにクエリできます。

List Table Sizes From a Single Database

公式ドキュメントにあるように、INFORMATION_SCHEMA.TABLES テーブルには約 20 の列がありますが、テーブルが使用するディスク容量を判断するために、特に 2 つの列に注目することにします。

  • DATA_LENGTH はテーブル内のすべてのデータの長さ (またはサイズ) (bytes 単位)、
  • INDEX_LENGTH はテーブルのインデックス ファイルの長さ (またはサイズ) (bytes 単位)、

この情報で武装し、特定のデータベース内のすべてのテーブルと、それぞれのディスク容量 (サイズ) をリストする問い合わせを行うことができます。 さらに、少し気難しくなって、bytes の通常のサイズ値を 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;

この例では bookstore データベースを使って、DATA_LENGTH および INDEX_LENGTH を bytes として組み合わせ、1024 で 2 回分割して kilobytes および megabytes へ変換しています。 結果セットは次のようになります。

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

データベース内のすべてのテーブルについて関心がなく、特定のテーブルのサイズだけが必要な場合は、WHERE 節に AND TABLE_NAME = "your_table_name" を追加するだけでよいのです。 ここでは、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;

結果は予想通り、次のようになりました。

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

List All Table Sizes From ALL Databases

データベースのサイズが大きくなっているが、どのテーブルが原因であるかがわからない場合、システム全体のすべてのデータベース内のすべてのテーブル サイズを照会すると便利な場合があります。 これは、次のクエリで簡単に実現できます。

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;

これは、テーブルのサイズだけでなく、テーブル名と関連付けられた親データベースも返します。

コメントを残す コメントをキャンセル

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

アーカイブ

  • 2022年1月
  • 2021年12月
  • 2021年11月
  • 2021年10月
  • 2021年9月

メタ情報

  • ログイン
  • 投稿フィード
  • コメントフィード
  • 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