« ドカベン | Main | 「蘇るPC-9801伝説」 »

2004.03.20

インデックスとパフォーマンス

 データベースの読み取り速度の向上にはインデックスが有効である場合が多いのですが、インデックスを多用しすぎると、更新系処理のパフォーマンス低下につながる場合が多い・・・ってのは有名な話ではあります。
 で、実際、インデックスを増やすとどの程度パフォーマンスに影響があるのかを調べてみました。実際のアプリの一部分を抜き出して簡単なベンチマーク用のツールを作成し(1トランザクション当たり平均10レコードをDELETEしてINSERTする処理を500〜1000回繰り返し×数回)、インデックスが1個の場合と6個の場合と十数個の場合とで実験。

 結果:1トランザクションあたりの所要時間に特に変化なし

 もともとの1トランザクションあたりの処理時間が100msec程度で、処理するレコード数も10前後だったためこのような結果になっただけで、処理内容や、あるいはDBの種類が変わっただけでも全然違った結果が得られる可能性はありますが、数個程度ならあまり問題とならない場合もあるようで。っていうか、何事も「やってみなければ結果はわからない」ってことでしょうか(笑)。まぁ、元が100msの場合、5ms変化しただけで5%の違いになってしまいますが、この場合、時間測定の誤差も含めると非常に微妙なところですか。

 1つのテーブルに20個くらいのインデックスを作成すると、明らかに更新系のパフォーマンスが低下したという話を聞いたことがありますが、だとすると、数個のインデックスでは特に影響はない可能性も大ですね。

 現実の開発においては、インデックスを作成したことによる更新系パフォーマンスへの影響と、参照系パフォーマンスへのメリットとのバランスも重要になってくるので、充分に検討する必要はあるものの、極端にインデックスを作りすぎたりしなければメリットが上回る場合も多々ありそうです。

|

« ドカベン | Main | 「蘇るPC-9801伝説」 »

DB」カテゴリの記事

Comments

Post a comment



(Not displayed with comment.)


Comments are moderated, and will not appear on this weblog until the author has approved them.



TrackBack

TrackBack URL for this entry:
http://app.cocolog-nifty.com/t/trackback/3959/328744

Listed below are links to weblogs that reference インデックスとパフォーマンス:

« ドカベン | Main | 「蘇るPC-9801伝説」 »