ファイルシステム(du -ch
など)からのこれらのサイズ番号、またはクエリからのサイズ番号については言及していません。私は彼らがファイルシステムから来たと推測しています。インポートエラーが発生していない限り、あなたのデータはおそらくOKです。
あなたのSOURCEテーブルにあるを確認してください。それが、あなたのソースがあなたのターゲットよりも大きい理由です。基本的には、行が更新されると、同じデータブロックに収まらなくなり、そのデータブロックが2つに分割され、2つのブロック(ディスク上では16KB、データファイルでは9KB)に空き領域が残ります。 fragmented tables
ため
チェック:使用される総ディスクとの合計空き領域 select ENGINE, TABLE_NAME,Round(DATA_LENGTH/1024/1024) as data_length , round(INDEX_LENGTH/1024/1024) as index_length, round(DATA_FREE/ 1024/1024) as data_free from information_schema.tables where DATA_FREE > 0;
チェック: select sum((DATA_LENGTH + INDEX_LENGTH)/1024/1024) as TTL_MB_USED , sum(DATA_FREE)/1024/1024 as TTL_MB_FREE from information_schema.tables where table_schema='<your schema>';
ソースとターゲットの大きさの違いのアカウントを助けるかもしれません。
私はこの答えはフラグメンテーションを記述するのに優れていることが判明:
https://serverfault.com/a/265885
最初にすべてのあなたは、行が更新されたときにMySQLのテーブルが断片化し得るので、それは正常な状況だということを理解する必要があります。テーブルが作成されると、データ付きのダンプを使用してインポートされ、多くの固定サイズのページにはすべての行が断片化なしで格納されます。可変長の行を更新すると、この行を含むページが2つ以上のページに分割されて変更が保存され、これらの新しい2つ(またはそれ以上)のページには、未使用領域を埋める空白が含まれます。
検索後、ダンプの一貫性(チェックサムのような)をチェックしましたか? –
ありがとう、いいえ、私は何もチェックしませんでした。データベースのやり方がわからない .sqlファイルを手動の書き出しとダンプ(テキストの差分のような)と比較して違いを調べるつもりでした – Rocstar
多少重いです。 'md5sum database_on_server1.sql'と' md5sum database_on_server2.sql'は仕事をします –