mysql:5609
From: "Takayuki Matsukawa" <"Takayuki Matsukawa" <matukawa@xxxxxxxxxx>>
Date: Mon, 10 Jun 2002 19:41:20 +0900
Subject: [mysql 05609] (質問)インデックスファイルサイズについて
松川と申します。
現在、映像データベースをMySQLで実現するために評価を行なっています。
映像データを繰り返し上書き記録するような運用を想定していて、これに合わせて
メタデータも更新していきます。
このとき、メタデータの更新に対してMySQLのテーブルファイルがどのように変化
するかを見るために以下のようなテストをしました。
テスト:
インデックスを使った適当なテーブルを作り、これに対してテーブルサイズ
(レコード数)を一定に保ったまま、データを更新(UPDATE)する。
テーブル型・・・MyISAM、 MySQLバージョン・・・3.23.41
結果、インデックスファイル(.MYI)のサイズは増加しつづけましたが、あるサイズ
で飽和し、それ以上は増えないようです。
質問:
(1) MyISAMでは、テーブルサイズを一定に保った状態で繰り返しデータ更新すると、
インデックスファイルのサイズは無限に増加するものなのでしょうか?
それとも、MAX値があるのでしょうか?
(2) MAX値があるとすると、これを算出する計算式があるのでしょうか?
(レコード数、インデックスキーのデータサイズ等をパラメタとして)
以上、よろしくお願いします。
テストの詳細を以下に記します。
-------------ここから-------------
●環境
OS:RedHat7.2
MySQL:3.23.41
●内容
以下のようなテーブル「test」を作成し、
create table test (
id int not null primary key,
dat int,
index(dat)
);
1万件のデータを挿入しました。
ただし、id は 1~10,000まで昇順に並んでいます。
この時点での各ファイルのサイズは以下のとおりです。
-rw-rw---- 1 mysql mysql 90000 6月 6 15:07 test.MYD
-rw-rw---- 1 mysql mysql 177152 6月 6 15:07 test.MYI
-rw-rw---- 1 mysql mysql 8572 6月 6 15:07 test.frm
この1万件のデータに対して、以下のSQL文で5,000,000回データ更新を行ないま
した。
update test set dat=:dat where id=:id;
ここで、:id は 1~10,000の間で値をとる乱数である。
:dat は 適当な数値。
各ファイルのサイズは以下のようになりました。
-rw-rw---- 1 mysql mysql 90000 6月 6 17:35 test.MYD
-rw-rw---- 1 mysql mysql 257024 6月 6 17:35 test.MYI
-rw-rw---- 1 mysql mysql 8572 6月 6 15:07 test.frm
さらに、5,000,000回データ更新を行なってもファイルサイズは変わりませんでし
た。したがって、インデックスファイル test.MYI は 257024Byteで飽和している
と推測しています。
-------------ここまで-------------