HOTの効果 (3)
VACUUM不要!? - DBT-1 -
さて、今度はDBT-1での測定結果を見て行きましょう。DBT-1は参照処理がメインであるため、DBT-2ほどダイレクトに性能差は見られません(とはいえ、8.3ではLIKE検索性能の向上なども行われているため、LIKE検索を比較的多用するDBT-1では10%~の性能向上が見られました・・)。今回はHOTがテーマですので、それに関連するデータを見てみます。
DBT-1の処理の特徴の一つとして、商品データを格納しているitemテーブルへの大量の更新と参照が集中する、といったことが挙げられます。つまり、itemテーブルにガベージが発生しやすく、また参照処理がその影響を受けやすいということになります。これが、HOTの有無でどうなるのかを調べてみましょう。
DBT-1でPostgreSQLの8.2.5と8.3.0で12時間の測定をします。この時、本来であれば定期的にガベージ掃除のためのVACUUMが必要なのですが、これを敢えてせずに実施します。なお、PostgreSQL8.3からは、autovacuumという自動で然るべきタイミングにVACUUMを実施してくれる機能がデフォルトで有効になりましたが、これも無効にしています。まずは測定時間開始からのレスポンスタイムの変化を見てみます(図4)。Search-results インタラクションのレスポンスタイムを基準としました。Search-results インタラクションとは、DBT-1から発行される14のインタラクション(トランザクション)の一つで、特に重い検索処理を実施します。
- 図4. 8.2.5(青)と8.3.0(赤)のDBT-1測定のレスポンスタイム変化
8.2.5は見事に線形に性能が落ちていますが、8.3.0は非常に安定したレスポンスを見せています。では、itemテーブルには一体どれくらいのガベージが発生していたのでしょうか?時系列にガベージ量をプロットした結果を比較してみましょう(図5)。
- 図5. 8.2.5と8.3.0のガベージ発生量(上)と8.3.0のガベージ発生量のみ(下)
8.2.5では、最終的に25万レコード分のガベージが蓄積されましたが、8.3.0ではわずか450という結果でした。HOTの効果の凄さが分かります。HOTのガベージ自動回収のおかげで、VACUUM無しでも安定して運用できています。autovacuumと組み合わせれば、ほぼメンテナンスフリーな運用が可能となりますね。ちなみに、8.2.5でもしっかりとVACUUMを実施していれば安定した性能を見せてくれますのでご安心下さい(図6)。
- 図6. 8.2.5のVACUUMを実施しながらを行ったDBT-1測定のレスポンスタイム変化