如何在保持规范化的同时提高ESRI / ArcGIS数据库性能?

时间:2011-09-28 19:21:25

标签: database database-design

我使用包含空间数据的数据库。这些数据库中的大多数都是由ESRI创建的专有格式,用于其ArcGIS软件。我们将数据存储在这些地理数据库中的规范化数据模型中。

我们发现在处理关系时这个数据库的性能非常慢(即将数千条记录与数千条记录相关可能需要几分钟)。

有没有办法在不完全展平/非规范化数据库的情况下提高性能,还是严格限制我们使用的数据库平台?

2 个答案:

答案 0 :(得分:2)

只有一种方法:衡量。尝试获取查询计划,并尝试阅读它。尝试将查询与日志文件隔离,将其编辑为可执行(非参数化)表单,然后手动提交(在psql中)。尝试调整它,看看它在哪里受伤。

如果必须连接许多(大)多边形,并且如果它们的边界框有很大的重叠机会,则几何连接在CPU方面可能成本很高。在极端情况下,您必须对其他条件(例如邮政编码,如果可用)进行预选,或维护匹配记录的缓存表。

编辑: 顺便说一句:你有统计数据和autovacuum吗? IIRC,ESRI仍然与postgres-8.3-something绑定,默认情况下不会运行这些内容。

更新2014-12-11

ESRI不会干扰非gis的东西。将PK / FK关系或附加索引添加到架构中是完全可以的。如果适当的话,DBMS会选择它们。 ESRI会忽略它们。 (ESRI仅使用自己的元目录,忽略系统目录)

答案 1 :(得分:0)

当我不得不处理空间数据时,我倾向于预先确定值并存储它们。是的,这会产生一个大表,但是当你只对数据输入进行一次复杂的计算时查询要快得多。数据输入确实需要更长时间。我的情况是我的所有空间数据来自每月负载,因此预先计算并不是太糟糕。