PostGisとOracle Spatial 11gのパフォーマンス


8

63,000,000ポイントをWKT形式に変換しているときに、Oracle Spatial 11Gのテーブルを更新するとパフォーマンスの問題が発生します。Postgresとも比較しました。PostgresとOracleはどちらも、同じサーバーでホストされている2つの仮想マシンで実行されます。

Postgres:プロセッサ12、RAM 64GB

create table alldata(geom geometry(Point, 4326));
alter table alldata add column wkt4326 varchar(100);
update alldata set wkt4326 = St_AsText(geom) -- 25 minutes

Oracle 11G:プロセッサー12、RAM 40GB、pga + sga =最大8GB

create table alldata(geom sdo_geometry); -- e.g.: SDO_GEOMETRY(2001, 4326, SDO_POINT_TYPE(aLon, aLat, null), null, null)
alter table alldata add (wkt4326 varchar(100));
-- **Did not complete in a hour...** 
update alldatafiltered set wkt4326 = SDO_UTIL.TO_WKTGEOMETRY(geom); 

テーブルの更新中にPostgresがOracleよりも優れているのはなぜですか?Oracleの空間パフォーマンスに影響を与える可能性のある原因はどれですか。

現時点では、空間インデックスを利用していません。


1
この演習の目的は何ですか?パフォーマンスは実際には繰り返されるプロセスの問題であり、これを繰り返す理由がわかりません。UPDATE全表スキャンでは非常に負荷の高い操作です。CREATE TABLE ... ASコンストラクトを使用する必要があります。
ビンス

ここにはGIS固有のものは何もありません。多分、TO_WKTGEOMETRYが遅い、おそらくOracleが作成し、コミットするトランザクションが小さすぎる、または他に最適化できるものがあるでしょう。
user30184 2017

Oracleを使用する場合は、標準版のOracle Locatorと、かなり高速ですが非常に高価なOracleのSpatial Cardridgeとを区別する必要があります。SDO_UTIL.TO_WKTGEOMETRYのような多くのメソッドがJavaで実装されているため、Oracleエクスプレス版(Javaなし)では使用できません。Spatial Cardridgeがないと、これらの方法は解釈されるようです(遅い)。
wumpz 2017

回答:


8

Oracle SpatialとPostgisには、それぞれ長所と短所があります。空間データを処理する間、Postgisは常にOracle Spatialよりも優れています。私は過去2年間Oracle Spatialで働いていましたが、最近PostGISに切り替えましたが、両方で大きなパフォーマンスの違いがありました。

それがはるかに速く実行する理由は、空間データの解析のためです。多くのケーススタディでは、PostGISがOracle Spatialより300%〜400%高速であることが導き出されています。

PostGISはGEOS(Geometry Engine-Open Source)を使用してジオメトリを解析しますが、Oracle Spatialには、GEOSよりも解析が非常に低い独自のジオメトリエンジンがあります。

このケーススタディは、PostGISとOracle Spatialのパフォーマンス比較に非常に役立つことがわかりました。

私の個人的な意見と経験では、オープンソースは常にパフォーマンスの専有物です。


1
PostGISはジオメトリの解析にGEOSを使用しません。これがすべてネイティブのPostGISです。GEOSはPostGISのいくつかのジオメトリ操作に使用されます
NicklasAvén17年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.