2016-09-12 4 views
0

私はMariaDBを使用しています。10.1.16同じデータのデータファイルサイズの違いは?

今回はとても簡単です。オラクルから

データを選択し、MariaDBに負荷INFILEデータコマンドを使用していることcsvファイル ロードを行います。 DBエンジンはInnoDBです。

データ行数は6497641です。 両方のテーブルが同じクエリで作成されます。 PKはauto_incrementおよびint型です。

...

  1. TABLE1によって作成された行 - ロードINFILEデータ...
  2. TABLE2 - ... TABLE1 SELECT * FROM TABLE2に

サイズを挿入のテーブルは以下の通りです。

  1. TABLE1 - 3.3GBytes
  2. TABLE2 - mysql.innodb_table_statsで1.9GBytes

内容は以下の通りです。

  1. TABLE1:n_rows(5438171)、clustered_index_size(196096)、sum_of_other_index_sizes(12853)
  2. TABLE2:n_rows(6407131)、clustered_index_size(106048)、sum_of_other_index_sizes(12273)

私は、ファイルのサイズが異なる理由を知りたいと思います。

ありがとうございました。

+0

ここにあなたがhttp://dba.stackexchange.com/questions/tagged/mysqlに尋ねるところです。それに固執して作業しないでください! :p – Drew

+0

ありがとう@ドリュー。今私の質問の答えを探しています。 – Asker

答えて

1

行の順序は大きな違いがあります。データが挿入されるときにPRIMARY KEYでソートされると、ブロックはほぼ完全にパックされます。行がランダムにソートされた場合、最終結果は約69%いっぱいのブロックになります。これはBTreeに挿入する性質です。

n_rowsはちょうど近似値であり、したがって一貫性のないカウントです。他の値のペアは、16KBブロックの正確な数です

PKはデータと「クラスタ化されている」ため、clustered_index_sizeはデータのサイズに加え、PK上のBTreeのオーバーヘッドになります。オーバーヘッドや無駄なスペースを(上記のように)プラスします。

+0

私は '自動インクリメント' 'int型' PKを使用します。私は、データの順序は重要ではなく、PKは自動的に添付されることを期待しています。 – Asker

+0

どのようにデータをダンプしましたか?おそらく、PKの_values_はそのままです。しかし、dump_の行の_order_は必ずしもPK順ではありません。 –

+0

csvファイルを作成する人は、シーケンシャル番号を使用していないことを教えてください。私はあなたの返信に基づいて新しいクエリをテストします。 シーケンシャルPK列を持つcsvファイルを作成してテストします。 ファイルサイズが以前より小さくなっています。私はCSVファイルが連続番号を持っていないことを知らない。ありがとうございました。 :) – Asker

関連する問題