2011-09-28 2 views
0

Я работаю с базами данных, содержащими пространственные данные. Большинство этих баз данных находятся в запатентованном формате, созданном ESRI для использования с их программным обеспечением ArcGIS. Мы сохраняем наши данные в нормированной модели данных в рамках этих баз геоданных.Как улучшить производительность базы данных ESRI/ArcGIS при сохранении нормализации?

Мы обнаружили, что производительность этой базы данных довольно медленная, когда имеет дело с отношениями (т. Е. Отношение нескольких тысяч записей к нескольким тысячам записей может занять несколько минут).

Есть ли способ повысить производительность без полного выравнивания/денормализации базы данных или это строго ограничено платформой базы данных, которую мы используем?

+1

Просто, чтобы убедиться, что я прав, это вы спрашиваете, как улучшить производительность запатентованной базы данных, используя схему, которую вы не будете раскрывать. Попался. –

+0

Формат базы данных - это не то, что мы создали, а формат, созданный ESRI для использования с их ArcGIS. Это формат базы геоданных, предназначенный для хранения данных ГИС. Мы ограничены этим, так как наши данные создаются с использованием ArcGIS, и наш поставщик программного обеспечения создает программное обеспечение на основе API ArcGIS. Мы разработали только схему базы данных, которую мы не можем раскрывать. Я уверен, что это очень распространенная ситуация для многих компаний. – Brian

+0

Итак, вы просите нас (ваших потенциальных клиентов) помочь вам в вашей секретной схеме? И если нам когда-нибудь удастся столкнуться с вашим продуктом, нам все равно придется перепроектировать ваш «продукт», чтобы заставить его работать? – wildplasser

ответ

2

Существует только один способ: измерение. Попытайтесь получить план запроса и попробуйте его прочитать. Попробуйте изолировать запрос из файла журнала, отредактируйте его в исполняемую (непараметрированную) форму и отправьте ее вручную (в psql). Постарайтесь настроить его и посмотреть, где он болит.

Геометрические соединения могут быть дорогостоящими с точки зрения ЦП, если много (больших) полигонов должны быть соединены, и если их ограничивающие прямоугольники имеют большой шанс перекрыться. В крайнем случае вам придется делать предварительный выбор по другим критериям (например, zipcode, если они доступны) или вести таблицы кэша совпадающих записей.

EDIT: BTW: есть ли у вас статистика и autovacuum? IIRC, ESRI по-прежнему привязан к postgres-8.3-something, где они не выполнялись по умолчанию.

UPDATE 2014-12-11

ESRI не мешает, не Гис вещи. Совершенно нормально добавлять отношения PK/FK или дополнительные индексы к вашей схеме. СУБД подберет их, если будет одобрено. И ESRI будет игнорировать их. (ESRI использует только свои метакаталоги, игнорируя системные каталоги)

+0

Большинство запросов - это запросы атрибутов, но данные имеют пространственный компонент. Мы работаем с базами данных геодезических данных ESRI и начинаем изучать ArcSDE на SQL Server 2008 R2. Пока не уверены, как мы будем поставлять нашим поставщикам программного обеспечения, а именно, когда производительность становится проблемой. – Brian

+0

ESRI поддерживает PostgreSQL 8.4. Лично я был бы очень соблазнен установить 9.1 и посмотреть, как это работает. PostgreSQL 9.1 поддерживает «K-Nearest-Neighbor Indexing», индексирование по расстоянию. –

+0

Я не умею запоминать номера версий. Не обновляйте выше 8.4.что-то. ESRI по-прежнему полагается на дату и время с плавающей запятой. Который был дефолтом некоторое время назад. Также они не могут поставлять 64-битные двоичные файлы, но это еще одна история. – wildplasser

0

Когда мне приходилось иметь дело с пространственными данными, я имел тенденцию предсказывать значения и хранить их. Да, что делает большую таблицу, но гораздо быстрее запрашивать, когда вы только выполняете сложный расчет один раз при вводе данных. Однако ввод данных занимает больше времени. Я был в ситуации, когда все мои пространственные данные поступали с ежемесячной нагрузки, поэтому предварительное вычисление было не так уж плохо.

Смежные вопросы