Ahoj, dneska velice krátký post na pár PDF a přednášky, které mi v posledním dejmetomu měsíci zaujaly a myslím, že stojí za to si je přečíst. Jinak ale určitě budu pokračovat v načatém tracování CBO a jeho eventy 10053, případně 10054. A rozhodně s tím hnedtak nepřestanu
– v rámci možností omezeného času - příští víkend se jede na koncert Wintersun do Vídně (áách). Navíc vzhledem ke kráse naší vyučující pondělní švédštiny se musím pečlivě připravovat a psát domácí úkoly a v průběhu semestru ladit technologie jak jí ve švédštině pozvat na večeři..
Slajdy o tracování eventů. Koukal jsem, že ke všem věcem které jdou tracovat (ora-10000 až ora-10999 + nějaké další) se dotyčný dostal také přes brutal force na SQLERRM. Narozdíl od mého psa - ne však náhodou . S tím, že se mu zalíbily tyto eventy:
• 10046 (Millsap )Enable SQL statement timing
• 10053 CBO Enable optimizer trace
• 10079 Trace data sent/received via SQL*Net
• 10235 Check memory manager internal structures
• 10032 Dump sort statistics
• 10231 Skip corrupted blocks on full table scan
• 10015 Dump undo segment headers
• 10013 Monitor transaction recovery
Mě se jich líbí teda víc, například pro CBO jsou tam dva – s tim, že jeden je pro paralelní – 100054. A postrádám tam tracování deadlocku, což je užitečné (ačkoliv v případě ora-0060 oracle vybleje .trc soubor tak či tak). A hashjoinování, což je taky krásný trace report.
Dokument, který vysvětluje jak je to s Oracle a histogramama při joinování. Respektive jak je to s odhadem selectivty joinů. Nutno upozornit, že dotyčný dokument je docela starý a tudíš to na nověších verzích Oracle bude vypadat nejspíše úplně jinak. Co je ale super, věnuje se zkoseným datům. A na začátku je hned velice zajímavý vzorec na odhad cardinality, pokud nejsou histrogramy a množiny si matchnou na hranicích – “princip inkluze“:
join cardinality:=cardinality(A) * cardinality(B) * (1/max(ndv(a),ndv(b)))
A můj další tip je na přednášku/slajdy o latech, mutex apod.
A když už jsme u těch latch/mutexů tak tento dokument je trošku více specifičtější – také mutexy, ale tentokrát jejich chování na child/parent kurzorech. Hodně se věnuje zámkům na parent cursoru pokud je tam nutné hodit ještě nějaký child cursor pod parenta. Moc pěkné.
A pokud už snad máte dost všech těch vzorců a možností a view a mutexů a KGX, odhadů cardinality na HbH pro eq-join, tak něco hodně upovídaného na odlehčenou - edice.
Tak to by bylo všechno, a jinak pro kolegu, pravidlo palce: AUTO_SAMPLE_SIZE je cca o 2% méně přesné než estimate_percent = 100, ale za to 10x rychlejší. Note: neplatí pro extrémně zkosená data a platí pro 11g+.
Hébičkám a Winterusun zdar!