6

どのテーブルが最もディスク容量を消費しているかを判断する最も簡単な方法は何ですか?

ハンディキャップ: MySQL サーバーがなく、すべてのデータを含むファイル (dump.sql) しかありません。

4

3 に答える 3

9

MySQL サーバーをダウンロードしてローカルホストにインストールし、ダンプ ファイルをインポートしてから、次を使用することができます。

SELECT   table_schema, 
         table_name, 
         data_length, 
         index_length 
FROM     information_schema.tables
ORDER BY data_length DESC;
于 2010-03-16T09:40:35.577 に答える
1

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オプション付き)のテーブルごとに複数の挿入がある場合、これは機能しない可能性があります。

于 2010-03-16T09:47:47.150 に答える
0

簡単な解決策は、ダンプ内のテーブルごとに次のようなことを行うことです。

cat dump.sql | grep -i '^INSERT INTO `table1`' | wc -c

(Linuxを使用していることを願っています。そうでない場合は、Cygwinをインストールして、WindowsシステムでLinuxコマンドラインの機能の一部を取得できます)

このコマンドは、特定のテーブルのダンプの挿入ステートメントをフィルターで除外し、それらのフィルターされた挿入ステートメントの合計バイト数を出力します。もちろん、挿入ステートメントのサイズは、テーブルに格納されている行のサイズと同じではありませんが、(おそらく)最大のテーブルを決定するだけでよい場合は、適切な概算になる可能性があります。

于 2010-03-16T09:48:27.620 に答える