PostGis vs Oracle Spatial 11g desempenho

8

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.

w4bo
fonte
1
Qual é o objetivo deste exercício? O desempenho é realmente apenas uma preocupação para um processo que será repetido, e não vejo motivo para repetir isso. UPDATEé uma operação muito cara para uma verificação completa da tabela; você deveria estar usando uma CREATE TABLE ... ASconstrução.
Vince
Não vejo nada específico de SIG aqui. Talvez TO_WKTGEOMETRY esteja lento, talvez seu Oracle crie e comprometa transações muito pequenas ou haja algo mais que possa ser otimizado.
user30184
Usando o Oracle, é necessário diferir entre o Oracle Locator, que está nas edições padrão, e o Spatial Cardridge, da Oracle, que é significativamente mais rápido, mas muito caro. Muitos métodos como SDO_UTIL.TO_WKTGEOMETRY são implementados em Java, por isso não estão disponíveis na edição do Oracles Express (sem Java). Sem o Cardatidge espacial, esses métodos parecem ser interpretados (lentos).
Wumpz 01/08/19

Respostas:

8

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.

Ahsan Mukhtar
fonte
1
O PostGIS não usa o GEOS para analisar geometrias. Isso é tudo PostGIS nativo. O GEOS é usado para algumas das operações de geomtry no PostGIS
Nicklas Avén