2016-04-15 7 views
0

ich geschaffen habe mehr als 500 Tabellen mit Geometriespalten,Wie beschleunigt man die räumliche Indexerstellung mit vielen Tabellen?

es mehr Zeit für die räumliche Indexerstellung unter Daten nach dem Einfügen, wie kann ich räumlichen Index für alle Tabellen innerhalb von wenigen Sekunden zu erstellen,

gibt es irgendwelche andere Möglichkeit zur Beschleunigung der räumlichen Indexerstellung?

Antwort

0

Was möchten Sie beschleunigen? Die Erstellung der räumlichen Indizes (= die CREATE INDEX-Befehle)? Oder die Einfügungen/Aktualisierungen zu den Tabellen. Wie groß sind diese Tische? Und wie lange ist für Ihren Geschäftsprozess akzeptabel?

Indizes werden in der Regel nur einmal beim erstmaligen Erstellen und Auffüllen einer räumlichen Tabelle erstellt. Wenn Ihre Anwendung keine großen Datenmengen in kurzen Intervallen einfügt oder eine, die sich bewegende Objekte verfolgt, ist es nicht erforderlich, die Indizes nach der erstmaligen Erstellung neu zu erstellen. Sie werden offensichtlich automatisch gepflegt.

Für die Zeit, um einen räumlichen Index zu erstellen, dauert es natürlich länger (manchmal erheblich) als einen Index für die gleiche Anzahl von Namen zu erstellen. Je größer Ihre Tische, desto länger dauert es natürlich. Wenn Sie wiederum glauben, dass Sie in ein paar Sekunden 500 Indizes (räumlich oder nicht) erstellen können, werden Sie getäuscht, selbst wenn Sie sehr leistungsfähige Hardware verwenden und die Tabellen leer sind.

Es gibt zwei Möglichkeiten, um Ihren Index zu machen baut weniger Zeit in Anspruch nehmen:

1) Bei großen Tabellen sie partitionieren und die Build parallel tun. Dies ist nur möglich, wenn Sie die Partitionierungsoption besitzen (nur in EE verfügbar). Andererseits ist dies nur für große Tabellen sinnvoll - d. H. 50 Millionen Zeilen und mehr. Es macht wenig Sinn auf kleinen Tischen.

2) Führen Sie für eine große Anzahl von kleineren Tabellen die Builds parallel aus, d. H. Führen Sie mehrere Indexerstellungen gleichzeitig aus. Verwenden Sie den Scheduler der Datenbank (DBMS_SCHEDULER), um das zu koordinieren.

Wenn Sie danach suchen, wie Sie die Datenaufnahme beschleunigen (bewegte Objekte, Tracking, ...), dann müssen Sie etwas mehr über Ihren Workflow erklären.