メインコンテンツへスキップ
  1. ブログ/

【初心者向け解説】MySQLのデータベース容量を測る方法

·
データベース MySQL
目次

初めに
#

MySQLにて「このデータベースのサイズってどれくらいかな?」と思ったことはありませんか?

インフラエンジニアにとってコンテンツ領域となるデータベースのサイズ(容量)は意識の外になりがちですが、実はシステム運用に欠かせない重要な情報のひとつとなっております。

特に以下のようなケースでは、データベース容量の確認はとても重要な情報となります。

  • サーバーのディスク使用量が逼迫している
  • 定期的なバックアップの対象を見直したい
  • 負荷対策としてパフォーマンス改善を行いたい

MySQLに接続
#

初めにデータベースへのログインを行います。

サーバーへSSH接続を行ってください。

次に以下のコマンドを利用しデータベース(MySQL)へログインを行ってください。

mysql -u ユーザー名 -p

MB単位での計算
#

MySQLでは、データベースのメタ情報を管理する information_schema というシステムデータベースが存在します。

この中の tables テーブルを参照することで、サイズを取得することができます。

注意点として確認にはinformation_schema対する参照権限(SELECT権限)が必要となります。

MB(メガバイト)単位での計算する場合は以下のsqlにて確認可能となっております。

SELECT 
  table_schema, 
  SUM((data_length+index_length)/1024/1024) AS MB
FROM 
  information_schema.tables 
GROUP BY 
  1;

このクエリは、各データベースの データ領域(data_length)とインデックス領域(index_length を合計し、データベース単位での合計値をMB換算し出力しています。

MBでの出力例
#

以下はMBでの結果の例となります。

+--------------------------+------------+
| table_schema             | MB         |
+--------------------------+------------+
| information_schema       | 0.65625000 |
| mysql                    | 2.32812500 |
| performance_schema       | 0.00000000 |
| sample_database          | 10.3437500 |
| another_database         | 5.12500000 |
| test_database            | 1.12500000 |
+--------------------------+------------+

上記の結果では「sample_database」データベースは「10MB」、「test_database」データベースは「1MB」となっていることが確認できます。

値の補足
#

  • data_length:テーブルに格納されている実データのバイト数
  • index_length:そのテーブルに定義されているインデックスのサイズ

GB単位での計算
#

ディスク使用量が数GBを超える大規模なデータベースでは、MB単位の表示は桁数が多く視認性が低下します。

そのような時は、GB単位でデータベース容量を計算し表示するのがオススメとなります。

先ほど紹介したsqlのSUM内で「/1024」を追加することでGB単位での計算ができます。

SELECT 
  table_schema, 
  SUM((data_length+index_length)/1024/1024/1024) AS GB
FROM 
  information_schema.tables 
GROUP BY 
  1;

GBでの出力例
#

以下はGBでの結果の例となります。

+--------------------------+---------------+
| table_schema             | GB            |
+--------------------------+---------------+
| information_schema       | 0.00064373016 |
| mysql                    | 0.00227355957 |
| performance_schema       | 0.00000000000 |
| sample_database          | 0.00997161865 |
| another_database         | 0.00498008728 |
| test_database            | 0.00108718872 |
+--------------------------+---------------+

注意点
#

データベースの容量を確認する際には、いくつか注意しておくべきポイントがあります。

まず、容量の取得に利用している information_schema.tables は、リアルタイムで完全に最新の情報を反映しているとは限りません。

MySQLのバージョンや設定によっては、情報の更新に遅延が発生することがあります。

また、情報を取得するためには、**MySQLユーザーに適切な権限(とくに SELECT 権限)**が付与されている必要があります。

さらに、performance_schemainformation_schema といった特殊なデータベースについては、仕様上、容量がゼロとして表示される場合があります。

関連記事

MySQLでクエリログの出力設定を有効化する方法
データベース MySQL
LinuxでIPアドレスを確認する方法
Linux コマンド
【初心者向け解説】AlmaLinuxでOSバージョンを確認する方法
Linux コマンド
Linuxの権限(パーミッション)を数字で表示する方法
Linux Bash
Linuxで指定した日から何日経過したか計算する方法
Linux コマンド
【初心者向け解説】SELinuxの状態を確認する方法
Linux SELinux セキュリティ