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_length を SUM() で集計することで、すべてのデータベースのサイズを簡単に一覧表示できます。定期的にこのクエリを実行してディスク使用量を監視すれば、ストレージ不足の予防やデータベースの最適化に役立てることができます。
-
MySQLのエイリアスでASキーワードは省略できる?使い方を実例付きで解説
MySQLでは、カラムにエイリアス(別名)を付ける際、ASキーワードを明示的に書く方法とASを省略する方法の2通りがあります。どちらの書き方でも同じ結果が得られますが、この記事では実際のSQL文の例を通して、それぞれの使い方と実行結果を詳しく解説します。準備:サンプルテーブルの作成まず、以下のコマンドでテーブルを作成します。mysql> create table DemoTable ( Id int NOT NULL AUTO_INCREMENT PRIMARY KEY, &nbs
-
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引