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.