MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

MySQLの全データベースのサイズを一括で確認する方法

はじめに

MySQLサーバー上に存在するすべてのデータベースのサイズを一度に把握したい場面は多くあります。ディスク容量の管理やパフォーマンスの調査、不要なデータベースの特定などに役立ちます。この記事では、information_schema を活用して、全データベースのサイズを一覧表示するSQL文を紹介します。

すべてのデータベースサイズを取得するSQL文

以下のクエリを実行すると、各データベース名とその合計サイズ(MB単位)を確認できます。

mysql> SELECT table_schema "Database",
    -> SUM(data_length + index_length)/1024/1024 "Size in MB"
    -> FROM information_schema.TABLES GROUP BY table_schema;

実行結果の例

+--------------------+----------------+
| Database           | Size in MB     |
+--------------------+----------------+
| gaurav             | 1.04785156     |
| information_schema | 0.00878906     |
| mysql              | 0.68551350     |
| performance_schema | 0.00000000     |
| sample             | 0.04687500     |
| tutorial           | 0.03125000     |
+--------------------+----------------+

6 rows in set, 1 warning (0.33 sec)

クエリの仕組み

このクエリがどのように動作しているのか、ポイントを解説します。

information_schema.TABLESとは

information_schema は、MySQLサーバー内のテーブルやデータベースに関するメタ情報(統計情報)を格納する特殊なスキーマです。TABLES テーブルには、各テーブルのデータ長やインデックス長などの情報が記録されています。

data_length と index_length

  • data_length: テーブルの実際のデータが占めるバイト数
  • index_length: インデックスが占めるバイト数

この2つを合計することで、1つのテーブルが消費している総容量を算出できます。

SUM()とGROUP BYによる集計

GROUP BY table_schema を指定することで、テーブル単位ではなくデータベース(スキーマ)単位でサイズが集計されます。さらに、/1024/1024 と除算することで、バイト値をメガバイト(MB)に変換しています。

応用:サイズの大きい順に並べ替える

容量を多く消費しているデータベースから順に確認したい場合は、ORDER BY 句を追加します。

mysql> SELECT table_schema "Database",
    -> ROUND(SUM(data_length + index_length)/1024/1024, 2) "Size in MB"
    -> FROM information_schema.TABLES
    -> GROUP BY table_schema
    -> ORDER BY SUM(data_length + index_length) DESC;

ROUND() 関数を使えば、小数点以下の桁数を揃えて見やすく表示できます。

まとめ

MySQLでは、information_schema.TABLES を参照し、data_length + index_lengthSUM() で集計することで、すべてのデータベースのサイズを簡単に一覧表示できます。定期的にこのクエリを実行してディスク使用量を監視すれば、ストレージ不足の予防やデータベースの最適化に役立てることができます。

  1. MySQLのエイリアスでASキーワードは省略できる?使い方を実例付きで解説

    MySQLでは、カラムにエイリアス(別名)を付ける際、ASキーワードを明示的に書く方法とASを省略する方法の2通りがあります。どちらの書き方でも同じ結果が得られますが、この記事では実際のSQL文の例を通して、それぞれの使い方と実行結果を詳しく解説します。準備:サンプルテーブルの作成まず、以下のコマンドでテーブルを作成します。mysql> create table DemoTable     (     Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,  &nbs

  2. MySQLクエリでIF文を使う正しい方法を徹底解説

    MySQLのクエリ内で条件分岐を行いたい場合、IF関数を使用します。SELECT文の中にIFを組み込むことで、条件の結果に応じて異なる値を返すことができます。IF関数の基本構文MySQLクエリにIFステートメントを挿入するには、以下の構文を使用します。SELECT yourColumnName, IF(yourCondition, yourStatement1, yourStatement2) FROM yourTableName;IF関数は3つの引数を取ります。第1引数(yourCondition):評価される条件式第2引数(yourStatement1):条件がTRUEの場合に返す値第3引