-
Index-Advisor und Primary Key
Hallo zusammen,
wir haben eine SQL-Tabelle mit einem Primary-Key, für die der Index-Advisor einen Index-Vorschlag über die Primary-Key-Spalte vorschlägt (Empfehlungshäufigkeit 13 Mio).
Jetzt habe ich ein paar Fragen:
Warum reicht der durch den Constraint generierte Index nicht aus?
Warum einen weiteren manuell erstellten Index über die Primary-Key-Spalte?
Noch ein Hinweis:
Der Indextyp des Vorschlags ist "Codierter Vektor" und unterscheidet sich dadurch vermutlich vom generierten Index des Constraints.
Kann ich den Indexvorschlag des Advisors einfach übernehmen? Zwei Indizes über die gleiche Spalte fühlt sich nicht richtig an.
-
Die Frage ist doch, ob die SQL's den PrimaryIndex verwenden oder nicht.
Ich habe auch schon Vorschläge gesehen, dass die Reihenfolge der Felder anders herum vorgeschlagen wurde und der Index trotzdem verwendet wurde.
Leider ist es so, dass die Vorschläge dann ab und an zur Laufzeit tatsächlich nicht angenommen wurden.
-
Primary Key werden in Form eines Binary Radix Tree Indexes, also eines Indexes, der auf einer Baum-Struktur basiert über die die Schlüssel-Werte gefunden werden. Unter oder hinter den Schlüssel-Werten befindet sich eine Bit-Map, in der für jeden Satz ein Indikator hinterlegt ist, der je nachdem ob der Satz den Schlüssel-Wert enthält auf an oder aus gesetzt wird.
Codierte Indices (oder Encoded Vector Indices) haben einen anderen Aufbau. Sie bestehen aus einer Symbol-Tabelle, in der alle Schlüssel-Werte hinterlegt sind. Jedem Schlüssel wird ein eindeutiger Code zugeordner. In dem Vektor, dem zweiten Bestandteil des Indexes, wird jeder Satz-Adresse der entsprechende Code zugewiesen. Wird nach einem bestimmten Schlüssel gesucht, wird der Code festgestellt und dann der Vektor entsprechend ausgelesen.
Encoded Vektor Indices werden normalerweise zum schellen Ermitteln von ca. 20-70% der Datensätze aus einer Tabelle verwendet oder auch in Verbindung mit Techniken wie Lock Ahead Predicate Generation (LPG).
... deshalb wundert mich eigentlich, dass für einen Primary Key ein Encoded Vector Index vorgeschlagen wird!
Soweit zur Theorie.
Die Frage ist, laufen Deine Abfragen gegen diese Tabelle in einer vertretbaren Zeit ab?
Dazu solltes Du die Abfragen ermitteln und dann mit Hilfe von Visual Explain analysieren.
Sofern die Abfragen in einer vertretbaren Zeit ausgeführt werden, würde ich die Advices einfach löschen.
Du kannst aber auch mal spasseshalber einen entsprechenden (Encoded Vector) Index anlegen und beobachten, was sich dann tut.
Am besten machst Du vorher und nachher (nachdem du einige Abfragen ausgeführt hast) einen Plan Cache Snap Shot und vergleichst dann die Ergebnisse.
Alternativ kannst Du auch für vorher und nachher einen Datenbanken-Monitor (Performance Monitor) starten und dann beide vergleichen.
ACS (Access Client Solutions) bietet dafür entsprechende Tools. (Notfalls geht es auch mit Client Access).
Birgitta
-
@Fuerchau:
Danke für das Feedback.
Ob der PrimaryIndex verwendet wird, habe ich mich dann auch gefragt.
Würde mich aber sehr wundern, wenn nicht.
@Birgitta:
Danke für die ausführliche Antwort und den Crash-Kurs zu Indextypen!
Ich werde erst einmal wie vorgeschlagen die Abfragen ermitteln und analysieren.
Wenn da nichts Sinnvolles herauskommt, werde ich den Codierten Index anlegen.
-
Zitat von Allrounder
wir haben eine SQL-Tabelle mit einem Primary-Key, für die der Index-Advisor einen Index-Vorschlag über die Primary-Key-Spalte vorschlägt (Empfehlungshäufigkeit 13 Mio).
... einen encoded Vector Index über einen Teil eines aus mehreren Feldern bestehenden primary index zu erstellen kann Sinn machen, da der Optimizer dann zusätzliche Informationen über die Verteilung und Lokation der Werte erhält. Einen encoded Vector Index über eine Spalte mit vielen Ausprägungen und geringer Dichte macht keinen Sinn, beim kompletten primary Key wäre das geradezu Unfug und ich würde mal Software defekt reklamieren, bzw. die database PDFs aktualisieren.
Im übrigen muss man auch beachten, dass jeder Index bei inserts und deletes, zuweilen gar bei updates, workload erzeugt und gerade EVIs, die vom IBM marketing und deren followers weit über ihren Nutzen hinaus angepriesen werden bringen selten was.
D*B
-
Zitat von BenderD
... Einen encoded Vector Index über eine Spalte mit vielen Ausprägungen und geringer Dichte macht keinen Sinn...
Nachdem ich jetzt tiefer in das Thema eingestiegen bin und Dank der Antworten hier bin ich auch zwischenzeitlich der Meinung, dass der Index-Vorschlag keinen Sinn macht. Solange ich die Ursache nicht kenne, werde ich zusätzlichem workload vermeiden und den Index nicht erstellen.
Vielen Dank allen.
Similar Threads
-
By wilfried in forum NEWSboard Programmierung
Antworten: 4
Letzter Beitrag: 23-02-18, 07:29
-
By a.wojcik in forum NEWSboard Programmierung
Antworten: 15
Letzter Beitrag: 29-07-16, 12:49
-
By berndl in forum IBM i Hauptforum
Antworten: 13
Letzter Beitrag: 03-12-15, 20:11
-
By dschroeder in forum NEWSboard Programmierung
Antworten: 11
Letzter Beitrag: 18-11-15, 15:38
-
By KingofKning in forum NEWSboard Programmierung
Antworten: 3
Letzter Beitrag: 03-07-15, 13:04
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- You may not post attachments
- You may not edit your posts
-
Foren-Regeln
|
Erweiterte Foren Suche
Google Foren Suche
Forum & Artikel Update eMail
AS/400 / IBM i
Server Expert Gruppen
Unternehmens IT
|
Kategorien online Artikel
- Big Data, Analytics, BI, MIS
- Cloud, Social Media, Devices
- DMS, Archivierung, Druck
- ERP + Add-ons, Business Software
- Hochverfügbarkeit
- Human Resources, Personal
- IBM Announcements
- IT-Karikaturen
- Leitartikel
- Load`n`go
- Messen, Veranstaltungen
- NEWSolutions Dossiers
- Programmierung
- Security
- Software Development + Change Mgmt.
- Solutions & Provider
- Speicher – Storage
- Strategische Berichte
- Systemmanagement
- Tools, Hot-Tips
Auf dem Laufenden bleiben
|
Bookmarks