PostGis vs Oracle Spatial 11g kinerja

8

Saya mengalami masalah kinerja memperbarui tabel dalam Oracle Spatial 11G sementara mengkonversi 63.000.000 poin ke format WKT. Saya juga membuat perbandingan dengan Postgres. Baik Postgres dan Oracle dijalankan di dua mesin virtual yang di-host oleh server yang sama.

Postgres: prosesor 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: prosesor 12, ram 40GB, pga + sga = maksimum 8GB

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

Mengapa Postgres mengungguli Oracle saat memperbarui tabel? Penyebab apa yang dapat mempengaruhi kinerja spasial Oracle?

Saat ini saya tidak memanfaatkan indeks spasial apa pun.

w4bo
sumber
1
Apa tujuan latihan ini? Kinerja hanya benar-benar perhatian untuk proses yang akan diulang, dan saya tidak bisa melihat alasan untuk mengulanginya. UPDATEadalah operasi yang sangat mahal untuk pemindaian tabel penuh; Anda harus menggunakan CREATE TABLE ... ASkonstruk.
Vince
Saya tidak melihat apa-apa GIS spesifik di sini. Mungkin TO_WKTGEOMETRY lambat, mungkin Oracle Anda membuat dan melakukan transaksi terlalu kecil, atau ada hal lain yang bisa dioptimalkan.
user30184
Menggunakan Oracle Anda harus berbeda antara Oracle Locator, yang dalam edisi standar dan Spatial Cardridge dari Oracle yang secara signifikan lebih cepat, tetapi sangat mahal. Banyak metode seperti SDO_UTIL.TO_WKTGEOMETRY diimplementasikan di Jawa, itulah sebabnya mereka tidak tersedia dalam edisi Oracles Express (tanpa Java). Tanpa Spatial Cardridge, metode ini tampaknya ditafsirkan (lambat).
wumpz

Jawaban:

8

Oracle Spatial dan Postgis keduanya memiliki pro dan kontra sendiri. Saat berurusan dengan data spasial Postgis selalu mengungguli Oracle Spatial. Saya telah bekerja selama 2 tahun terakhir pada Oracle Spatial dan saya baru saja beralih ke PostGIS, dan saya melihat perbedaan kinerja yang sangat besar pada keduanya.

Alasan mengapa kinerjanya jauh lebih cepat adalah karena penguraian data spasial. Dalam banyak studi kasus, diperoleh bahwa PostGIS 300% -400% lebih cepat dari Oracle Spatial.

PostGIS menggunakan GEOS (Geometry Engine - Open Source) untuk penguraian geometri sementara Oracle spatial memiliki mesin geometri sendiri yang memiliki penguraian sangat rendah daripada GEOS.

Saya menemukan studi kasus ini sangat berguna untuk perbandingan kinerja antara PostGIS dan Oracle Spatial.

Dalam pendapat dan pengalaman pribadi saya, Open source selalu menghasilkan Proprietary dalam Kinerja.

Ahsan Mukhtar
sumber
1
PostGIS tidak menggunakan GEOS untuk parsing geometri. Itu semua asli PostGIS. GEOS digunakan untuk beberapa operasi geomtry di PostGIS
Nicklas Avén