mysql のコマンドで、テーブルのバイト数を調べることはできるのでしょうか?


select バイト数 from テーブル名 のようなことができるような気がします。

回答の条件
  • URL必須
  • 1人2回まで
  • 13歳以上
  • 登録:2010/08/31 19:40:46
  • 終了:2010/09/07 19:45:03

回答(3件)

id:chuken_kenkou No.1

chuken_kenkou回答回数722ベストアンサー獲得回数542010/08/31 20:01:22

ポイント27pt

「テーブルのバイト数を調べる」というのは、実際にテーブルのデータやインデクスの格納のため、どれくらいハードディスクを占有しているかということでいいのでしょうか?

ストレージエンジンによる違いや、情報がどのタイミングで反映されるかといったことがあるかと思いますが、一つの方法としては次のような方法で得ることができます。


SQLで得たいということなら、MySQL 5.0以降であれば、information_schema.tables表を検索

MySQL :: MySQL 5.1 リファレンスマニュアル :: 21.2 INFORMATION_SCHEMA TABLES テーブル


SHOW文でいいなら、SHOW TABLE STATUS

MySQL :: MySQL 5.1 リファレンスマニュアル :: 12.5.4.27 SHOW TABLE STATUS 構文

id:tknrych No.2

tknrych回答回数84ベストアンサー獲得回数82010/08/31 20:18:40

ポイント27pt

スキーマ情報を取得したいということですよね。以下の方法で可能だと思います。

show table status from DB名 like 'テーブル名';

もしくは、

select DATA_LENGTH from INFORMATION_SCHEMA TABLES where like 'テーブル名';

これを実行すると、Data_lengthというカラムを取得できます。そこに、テーブルのサイズがバイトで格納されています。

http://dev.mysql.com/doc/refman/5.1/ja/tables-table.html

id:windofjuly No.3

うぃんど回答回数2625ベストアンサー獲得回数11492010/08/31 21:14:59

ポイント26pt

【1】情報スキーマ

MySQL5以降は情報スキーマを使って必要な情報だけを取得でき便利になっています

http://dev.mysql.com/doc/refman/5.1/ja/partitions-table.html

DATA_LENGTH:この分割あるいはサブ分割に保存されたすべての行の全長でバイトで表します。― つまり分割およびサブ分割に保存されたバイトの総数です。

SELECT Data_length,Index_length FROM information_schema.tables WHERE table_name = 'テーブル名';

【2】専用のコマンド

無関係の情報まで出てきますので情報スキーマよりも使い勝手は劣りますが、

古いバージョンでも使えますし、ちょっと使うだけなら便利です

SHOW TABLE STATUS LIKE 'テーブル名検索パターン';

情報スキーマの場合はフィールド名に違いがあるため置き換える場合は下記のような具合になります

SELECT 
TABLE_NAME Name,
Engine, Version, Row_format,
TABLE_ROWS Rows,
Avg_row_length, Data_length, Max_data_length, Index_length, Data_free, Auto_increment, Create_time, Update_time, Check_time,
TABLE_COLLATION Collation,
Checksum, Create_options,
TABLE_COMMENT Comment
FROM information_schema.tables WHERE table_name LIKE 'テーブル名検索パターン';

コメントはまだありません

この質問への反応(ブックマークコメント)

トラックバック

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません