Tôi đang gặp vấn đề về hiệu năng khi cập nhật bảng trong Oracle Spatial 11G trong khi chuyển đổi 63.000.000 điểm sang định dạng WKT. Tôi cũng đã làm một so sánh với Postgres. Cả Postgres và Oracle đều chạy trong hai máy ảo được lưu trữ bởi cùng một máy chủ.
Postgres: bộ xử lý 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: bộ xử lý 12, ram 40GB, pga + sga = 8GB tối đa
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);
Tại sao Postgres vượt trội hơn Oracle trong khi cập nhật bảng? Những nguyên nhân có thể ảnh hưởng đến hiệu suất không gian của Oracle?
Hiện tại tôi không tận dụng bất kỳ chỉ số không gian nào.
UPDATE
là một hoạt động rất tốn kém cho quét toàn bộ bảng; bạn nên sử dụng mộtCREATE TABLE ... AS
cấu trúc.