Anmelden

View Full Version : LF / SQL index



Seiten : 1 2 [3] 4

woodstock99
17-03-15, 20:39
hmmm zu diesem Thema noch eine Frage .
Ich hab ja Indizes angelegt die nicht benützt werden .

Kann mir mal einer folgenden Unterschied noch erklären .


Vorschlag aus Index Advisor genommen und SQL Index erstellt .
Dieser Vorschlag erscheint jetzt nicht mehr in der Liste aber USED DAYS COUNT = 0 und das seit mehreren Tagen . Wenn ich aber den unbenützten Index wieder lösche erscheint er wieder in der Liste.


Anderer Fall . Auch wieder Vorschlag aus Index Advisor genommen und SQL Index erstellt.
Dieser wird wie im Eingangsposting nicht genützt USED DAYS COUNT = 0 aber er erscheint noch unter den Vorschlägen die zuerstellen sind ..



In beiden Fällen :confused: :confused: :confused: :confused: :confused: :confused: :confused: :confused: :confused: . Ich raffs einfach nicht ;(

andreaspr@aon.at
18-03-15, 06:48
Vorschlag aus Index Advisor genommen und SQL Index erstellt .
Dieser Vorschlag erscheint jetzt nicht mehr in der Liste aber USED DAYS COUNT = 0 und das seit mehreren Tagen . Wenn ich aber den unbenützten Index wieder lösche erscheint er wieder in der Liste.
Der Index Advisor gibt nur Vorschläge. Diese Vorschläge sollten immer hinterfragt werden. Da diese Phänome keine Seltenheit sind.
Meine Vermutung ist, dass die DB glaubt, dass dieser Index für bestimmte Abfragen Vorteile haben !könnte!
Da jedoch die statistischen Informationen dazu fehlen (da der Index zu diesem Zeitpunkt nicht existiert), kann eben nur eine Vermutung geäußert werden.
Existiert der Index, startet die DB auch mit der Sammlung statistischer Daten dazu (wieviele eindeutige Werte gibt es, wie oft kommen diese vor, ...)
Anhand dieser Statistik sagt dann der Optimizer: "Hmm ... scheinbar bringt mir der Index doch nicht den erhofften Vorteil ..."


Anderer Fall . Auch wieder Vorschlag aus Index Advisor genommen und SQL Index erstellt.
Dieser wird wie im Eingangsposting nicht genützt USED DAYS COUNT = 0 aber er erscheint noch unter den Vorschlägen die zuerstellen sind ..
Wurde der Eintrag nach dem Erstellen des Index auch aus dem Advisor entfernt?
Er wird nur dann automatisch entfernt, wenn du den Index direkt aus dem Advisor erstellen lässt ... bzg. fragt er dich (glaub ich) ob er ihn aus der Liste entfernen soll.

lg Andreas

M@tthias
18-03-15, 07:11
Hallo woodstock99,

ich erinnere mich an eine Aussage von IBM, dass der Optimizer nicht zwangsläufig alle LFs betrachtet. Da du schreibst, dass es hier über 50 davon gibt, kann es sein, dass deine neue Datei gar nicht "ausprobiert" wird. Das war zumindest die Erklärung eines Consultants, warum wir auch ein solches Verhalten beobachtet hatten. Ich weiß allerdings nicht, wie hoch ein solcher Wert ist oder ob er irgendwo konfigurierbar ist. Falls es deine Umgebung erlaubt und du den Nerv dazu hast, kannst du ja mal ausprobieren, die Anzahl der LFs zu reduzieren... Aber ich kann mich natürlich auch irren.

Viele Grüße
Matthias

BenderD
18-03-15, 07:19
...
die erste Frage, die sich stellt ist: wie wurde der USED DAYS COUNT ermittelt? (DSPOBJD kriegt vieles nicht mit)
die zweite Frage: ist die Information überhaupt richtig? (ich würde dieser Angabe immer nur begrenzt über den Weg trauen)

Für mich ist der entscheidende Punkt: Performance ist messbar!!! Wenn ich einen Index für eine bestimmte Abfrage anlege, dann wird messtechnisch verifiziert ob das einen Effekt hat, wenn nein, dann wird er wieder gelöscht. Der Index Advisor ist für mich immer nur eine zusätzliche Informationsquelle, da gibt es ebensviel Kaffeesatzanteil wie bei dem ganzen CQE/SQE Gesülze, das ist für mich alles J2FtR.

D*B

petterr
18-03-15, 07:57
Ob ein Index verwendet wird, ist einfach mit Visual Explain auf den entsprechenden PlanCache Eintrag festzustellen.

Jeder der SQL verwendet und mit dem PlanCache, SQL Performancemonitoren und Visual Explain nicht umgehen kann, sollte dringend mal eine Schulung besuchen.

Grüße

Ralf

woodstock99
18-03-15, 09:25
@Bender.

Jupp per DSPOBJD .
Also langsam versteh ich gar nix mehr und auf welchen Wert kann man sich den dann überhaupt verlassen?


@Peterr.
"Jeder der SQL verwendet und mit dem PlanCache, SQL Performancemonitoren und Visual Explain nicht umgehen kann, sollte dringend mal eine Schulung besuchen."

War das die Antwort auf meine Frage wie dieser Sachverhalt zustande kommt ?

Dazu brauche ich keinen PlanCache und sonstiges um zu sehen ob ein Index verwendet wird .
Reicht auch ein strdbg und ein strsql . Soviel zum Thema Schulung ..

BenderD
18-03-15, 09:36
DSPOBJD zählt das nur hoch, wenn man den Index mit RLA benutzt (Index isn nicht gleich Access Path => Access path sharing). Am einfachsten kommt man dran mit Ooops Nerv.

D*B

woodstock99
18-03-15, 09:53
ops nerv ?
also wenn ich da unter schemas - > indexes - den Index anschaue hab ich ja auch nur die spalten
Query use - Query usw count , days usw count bla bla und diese Werte sind auch 0 .
Entsprechen also dem Wert von DSPOBJD .

Wie gesagt ich raff einfach nicht wenn ich einen Index anlege den der Advisor vorschlägt verschwindet er von der Liste (Vorschläge Advisor) aber diese Werte sind 0 . Also nicht benützt .

Wo kann ich dann nachschauen . Also schaue ich doch falsch oder ?

petterr
18-03-15, 10:27
Sind wirklich alle auf 0 zumindest der Wert für die Abfragestatistik sollte dann schon erhöht werden. Sonst einfach mal einen PMR bei der IBM aufmachen.

BenderD
18-03-15, 10:35
...
hast Du mal unter
Database > Schemas > Tables Mausclick rechts show indexes nachgesehen (ich weiß schon, warum ich das Murks nenne)?

QUSRMBRD müsste auch gehen.

D*B


ops nerv ?
also wenn ich da unter schemas - > indexes - den Index anschaue hab ich ja auch nur die spalten
Query use - Query usw count , days usw count bla bla und diese Werte sind auch 0 .
Entsprechen also dem Wert von DSPOBJD .

Wie gesagt ich raff einfach nicht wenn ich einen Index anlege den der Advisor vorschlägt verschwindet er von der Liste (Vorschläge Advisor) aber diese Werte sind 0 . Also nicht benützt .

Wo kann ich dann nachschauen . Also schaue ich doch falsch oder ?