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.
UPDATE
adalah operasi yang sangat mahal untuk pemindaian tabel penuh; Anda harus menggunakanCREATE TABLE ... AS
konstruk.Jawaban:
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.
sumber