テスト其の弐 〜 データの検索
テスト其の弐 〜 データの検索
今回はデータの検索速度を測定してみます。データは前回のテスト其の壱で使用した表をそのまま検索データとして使用します(データは10万件)。
インデックスなしの全件検索での集計
全件検索時のパフォーマンスを測定します。インデックスがない状態でテストデータ中の数値列(給与)の集計(SUM)を実行し、その速度を測定します。
インデックスを作成しない状態でSUM関数による集計を行うため、全データへアクセスする必要があります。処理は単独のセッションで行い、 SQL*Plus、psqlで実行します。データベースを起動した直後の状態と、数回検索を行なった後の状態のそれぞれを測定してみます。つまり、データ がキャッシュされていない場合とキャッシュされている場合の測定です。
実行したSQL文
select sum(給与) from 社員表;

Oracle、PostgreSQLともに、キャッシュ上にデータが存在していないDB起動直後の場合より、二度目以降のキャッシュされている状態の方が時間が短縮されました。処理コストの大きいディスクI/Oが省略できるため、一般的に処理が高速化されます。
PostgreSQLはどちらの状態でも、Oracleと比較すると多くの時間を必要としています。PostgreSQLに対するOracleの処理時間はそれぞれ20%、7%程度であり、全件検索時の処理速度はOracleの方が高速であると言えます。
データ量に対するキャッシュのサイズは十分に用意しているため、I/Oの差は「起動直後−二度目以降」の差として現れるはずです。起動直後と二度目 以降の差よりも、OracleとPostgreSQLの差の方が大きいことから、検索と集計の処理でのオーバヘッドの差が顕著に現れていると考えることが できます。
さらに言えば、データのフラグメントが進んだ場合、PostgreSQLではデータ格納上の理由により、その悪化がどうしても顕著に現れてしまいます。
バックナンバー
この記事の筆者
1993年某SIベンダへ入社後、Oracle、DB関連のコンサルティング、チューニング、社内案件の技術支援などを10年ほど担当。2004年ミラクル・リナックス株式会社へ入社。
筆者の人気記事
大手ブログ検索サイトがPostgreSQLからOracleへ移行を決断した理由(後編
2006年4月13日 20:00
大手ブログ検索サイトがPostgreSQLからOracleへ移行を決断した理由(前編)
2006年4月5日 20:00
PostgreSQLの適用範囲を考える 〜 管理・運用編
2005年12月1日 20:00
PostgreSQLの適用範囲を考える 〜 ベンチマークテスト
2005年8月12日 20:00
PostgreSQLの適用範囲を考える 〜 更新・削除のパフォーマンス
2005年6月20日 20:00
PostgreSQLの適用範囲を考える 〜 データ検索のパフォーマンス
2005年5月30日 20:00
Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。