3

次のようなスキーマを持つテーブルがあります。

id int(10) PK,
fk_id int(10) FK,
c3 int(10),
c4 timestamp,
c5 tinyint(3),
c6 varchar(50) latin1_swedish_ci,
c7 tinyint(3),
c8 tinyint(3),
c9 tinyint(1)

現在、このテーブルには 10,000 レコードがあり、そのサイズは 1.8 MB であり、MYSQL によると、インデックスのサイズは 0.3 MB、データのサイズは 1.5 MB です。

しかし、フィールドされた c6 のすべてのレコードは、ほぼ 10 または 15 文字の長さの文字列であり、最大受信サイズを計算すると、次のようになります。

(4+4+4+4+1+15+1+1+1)*10000 = 350KB

ただし、データサイズは 1500 KB です。今、なぜこのテーブルのサイズが急速に拡大しているのか混乱しており、この違いの理由がわかりません。MYSQL が間違ったデータ サイズを表示している可能性はありますか? それともインデックスサイズとデータサイズの組み合わせが間違っているのでしょうか? または他の理由?

私は本当に混乱しています、あなたの助けに感謝します.

4

1 に答える 1

1

私が提案する最初のことは、テーブルを最適化することです

OPTIMIZE TABLE mytable  

InnoDBにはいくらかのオーバーヘッドがあると思います。ここを参照してください:

http://dev.mysql.com/doc/refman/5.5/en/innodb-physical-record.html

しかし、あなたが示したほどではありません。特にそのテーブルに頻繁に挿入と更新を行う場合は、断片化と未使用のスペースがある可能性があります。テーブルを最適化すると、そのスペースが再利用されます。

于 2012-12-26T16:03:24.747 に答える