|
|
||||||||||||||||||||
|
||||||||||||||||||||
|
||||||||||||||||||||
| 1 2 次のページ | ||||||||||||||||||||
| 基本能力を比較してみる | ||||||||||||||||||||
|
||||||||||||||||||||
|
ベンチマークというとすぐに結果の数値のみを見て判断してしまいがちですが、ある限られた環境下でのテスト結果に過ぎない、という事を忘れないで下さい。特にデータベースを用いたアプリケーションの場合、性能差はデータやアプリケーションに依存する割合が高く、サーバ側の性能のみで論じられるほど簡単ではない事がほとんどです。 実際のところは、現実に即した環境下でアプリケーション、データを揃えた上でテストしなければそのシステムに対する比較データを得る事はできません。 システムやアプリケーションによる総合的なテストは本来の環境で自ら確認していただくとして、ここではもっと単純な素の部分でOracleとPostgreSQLを比較してみたいと思います。 |
||||||||||||||||||||
| テスト環境 | ||||||||||||||||||||
|
どこにでもあるPCにMiracle Linux V3.0をインストールし、OracleとPostgreSQLをインストールしてあります。環境は細かく示してもあまり意味はないのであえて記述しませんが、1CPU、1.5GB Memory、IDEハードディスク1台、の環境です。 メモリ上のバッファサイズなどはPostgreSQL、Oracleで共通になるよう調整しました。 |
||||||||||||||||||||
| テスト(1) 〜データの登録〜 | ||||||||||||||||||||
|
最初はデータ登録です。データを大量に登録するだけの場合の速度を比較します。最初は地道にinsertを繰り返す単純な操作の場合です。 |
||||||||||||||||||||
![]() 表1:10万件insert実行時の速度 |
||||||||||||||||||||
|
表データは数値型の列が4つ、文字型の列が3つで計116byteの可変長で登録したデータは60〜70%程度のデータを作成しています。インデックスなしの場合、OracleとPostgreSQLの差は4%程度であり、ほとんど差はないといえます。 インデックスは数値型列の3つに作成され、その内の1列が主キー索引です。全て数値型列の索引であった為、索引の有無がそれほど大きな負荷とはならなかったようです。PostgreSQLで10%、Oracleで5%ほどの差でしかありません。 実際に大量データを一度に登録する場合、insert文を繰り返すのではなく、OracleならばSQL*Loader、PostgreSQLならばcopy … fromを用いる方が一般的かも知れません。 |
||||||||||||||||||||
![]() 表2:Oracle SQL*Loader使用時の例 |
||||||||||||||||||||
|
OracleでSQL*Loaderを用い、同一データをロードした場合、insert実行時の4%程度で登録できました。directモードならばさらに短縮できます。テスト環境が、ディスクI/Oに余裕が無くメモリには余裕がありバッファを大きく取ったこともあって、ここまで大きな差となって結果が現れました。 |
||||||||||||||||||||
![]() 表3:PostgreSQLで copyコマンドを使用した場合 |
||||||||||||||||||||
|
こちらも5%に満たない実行時間で処理を終えることができました。OracleのSQL*Loaderと比較してもほとんど差はありませんが、データ量が増加した場合はOracle(特にdirect=Trueの場合)との差が広がる傾向にあります。 ただ、アプリケーション開発の現場で使用される割合はおそらくそれほど高くはないでしょう。これらを使用する場合、どうしても作成する環境から一旦はなれてコマンドを呼び出すという工夫が必要であったり、クライアント側では(別途インストールしないと)実行できないという面もあったりします。 さらには独立したコマンドとは関係するデータとの連携がとり辛いことがネックになり、結局はinsertの繰り返しというパターンを何度も目にしてきました。 総じて、ツールにはその実装の違いもあって差が出る場合もありえますが、データの登録処理についてはPostgreSQLとOracleでは大きな差は出ないという結果でした。特に実用上最も使用頻度が高いinsert文のレベルではほぼ同じパフォーマンスを発揮できていたと言えます。 |
||||||||||||||||||||
|
1 2 次のページ |
||||||||||||||||||||
|
|
||||||||||||||||||||
|
|
||||||||||||||||||||
|
||||||||||||||||||||
|
|
||||||||||||||||||||
|
||||||||||||||||||||
|
|
||||||||||||||||||||
|
||||||||||||||||||||
|
|
||||||||||||||||||||




