PostGis vs Oracle Spatial 11g rendimiento

8

Tengo un problema de rendimiento al actualizar una tabla en Oracle Spatial 11G al convertir 63,000,000 de puntos al formato WKT. También hice una comparación con Postgres. Tanto Postgres como Oracle se ejecutan en dos máquinas virtuales alojadas en el mismo servidor.

Postgres: procesadores 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: procesadores 12, ram 40GB, pga + sga = 8GB máximo

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

¿Por qué Postgres está superando a Oracle al actualizar tablas? ¿Qué causas pueden afectar el desempeño espacial de Oracle?

Por el momento no estoy aprovechando ningún índice espacial.

w4bo
fuente
1
¿Cuál es el propósito de este ejercicio? El rendimiento solo es realmente una preocupación para un proceso que se repetirá, y no puedo ver una razón para repetir esto. UPDATEes una operación muy costosa para un escaneo completo de la tabla; deberías estar usando una CREATE TABLE ... ASconstrucción.
Vince
No veo nada SIG específico aquí. Quizás TO_WKTGEOMETRY es lento, quizás su Oracle crea y confirma transacciones demasiado pequeñas, o hay algo más que podría optimizarse.
user30184
Con Oracle, debe diferenciar entre Oracle Locator, que se encuentra en las ediciones estándar, y el Spatial Cardridge de Oracle, que es significativamente más rápido, pero muy costoso. Muchos métodos como SDO_UTIL.TO_WKTGEOMETRY se implementan en Java, por eso no están disponibles en la edición Oracles Express (sin Java). Sin el Cartucho espacial, estos métodos parecen ser interpretados (lento).
wumpz

Respuestas:

8

Oracle Spatial y Postgis tienen sus propias ventajas y desventajas. Al tratar con los datos espaciales, Postgis siempre supera a Oracle Spatial. He estado trabajando durante los últimos 2 años en Oracle Spatial y recientemente me cambié a PostGIS, y vi una gran diferencia de rendimiento en ambos.

La razón por la que funciona mucho más rápido es porque el análisis de datos espaciales. En muchos estudios de casos se ha deducido que PostGIS es 300% -400% más rápido que Oracle Spatial.

PostGIS utiliza GEOS (Geometry Engine - Open Source) para el análisis de geometría, mientras que Oracle espacial tiene su propio motor de geometría que tiene un análisis muy bajo que GEOS.

Este estudio de caso me pareció muy útil para la comparación del rendimiento entre PostGIS y Oracle Spatial.

En mi opinión y experiencia personal, el código abierto siempre resulta patentado en rendimiento.

Ahsan Mukhtar
fuente
1
PostGIS no utiliza GEOS para analizar geometrías. Eso es todo PostGIS nativo. GEOS se utiliza para algunas de las operaciones de geomtry en PostGIS
Nicklas Avén