Die Richtlinien in diesem Thema können Ihnen dabei helfen, die Performance räumlicher Abfragen zu verbessern, wenn Sie die Größe eines räumlichen Indexgitters in Oracle und DB2 manuell berechnen müssen.
Die Größe der Gitterzelle wirkt sich auf die Größe der Tabelle des räumlichen Index aus. Das Einrichten des räumlichen Index bedeutet einen Ausgleich der Zellengrößen – kleinere Zellengrößen bedeuten mehr Zellen pro Shape, die mehr Einträge in der Tabelle des räumlichen Index benötigen.
Wenn Sie die Client-Anwendungen von Drittanbietern verwenden, können die Anwendungen und Profile der räumlichen Daten abhängig vom System variieren. In diesen Fällen müssen Sie u. U. unterschiedliche Zellengrößen und Gitterebenen-Konfigurationen für den räumlichen Index testen.
- Überlegen Sie sich, wie viele Gitterebenen benötigt werden, und bedenken Sie dabei, dass der Datenbank-Optimizer die Tabelle des räumlichen Index einmal pro Gitterebene analysiert. Häufig ist eine einzelne Gitterebene die beste Lösung für eine Feature-Class, auch wenn Geometrien tendenziell eher auf mehrere Gitterebenen verteilt werden, um die Anzahl der Einträge im räumlichen Index zu minimieren.
- Verwenden Sie eine Gitterebene für reine Point-Feature-Classes, und machen Sie die Zellen möglichst groß. Räumliche Abfragen können Punktgeometrien im Allgemeinen schneller verarbeiten als andere Geometrietypen.
- Überwachen Sie den räumlichen Index. Die Optimierung eines räumlichen Index ist schwierig, wenn sich die Daten häufig ändern. Die Optimierung richtet sich nach der Struktur der räumlichen Daten. Bewerten Sie den räumlichen Index in regelmäßigen Abständen, da sich die räumlichen Daten immer wieder ändern.
- Verwenden Sie die Anwendung als Basis für den räumlichen Index. Passen Sie die Größen der Gitterzellen an die Ausdehnung des Anwendungsfensters an. Dadurch werden der Anwendung genaue Einträge in der Tabelle des räumlichen Index angezeigt. Auf diese Weise wird die Tabelle des räumlichen Index nicht zu groß und der Verarbeitungsaufwand reduziert, weil weniger potenzielle Feature-IDs anhand der Feature-Tabelle ausgewertet werden müssen.
- Bei unbekannten oder variablen Anwendungsfenstern definieren Sie zunächst eine Gitterebene mit einer Zellengröße, die dreimal so groß wie die durchschnittliche Feature-Ausdehnung ist. Führen Sie eine Abfrage für die Business-Tabelle durch, um die durchschnittliche Feature-Größe zu erhalten. Mit folgender SQL-Anweisung wird die durchschnittliche Feature-Größe für einen Feature-Service in Oracle abgefragt:("<N>" ist hier die räumliche Tabelle und "shape" die Geometriespalte von Tabelle <N>.) Mit einer solchen Konfiguration des räumlichen Index wird die Anzahl der Zeilen in der Tabelle des räumlichen Index minimiert, ohne dass die Performance des Index beeinträchtigt wird. Dies liegt daran, dass die Mehrheit der Features von weniger als einer oder zwei Gitterzellen referenziert werden kann.
SELECT (AVG(SDE.ST_MAXX(shape) – SDE.ST_MINX(shape)) + AVG(SDE.ST_MAXY(shape) – SDE.ST_MINY(shape))) / 2 from <N>;
- Erstellen Sie die räumliche Tabelle um räumliche Datenkategorien wie Typ, Geometriegröße und Verteilung. Manchmal kann eine sorgfältig konzipierte Feature-Class bei Verwendung dieser Kategorien die Performance räumlicher Abfragen wesentlich steigern.
Wenn Sie die Daten mit ArcGIS Desktop erstellen, wird das räumliche Indexgitter für Sie berechnet.
Weitere Informationen zum Indexgitter von DB2 Spatial Extender finden Sie im IBM DB2 Spatial Extender and Geodetic Extender User's Guide and Reference.