Performances PostGis vs Oracle Spatial 11g

8

J'ai un problème de performances lors de la mise à jour d'une table dans Oracle Spatial 11G lors de la conversion de 63 000 000 points au format WKT. J'ai également fait une comparaison avec Postgres. Postgres et Oracle s'exécutent sur deux machines virtuelles hébergées sur le même serveur.

Postgres: processeurs 12, ram 64 Go

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: processeurs 12, ram 40 Go, pga + sga = 8 Go maximum

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); 

Pourquoi Postgres surpasse-t-il Oracle lors de la mise à jour des tables? Quelles causes peuvent affecter les performances spatiales d'Oracle?

Pour le moment, je ne mets à profit aucun indice spatial.

w4bo
la source
1
Quel est le but de cet exercice? La performance n'est vraiment qu'une préoccupation pour un processus qui sera répété, et je ne vois aucune raison de le répéter. UPDATEest une opération très coûteuse pour une analyse complète de la table; vous devez utiliser une CREATE TABLE ... ASconstruction.
Vince
Je ne vois rien de spécifique au SIG ici. Peut-être que TO_WKTGEOMETRY est lent, peut-être que votre Oracle crée et valide des transactions trop petites, ou il y a autre chose qui pourrait être optimisé.
user30184
En utilisant Oracle, vous devez faire la différence entre Oracle Locator, qui est dans les éditions standard, et la Spatial Cardridge d'Oracle qui est significativement plus rapide, mais très coûteuse. De nombreuses méthodes comme SDO_UTIL.TO_WKTGEOMETRY sont implémentées en Java, c'est pourquoi elles ne sont pas disponibles dans l'édition Oracles Express (sans Java). Sans la Spatial Cardridge, ces méthodes semblent être interprétées (lentement).
wumpz du

Réponses:

8

Oracle Spatial et Postgis ont chacun leurs avantages et leurs inconvénients. En traitant les données spatiales, Postgis surpasse toujours Oracle Spatial. Je travaille depuis 2 ans sur Oracle Spatial et je suis récemment passé à PostGIS, et j'ai vu une énorme différence de performances dans les deux.

La raison pour laquelle il fonctionne beaucoup plus rapidement est due à l'analyse des données spatiales. Dans de nombreuses études de cas, il a été établi que PostGIS est 300% à 400% plus rapide qu'Oracle Spatial.

PostGIS utilise GEOS (Geometry Engine - Open Source) pour l'analyse de la géométrie tandis qu'Oracle spatial a son propre moteur de géométrie qui a une analyse très faible que GEOS.

J'ai trouvé cette étude de cas très utile pour la comparaison des performances entre PostGIS et Oracle Spatial.

À mon avis et expérience personnels, l'open source résulte toujours propriétaire en performances.

Ahsan Mukhtar
la source
1
PostGIS n'utilise pas GEOS pour l'analyse des géométries. C'est tout PostGIS natif. GEOS est utilisé pour certaines des opérations de géomatique dans PostGIS
Nicklas Avén