Warning: Declaration of Suffusion_MM_Walker::start_el(&$output, $item, $depth, $args) should be compatible with Walker_Nav_Menu::start_el(&$output, $item, $depth = 0, $args = Array, $id = 0) in /DISK2/WWW/plsql.cz/www/wp-content/themes/suffusion/library/suffusion-walkers.php on line 39
Mar 222015
 

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!

 Posted by at 17:37

 Leave a Reply

(required)

(required)

(required)

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>