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.Respostas:
O Oracle Spatial e o Postgis têm seus próprios prós e contras. Ao lidar com os dados espaciais, o Postgis sempre supera o Oracle Spatial. Trabalho há 2 anos no Oracle Spatial e recentemente mudei para o PostGIS, e vi uma enorme diferença de desempenho em ambos.
A razão pela qual ele executa muito mais rápido é porque a análise de dados espaciais. Em muitos estudos de caso, concluiu-se que o PostGIS é 300% -400% mais rápido que o Oracle Spatial.
O PostGIS usa o GEOS (Geometry Engine - Open Source) para análise de geometria, enquanto o Oracle Space possui seu próprio mecanismo de geometria, que possui uma análise muito baixa que o GEOS.
Eu achei este estudo de caso muito útil para comparação de desempenho entre o PostGIS e o Oracle Spatial.
Na minha opinião e experiência pessoal, o código aberto sempre resulta como proprietário no desempenho.
fonte