mysql:14353
From: Yasufumi Kinoshita <Yasufumi Kinoshita <kinoshita.yasufumi@xxxxxxxxxx>>
Date: Thu, 24 Jan 2008 12:39:24 +0900
Subject: [mysql 14353] Re: InnoDBテーブルのテーブルスペース容量計算
木下と申します。。。 私自身4.0以前は利用したことが無いので、正確な原因は分りませんが、 Data_lengthが見積もりよりもかなり大きくなってしまう主な原因は、 レコードを主キーに対してランダムな順番で挿入しているからだと思います。 InnoDBにおける表の構造は主キーの索引構造になっていますので、 ランダムな順番での挿入はフラグメンテーションが多発してしまい、 Data_lengthは無用に大きくなってしまいます。 また、挿入自体の性能も索引構造の更新やレコードの再配置なども伴うため、 良くありません。 ALTER TABLE test ENGINE=InnoDB; ANALYZE TABLE test; とデフラグすると、SHOW TABLE STATUSの結果が変わりませんか? (参考) www.mysqlperformanceblog.com/files/presentations/UC2007-Innodb-Performance-Optimization.pdf また、必要容量計算ですが、 このように表自体が索引の構造なので、厳密に正確にサイズを見積もるのは難しいです。 さらに管理作業のためにデータファイルの容量が余計に必要になります。 例えばALTER TABLE(上記も該当)では表の作り直しが発生するので、少なくとも対象となる表が 収まる程度の空き領域が必要です。 Kinoshita wrote: > MySQL MLの皆様 > > 木下と申します。 > > MySQLを用いたシステム構築を行っているのですが、 > DBを置くディスク容量を正確に把握する必要に迫られています。 > 情報をお持ちの方おられたら教えていただけないでしょうか? > > 【質問】 > > MySQL4.0 の InnoDB テーブルのテーブルスペース容量計算は > どのように行うのでしょうか? > > データ部に関して、各カラム型に必要な記憶容量からレコードサイズを > 計算しましたが、実際にデータを入れると、show table status で見た > Data_length は、計算値よりもかなり大きくなります。 > > また、インデックス部に関して、容量計算方法がドキュメントに見当たらず、 > どのように行うものでしょうか? > > > テストの詳細を以下に記します。 > > -------------ここから------------- > > ●環境 > OS : RedHatEnterpriseLinux3.0 Update3 > MySQL : 4.0.17 > > ●内容 > 以下のようなテーブルを作成する > create table test ( > column1 varchar(20) BINARY NOT NULL, > column2 varchar(16) NOT NULL, > column3 int NOT NULL, > column4 varchar(15) NOT NULL, > column5 int NOT NULL, > column6 int NOT NULL, > PRIMARY KEY ( column1, column2, column3, column4 )) type=InnoDB; > > varcharのカラムが最大なデータを256万件登録 > $ mysql testDB -e "LOAD DATA INFILE 'data.csv' INTO TABLE > test fields terminated by ',' lines terminated by '\n';" > > レコードサイズは 21+17+4+16+4+4 = 66 > 容量は66 x 256万 = 168,960,000 と想定 …(A) > > 実際のshow table statusの結果 > Rows Avg_row_length Data_length > 2,544,922 98 251,658,240 …(B) > > (A)に比べ(B)の値がかなり大きい。 > > > -- > S.Kinoshita > shige_chan@xxxxxxxxxx >
14352 2008-01-23 23:30 [Kinoshita <QZT05560@] InnoDBテーブルのテーブルスペース容量計算 -> 14353 2008-01-24 12:39 ┗[Yasufumi Kinoshita <] 14356 2008-01-26 01:42 ┗[Kinoshita <QZT05560@] 14359 2008-01-31 00:07 ┗[IIDAYUICHI <y_iida@x]