MySQLから DBサイズ、テーブルサイズ など確認する裏ワザ(?)

MySQLで次みたいな場面に遭遇。

  • テーブルサイズを知りたい
  • DB全体のサイズを知りたい

SSHとか使えるならコマンドで確認可能。

でも SQLクエリ から直に確認できる方法 もあるんですよね。

その方法が結構便利だったんで、
ここではMySQLかたテーブル・DBサイズを調べる方法をまとめます。

DB全体のサイズを調べるSQLの書き方

まずはDB全体のサイズを「●●MB」とか調べるやり方について。

それには information_schema テーブルを参照すれば分かります。

 

たとえば以下の2つのDBがあるとしましょう。

  • my_app
  • information_schema

自分で作ったのが my_app というデータベース。

一方の information_schema というDBについて。

これはメタ情報(テーブルとかプラグイン情報)を記録するDBみたいです。

 

これらのDBサイズを調べるSQLは以下の通り

▼ このSQLをそのままコピペでOK

このSQLで大事なポイントは次の2つ

  • SUMからデータ合計を計算
    ここでは各DBサイズをの SUM((data_length+index_length)/1024/1024)  でMB単位で計算している。もしGB単位で表示したいなら /1024/1024/1024  で割ればOK
  • 同じDBに属するテーブルをグループ化
    同じDBに属するテーブルは table_schema  カラムの値がDB名になってて共通。そのため GROUP BY 1  することで同じDBに属するテーブルをまとめられる

テーブルのメタ情報を元に、DB全体のサイズを求められる訳です。

 

そして、このクエリを実行した結果がコチラ

table_scheme MB
my_app 0.27925396
information_scheme 0.00976560

もし使用量が多いなら、GBとかで表示するほうが見やすいかも

 

ちなみに特定DBのみ表示したいなら・・・

次みたいにデータベース名で絞り込みすればOKです。

▼ my_appという名のDBだけサイズ計算

ただしグループ化だから、 HAVING  のあとに条件を指定する必要あり

テーブルサイズ(容量)を計算するクエリの書き方

お次はテーブルサイズの調べ方について

コチラも information_schema から簡単に取得できます。

 

たとえば my_app というデータベースがある場合。

その中の各テーブルのサイズを調べるSQLがコチラ

ここでも MB単位 でサイズ表示する設定にしてます。

 

その結果は例えばこのような感じ

table_name MB
sql.php?table=hoge 0.01
sql.php?table=fuga 0.24
sql.php?table=piyo 0.08

なんか sql.php?table= みたいな表示が自分の環境では出ました。

そのあとがテーブル名なんですが、なんか見にくい(困)

まあサイズさえ分かれば結果オーライです。

ちなみにPHPからディスク使用量を調べるには

関連してるので、ついでに紹介

PHPによるディスク使用量の調べ方についてです。

▼ PHPでディスク使用量を調べる現実的な2つの方法

知りたい方は上記事をご覧ください。

2つの方法があって、それぞれ用途が違います。

ここまでのまとめ

ということで、次の2つのやり方の紹介でした。

知ってると意外と役に立つかもしれません。ではまた

Commentsこの記事についたコメント

コメントを残す

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

CAPTCHA


このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください