2003年 8月 1日 | パイプライン 機能 | >> 目次 (テーマ ごと) |
論理 I/O (プログラム が出す I/O) を削減するために、パイプライン 機能 (pipeline) を搭載している RDB もある。 パイプライン 機能は 「非同期更新」 の一種であるが、トランザクション 単位に更新する パフォーマンス に比べても、ほとんど、タイムラグ を置かない更新であり、複数の更新 トランザクション を 1 回の物理 I/O で済ますのだから、パフォーマンス は良い。通常、100 回の論理 I/O を 1 回の物理 I/O に変換するが、100 という数値は変更することができる。
100 という数値を高くすればするほど、メモリー のなかで ホールド する タイムラグ が大きくなるし、ログ・ファイル に対する書き込み (ログ・ファイル の大きさ) も考慮しなければならないので、数値を大きくすればするほど パフォーマンス が良くなるという訳ではない。 当然ながら、メモリー のなかに ホールド する数値に達する以前に、ジョブ が終了したり、ログ・ファイル の スピル (spill) が実行されたなら、ホールド の数値に達していなくても、パイプライン 機能は完結して、ログ・ファイル、データ・ファイル および インデックス・ファイル に対して、順次、書き込みがおこなわれる (ちなみに、書き込みの順序に注意されたい)。 メモリー のなかに ホールド する トランザクション の数が増えれば増えるほど、停電 (あるいは、瞬停、電圧の変動など) に対する危険性が高くなるので、無停電装置を導入していないのであれば、パイプライン 機能をむやみに使うのは危険である。
パイプライン 機能を搭載した RDB を使うときに考慮したい点は、「更新 (UPDATE) の パフォーマンス を高める パラメータ は用意されているが、読み込み (READ) の パフォーマンス を高める パラメータ はない」という点である。 したがって、RDB の高 パフォーマンス を実現するためには、更新 (UPDATE) では 「ADD-only」 を使い、読み込み (READ) では 「INDEX-only」 を使う、というのが当然の配慮である。 |
<< もどる | ベーシックス | すすむ >> | |
データベースの基礎知識 |