Estou com um problema de desempenho ao atualizar uma tabela no Oracle Spatial 11G ao converter 63.000.000 de pontos no formato WKT. Também fiz uma comparação com o Postgres. O Postgres e o Oracle são executados em duas máquinas virtuais hospedadas no mesmo servidor.
Postgres: processadores 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: processadores 12, ram 40GB, pga + sga = 8GB no 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 que o Postgres está superando o Oracle durante a atualização de tabelas? Quais causas podem afetar o desempenho espacial do Oracle?
No momento não estou alavancando nenhum índice espacial.
UPDATE
é uma operação muito cara para uma verificação completa da tabela; você deveria estar usando umaCREATE TABLE ... AS
construção.