どのテーブルが最もディスク容量を消費しているかを判断する最も簡単な方法は何ですか?
ハンディキャップ: MySQL サーバーがなく、すべてのデータを含むファイル (dump.sql) しかありません。
MySQL サーバーをダウンロードしてローカルホストにインストールし、ダンプ ファイルをインポートしてから、次を使用することができます。
SELECT table_schema,
table_name,
data_length,
index_length
FROM information_schema.tables
ORDER BY data_length DESC;
Linuxを使用している場合は、ダンプファイルをスキャンして最長の行を探すことができます。これは、インデックスや構造などによっては最大のテーブルになる場合がありますが、できない場合は適切な推測になります。サーバーを起動します。
awk ' { if ( length > L ) { L=length ;s=$0 } }END{ print L,"\""s"\"" }' /root/sql/_common.all.301009.sql | cut -c 1-100
これにより、最長行の最初の100文字が表示されます。--extended-insert
たとえば、ダンプファイル(または--opt
オプション付き)のテーブルごとに複数の挿入がある場合、これは機能しない可能性があります。
簡単な解決策は、ダンプ内のテーブルごとに次のようなことを行うことです。
cat dump.sql | grep -i '^INSERT INTO `table1`' | wc -c
(Linuxを使用していることを願っています。そうでない場合は、Cygwinをインストールして、WindowsシステムでLinuxコマンドラインの機能の一部を取得できます)
このコマンドは、特定のテーブルのダンプの挿入ステートメントをフィルターで除外し、それらのフィルターされた挿入ステートメントの合計バイト数を出力します。もちろん、挿入ステートメントのサイズは、テーブルに格納されている行のサイズと同じではありませんが、(おそらく)最大のテーブルを決定するだけでよい場合は、適切な概算になる可能性があります。