Leistung von PostGis vs Oracle Spatial 11g

8

Ich habe ein Leistungsproblem beim Aktualisieren einer Tabelle in Oracle Spatial 11G, während 63.000.000 Punkte in das WKT-Format konvertiert werden. Ich habe auch einen Vergleich mit Postgres gemacht. Sowohl Postgres als auch Oracle werden auf zwei virtuellen Maschinen ausgeführt, die auf demselben Server gehostet werden.

Postgres: Prozessoren 12, RAM 64 GB

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: Prozessoren 12, RAM 40 GB, pga + sga = maximal 8 GB

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); 

Warum übertrifft Postgres Oracle beim Aktualisieren von Tabellen? Welche Ursachen können die räumliche Leistung von Oracle beeinflussen?

Im Moment nutze ich keinen räumlichen Index.

w4bo
quelle
1
Was ist der Zweck dieser Übung? Leistung ist wirklich nur ein Problem für einen Prozess, der wiederholt wird, und ich sehe keinen Grund, dies zu wiederholen. UPDATEist eine sehr teure Operation für einen vollständigen Tabellenscan; Sie sollten ein CREATE TABLE ... ASKonstrukt verwenden.
Vince
Ich sehe hier nichts GIS-spezifisches. Vielleicht ist TO_WKTGEOMETRY langsam, vielleicht erstellt und schreibt Ihr Oracle zu kleine Transaktionen fest, oder es gibt noch etwas, das optimiert werden könnte.
user30184
Bei der Verwendung von Oracle müssen Sie zwischen Oracle Locator, das in Standardeditionen erhältlich ist, und der Spatial Cardridge von Oracle, die erheblich schneller, aber sehr teuer ist, unterscheiden. Viele Methoden wie SDO_UTIL.TO_WKTGEOMETRY sind in Java implementiert. Deshalb sind sie in der Oracles Express Edition (ohne Java) nicht verfügbar. Ohne die Spatial Cardridge scheinen diese Methoden interpretiert zu werden (langsam).
Wumpz

Antworten:

8

Oracle Spatial und Postgis haben ihre eigenen Vor- und Nachteile. Beim Umgang mit den Geodaten übertrifft Postgis Oracle Spatial immer. Ich habe in den letzten 2 Jahren an Oracle Spatial gearbeitet und bin kürzlich zu PostGIS gewechselt. Bei beiden habe ich einen großen Leistungsunterschied festgestellt.

Der Grund, warum es viel schneller arbeitet, liegt in der Analyse von Geodaten. In vielen Fallstudien wurde festgestellt, dass PostGIS 300 bis 400% schneller ist als Oracle Spatial.

PostGIS verwendet GEOS (Geometry Engine - Open Source) für die Geometrieanalyse, während Oracle Spatial über eine eigene Geometrie-Engine verfügt, die eine sehr geringe Analyse als GEOS aufweist.

Ich habe festgestellt, dass diese Fallstudie für den Leistungsvergleich zwischen PostGIS und Oracle Spatial sehr nützlich ist.

Nach meiner persönlichen Meinung und Erfahrung führt Open Source immer zu Proprietary in Performance.

Ahsan Mukhtar
quelle
1
PostGIS verwendet GEOS nicht zum Parsen von Geometrien. Das ist alles natives PostGIS. GEOS wird für einige der Geomtry-Operationen in PostGIS
Nicklas Avén