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.
UPDATE
es una operación muy costosa para un escaneo completo de la tabla; deberías estar usando unaCREATE TABLE ... AS
construcción.Respuestas:
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.
fuente