Oracle SQL teikuma izpildes plāns (execution plan)

Līdzīgi dokumenti
G.Plivna-sistemanalize

2.2/20 IEGULDĪJUMS TAVĀ NĀKOTNĒ! Eiropas Reģionālās attīstības fonds Prioritāte: 2.1. Zinātne un inovācijas Pasākums: Zinātne, pētniecība un at

Microsoft Word - Papildmaterials.doc

RietumuAPI_PSD2_v1_LV

OWASP Top 10 Latvijā Biežākās drošības problēmas 4mekļa lietojumos Agris Krusts, IT Centrs, SIA

Saturs Sākums Beigas Atpakaļ Aizvērt Pilns ekrāns 1 DAUGAVPILS UNIVERSITĀTE Dabaszinātņu un matemātikas fakultāte Matemātikas katedra Bakalaura studij

Tehniskās prasības darbam ar VISMA Horizon un HoP Aktualizēts

Norādījumi par kopējo aktīvu un kopējās riska pozīcijas veidņu aizpildīšanu maksu noteicošo faktoru informācijas apkopošanai

Elektronikas, elektrotehnikas un saistīto nozaru uzņēmumu darbinieku profesionālo zināšanu pilnveides apmācības (7.daļa) IEPIRKUMS (iepirkuma identifi

Nintex Workflow 2010 instalēšanas ceļvedis Instalēšanas ceļvedis Nintex USA LLC 2012, visas tiesības paturētas. Kļūdas un izlaidumi novērsti.

7. Tēma: Polinomi ar veseliem koeficientiem Uzdevums 7.1 (IMO1982.4): Prove that if n is a positive integer such that the equation x 3 3xy 2 + y 3 = n

Datu bāžu vadības sistēma – MS Access

Mūsu programmas Programmu ilgums 1 semestris 15 nodarbības 1,5 h nodarbības ilgums

Datorzinātņu doktorantūras zinātniskais seminārs Atrašanās vietas inteliģences metodes datu noliktavu mobilai lietotnei 1.k.doktorante: Daiga Plase Da

Pārskatu aizpildīšana

Bakalaura darbu un maģistra darbu tēmas

APSTIPRINĀTI ar Latvijas Kultūras akadēmijas Senāta sēdes Nr. 9 lēmumu Nr gada 17. decembrī. Grozījumi ar Senāta sēdes Nr. 1 lēmumu Nr

Instrukcija par semināru Seminārs ir e-studiju aktivitāšu modulis, kas ir līdzīgs uzdevuma modulim, kurā studenti var iesniegt savus darbus. Tikai sem

1

Apstiprināts Latvijas farmaceitu biedrības valdes gada 30. maija sēdē, prot. Nr. 17 Ar grozījumiem līdz LFB valdes sēdei gada 18. oktobrī,

Pētījums Nr Datu avotu analīzes un sasaistes rīks Līgums Nr. L-KC Testēšanas rezultātu apraksts Vadošais pētnieks Zinātniskā virziena v

Ldz vpn INSTRUKCIJA WINDOWS LIETOTĀJIEM.

Biznesa plāna novērtējums

RIGA International College of Economics and Business Administration

Parex index - uzņēmēju aptaujas atskaite

Sūtījuma noformēšana Epaka.lv sūtījumu veidošanas programmā Autorizācija 1. Sekojiet norādei E-pastā, lai atvērtu DPD Epaka programmu. Pēcāk, lai auto

Speckurss materiālu pretestībā 3. lekcija

8

IRM in Audit

Pamatelementi statistikā un Hipotēžu pārbaude

APSTIPRINĀTS

Imants Gorbāns. E-kursa satura rādītāja izveide IEGULDĪJUMS TAVĀ NĀKOTNĒ Imants Gorbāns E-kursa satura rādītāja izveide Materiāls izstrādāts ESF Darbī

Ūsas Autors nezināms Andras Otto ilustrācijas Kaķis savas ūsas izmanto, lai mērītu telpu vai attālumu. Tas ir sevišķi svarīgi, ja viņš mēģina ielīst š

TEHNISKĀ SPECIFIKĀCIJA Endoskopijas kabineta aprīkojumam jābūt jaunam, ražotam 2018.gadā, kurš savienojams ar slimnīcā esošo videoendoskopu GIF-Q165 u

Klimata valoda eksperimenta būtība Klimats vai laikapstākļi? Kurš ir kurš? Kas ir kas? Laikapstākļi ir tas, ko mēs šobrīd redzam aiz loga. Var būt sau

latvijas-elektronisko-publikaciju-krajuma-attistibas-vadlinijas

Presentation title

Latvijas labie piemēri vietu zīmola veidošanā un popularizēšanā.

Microsoft Word - du_5_2005.doc

Remigrācijas veicināšanas rezultāti Vidzemes plānošanas reģionā

Kas ir birža un kā tā strādā?

LU 68 Fizikas sekcija DocBook

32repol_uzd

Red button

PowerPoint Presentation

OPEL ZAFIRA paneļa apgaismojuma lampu maiņa Kā nomainīt apgaismojuma lampiņas ZAFIRA mēraparātu panelī tas ir viens no jautājumiem, kuru var lasīt daž

IEGULDĪJUMS TAVĀ NĀKOTNĒ Projekts Nr. 2009/0216/1DP/ /09/APIA/VIAA/044 NESTRIKTAS KOPAS AR VĒRTĪBĀM PUSGREDZENĀ UN MONĀDES PĀR KATEGORIJU Jāni

Nacionālais rehabilitācijas centrs "Vaivari" (reģ ) Atklāts konkurss Personiskās medicīniskās aprūpes palīglīdzekļu piegāde identifikācija

AMV 655/658 SU / 658 SD / 659 SD

Dārzā Lidijas Edenas teksts Andras Otto ilustrācijas Zaķis skatās lielām, brūnām acīm. Ko tu redzi, zaķīt? Skaties, re, kur māmiņas puķu dārzs! Nē, nē

Microsoft Word - ZinojumsLV2015_2.doc

DATORMĀCĪBA

PowerPoint Presentation

v, m/s Projekta numurs: /16/I/002 Nacionāla un starptautiska mēroga pasākumu īstenošana izglītojamo talantu attīstībai 10 1 Velobraukšanas sace

Saturs Sākums Beigas Atpakaļ Aizvērt Pilns ekrāns 1 DAUGAVPILS UNIVERSITĀTE Dabaszinātņu un matemātikas fakultāte Matemātikas katedra Bakalaura studij

PowerPoint prezentācija

LV IEVĒRO: VISAS LAPASPUŠU NORĀDES ATTIECAS UZ SPĒLES KOMPLEKTĀ IEKĻAUTO SPĒLES NOTEIKUMU GRĀMATIŅU. SPĒLES KOMPLEKTS: 12 pentamino, 5 sarkani klucīši

Viss labs Daces Copeland teksts Andras Otto ilustrācijas Lietus līst. Lietus līst lielām, lēnām lāsēm. Labi, lai līst! Lietus ir labs. A1:12

Microsoft Word - kn817p3.doc

8

KURSA KODS

SNP3000_UM_LV_2.2.indd

Nevienādības starp vidējiem

VISMA Horizon 520. versijas apraksts Galvenās izmaiņas un uzlabojumi 520. versijā: Sistēma un infrastruktūra Notikumu reģistrēšana Notikumu reģistrēša

Saturs Sākums Beigas Atpakaļ Aizvērt Pilns ekrāns 1 DAUGAVPILS UNIVERSITĀTE Dabaszinātņu un matemātikas fakultāte Matemātikas katedra Bakalaura studij

Rīgas Tehniskā universitāte Apstiprinu: Studiju prorektors Uldis Sukovskis Rīga, Programmēšanas valoda JavaScript - Rīga Neformālās izglītī

Slide 1

Microsoft Word - 240_NOT_IPP_SAGAT

VISMA Horizon 535. versijas apraksts Galvenās izmaiņas un uzlabojumi 535. versijā: Sistēma Lietotāju pārvaldība Horizon lietotāja dati Lietotāju sarak

Gipsa_Fabrika_APVIENOTAIS_PP+Cookies

VPVKAC darbības atskaite Par laika posmu līdz gada 31. oktobrim Lubānas novada VPVKAC VEIKTIE PAKALPOJUMI UN KONSULTĀCIJAS... 1 PAKALPOJUMU UN K


Telpu Orientēšanās - Siguldas Sporta Centrs gada 2. aprīlis Nolikums Telpu Orientēšanās sacensības Siguldas Spota Centrā 2018.gada 2.aprīlī or

Latvijas Tenisa savienības SACENSĪBU NOTEIKUMI SENIORIEM 2017

LKSSF sacensību tiesnešu nolikums

AKTĪVĀS METODES SKOLĒNU IZGLĪTOŠANĀ LATVIJAS BANKAS ZINĀŠANU CENTRA "NAUDAS PASAULE" APMEKLĒJUMS DARBA LAPAS PAMATSKOLAI (7. 9. KLASEI) 8 varianti Lat

KOCĒNU NOVADA DOME Reģistrācijas Nr Alejas iela 8, Kocēni, Kocēnu pag., Kocēnu nov., LV 4220 Tālrunis , fakss , e-pasts:

Apstiprinu:

Ruta_1

lnb zinojums

PowerPoint Presentation

Olimpiskā diena 2016 programma Svinīgā daļa 09:15 "Olimpiskās dienas 2016" dalībnieku ierašanās stadiona Daugava tribīnēs. 09:30 Stāšanās f

Dual TEMP PRO

Saturs Sākums Beigas Atpakaļ Aizvērt Pilns ekrāns 1 DAUGAVPILS UNIVERSITĀTE Dabaszinātņu un matemātikas fakultāte Matemātikas katedra Bakalaura studij

WEB OF SCIENCE PAMATKOLEKCIJA Īsā lietošanas pamācība Kas ir Web of Science Pamatkolekcija? Veiciet meklēšanu datubāzē ar vairāk nekā 55 miljoniem dok

2019 QA_Final LV

Microsoft PowerPoint - RTU_Karjeras_dienas_CV_Mar2012 [Compatibility Mode]

Slide 1

Futbola spēles, rotaļas un vingrinājumi, kur nepieciešamas bumbas vadīšanas prasmes Noķer un izsit! Laukuma izmēri: apmēram 15x15m (atkarībā no vecuma

Mācību sasniegumu vērtēšanas formas un metodiskie paņēmieni

Transkripts:

SQL teikuma izpildes plāns gints.plivna@gmail.com

Kas es esmu? Pieredze darbā ar Oracle kopš 1997 Oficiālais amats sistēmanalītiėis Rix Technologies Oracle sertificēto kursu pasniedzējs Affecto Latvija (Mebius IT) Autors vienīgajam pastāvīgajam online informācijas avotam par datubāzēm latviešu valodā () LVOUG biedrs

SQL teikuma izpildes plāns Lēni strādā pārbaudi izpildes plānu! (execution plan) Kā iegūt? Kā attēlot? Kā saprast? Kā uzlabot?

Kā iegūt? Pieejams: DML teikumiem (Select, Insert, Update, Delete, Merge) Arī dažiem DDL teikumiem (Create table, Create index, Alter index.. rebuild) Iegūstams: Komanda explain plan for autotrace sql teikuma izpilde AWR aizpilde (automātiski) SQL trace Rezultāts plan_table v$sql, v$sql_plan dba_hist_sql_plan treisfails

Kā attēlot? Rezultāts plan_table v$sql, v$sql_plan dba_hist_sql_plan treisfails Attēlo ar dbms_xplan.display dbms_xplan.display_cursor dbms_xplan.display_awr tkprof SELECT * FROM table(dbms_xplan.display());

dbms_xplan.display_cursor rezultāts I SQL> select * from dual where 1=2; no rows selected SQL> select * from table(dbms_xplan.display_cursor()); PLAN_TABLE_OUTPUT ---------------------------------------------------------------------------- SQL_ID c3nfy2116z2pb, child number 0 ------------------------------------- select * from dual where 1=2 Plan hash value: 3752461848 --------------------------------------------------------------------------- Id Operation Name Rows Bytes Cost (%CPU) Time --------------------------------------------------------------------------- 0 SELECT STATEMENT 1 (100) * 1 FILTER 2 TABLE ACCESS FULL DUAL 1 2 2 (0) 00:00:01 --------------------------------------------------------------------------- Predicate Information (identified by operation id): --------------------------------------------------- 1 - filter(null IS NOT NULL) SQL> select sql_text, sql_id, plan_hash_value, child_number from V$SQL 2 where sql_id = 'c3nfy2116z2pb'; SQL_TEXT SQL_ID PLAN_HASH_VALUE CHILD_NUMBER ----------------------------- ------------- --------------- --------------- select * from dual where 1=2 c3nfy2116z2pb 3752461848 0

Tālākie uzlabojumi v$sql_plan reālā izpildes plāna soĝi, bet ierakstu skaits (Rows) un laiks (Time) no novērtējuma (estimation) ir divi veidi kā iegūt pilnu reālo info: hints gather_plan_statistics vai parametram statistics_level jābūt ALL Informācija glabājas v$sql_plan_statistics Attēlo ar dbms_xplan.display_cursor(null, null, 'ALLSTATS LAST )

Pilna reālā informācija SQL> alter session set statistics_level = ALL; Session altered. SQL> select count(*) from user_objects; COUNT(*) --------------- 105 SQL> select * from table(dbms_xplan.display_cursor(null, null, 'ALLSTATS LAST')); ----------------------------------------------------------------------------------------------- Id Operation Name Starts E-Rows A-Rows A-Time Buffers ----------------------------------------------------------------------------------------------- 1 SORT AGGREGATE 1 1 1 00:00:00.04 663 2 VIEW USER_OBJECTS 1 3209 105 00:00:00.04 663 3 UNION-ALL 1 105 00:00:00.04 663 *4 FILTER 1 105 00:00:00.03 662 *5 TABLE ACCESS FULL OBJ$ 1 3391 111 00:00:00.02 610 *6 TABLE ACCESS BY INDEX ROWID IND$ 25 1 24 00:00:00.01 52 *7 INDEX UNIQUE SCAN I_IND1 25 1 25 00:00:00.01 27 *8 INDEX RANGE SCAN I_LINK1 1 1 0 00:00:00.01 1 ----------------------------------------------------------------------------------------------- Starts cik reizes uzsākts darbs pie šī soĝa E-Rows paredzamais ierakstu skaits (estimated rows) A-Rows reālais ierakstu skaits (actual rows) Buffers cik datu bloki nolasīti

Kā saprast? ---------------------------------------------------------- Id Operation Name A-Rows ---------------------------------------------------------- 1 SORT AGGREGATE 1 2 VIEW USER_OBJECTS 105 3 UNION-ALL 105 *4 FILTER 105 *5 TABLE ACCESS FULL OBJ$ 111 *6 TABLE ACCESS BY INDEX ROWID IND$ 24 *7 INDEX UNIQUE SCAN I_IND1 25 *8 INDEX RANGE SCAN I_LINK1 0 ---------------------------------------------------------- Operācijas bez bērniem noteikti lasa datus no datubāzes (5, 7, 8) Operācijas ar bērniem iegūst datus no saviem bērniem (un varbūt lasa datus no datubāzes) (6) Pirmā operācija bez bērniem ir arī tā ar kuru izpilde tiek sākta (5) Lielākajai daĝai operāciju ir ne vairāk kā 2 bērni

Vieglāk saprast kā koku Operācijas bez bērniem noteikti lasa datus no datubāzes (5, 7, 8) Operācijas ar bērniem iegūst datus no saviem bērniem (un varbūt lasa datus no datubāzes) (6) Pirmā operācija bez bērniem ir arī tā ar kuru izpilde tiek sākta (5) Lielākajai daĝai operāciju ir ne vairāk kā 2 bērni

Biežāk izpildāmās operācijas I TABLE ACCESS FULL BY INDEX ROWID CLUSTER INDEX UNIQUE SCAN RANGE SCAN RANGE SCAN (MIN/MAX) FAST FULL SCAN FULL SCAN

Biežāk izpildāmās operācijas II NESTED LOOPS HASH JOIN MERGE JOIN MERGE JOIN CARTESIAN SORT ORDER BY AGGREGATE GROUP BY UNIQUE HASH GROUP BY UNIQUE

Biežāk izpildāmās operācijas III FILTER UNION-ALL PX [...] FAST DUAL CONNECT BY [...] COUNT STOPKEY WINDOW SORT

Savienojumi (join) Nested loops Algoritms katram ierakstam R1 ārējā tabulā A katram ierakstam R2 iekšējā tabulā B ja ierakstiem R1 un R2 izpildās savienojuma nosacījums tad atgriež {R1, R2} A Ieraksts 1 B Ieraksts 1 Ieraksts 2 Ieraksts 3 Ieraksts 2 Ieraksts 3

Nested loops iezīmes Parasti noderīgs nelielu datu kopu apstrādē Iekšējās tabulas savienojošos ierakstus vēlams atlasīt neizmantojot TABLE ACCESS FULL Atbalsta visus savienojumu nosacījumus (vienāds, lielāks, mazāks, nevienādības utt.) No ātrdarbības viedokĝa ir būtiski, kura tabula ārējā, kura iekšējā Bet šo lēmumu atstājiet optimizatora ziħā, ja vien nav Ĝoti speciāli iemesli, kāpēc tā nedarīt

Nested loops ārējās/iekšējās tabulas ilustrācija TABLE a (a number, d number) TABLE b (b number, d number) INDEX b_idx (b) 100 ieraksti 100 ieraksti SELECT /*+ use_nl (a b) ordered*/ * FROM a, b WHERE a = b; Operation Name ----------------------------------- SELECT STATEMENT TABLE ACCESS BY INDEX ROWID B NESTED LOOPS TABLE ACCESS FULL A INDEX RANGE SCAN B_IDX SELECT /*+ use_nl (a b) ordered*/ * FROM b, a WHERE a = b; Operation Name ------------------------- SELECT STATEMENT NESTED LOOPS TABLE ACCESS FULL B TABLE ACCESS FULL A 33 consistent gets 100 rows processed 317 consistent gets 100 rows processed Tas nenozīmē, ka FROM klauzā ir svarīga tabulu secība!!

Savienojumi (join) Sort merge join Algoritms (1:n gadījumam) sakārto tabulas A ierakstus pēc savienojuma kolonas(-ām) sakārto tabulas B ierakstus pēc savienojuma kolonas(-ām) iegūst pirmo ierakstu R1 no A iegūst pirmo ierakstu R1 no B kamēr nav sasniegtas A vai B beigas ja ierakstiem R1 un R2 izpildās savienojuma nosacījums tad atgriež {R1, R2} iegūst nākošo ierakstu R2 no B citādi ja R1 < R2 tad iegūst nākošo ierakstu R1 no A citādi tad iegūst nākošo ierakstu R2 no B

Sort merge join iezīmes Abām tabulām jābūt sakārtotām (izpildot kārtošanu vai jau iepriekš sakārtotas) Parasti noderīgs, ja datu kopas jau sakārtotas iepriekš vai hešsavienojums nav iespējams Atbalsta daudzus savienojumu nosacījumus (=, <, >, <=, >=, between), bet ne <> No ātrdarbības viedokĝa nav svarīgi, kura tabula pirmā, kura otrā

Sort merge join ārējās/iekšējās tabulas ilustrācija TABLE a (a number, d number) TABLE b (b number, d number) 100 ieraksti 10 000 000 ieraksti SELECT /*+ use_merge (a b) ordered*/ * FROM a, b WHERE a = b; Operation Name ----------------------------------- SELECT STATEMENT MERGE JOIN SORT JOIN TABLE ACCESS FULL A SORT JOIN TABLE ACCESS FULL B 23376 consistent gets 2 sorts (memory) 100 rows processed SELECT /*+ use_merge (a b) ordered*/ * FROM b, a WHERE a = b; Operation Name ------------------------- SELECT STATEMENT MERGE JOIN SORT JOIN TABLE ACCESS FULL B SORT JOIN TABLE ACCESS FULL A 23376 consistent gets 2 sorts (memory) 100 rows processed

Savienojumi (join) Hash join Algoritms katram ierakstam R1 kreisās puses tabulā A izrēėina hešfunkciju f(r1) savienojuma kolonai(-ām) saglabā ierakstu attiecīgajā heštabulas vietā katram ierakstam R2 labās puses tabulā B izrēėina hešfunkciju f(r2) savienojuma kolonai(-ām) katram ierakstam R1, kam f(r1) = f(r2) ja ierakstiem R1 un R2 izpildās savienojuma nosacījums tad atgriež {R1, R2} A Ieraksts 1 f(a2) f(b1) B Ieraksts 1 Ieraksts 2 Ieraksts 3 Hash f(a1) f(a3) f(b2) f(b3) Ieraksts 2 Ieraksts 3

Hash join iezīmes Parasti noderīgs lielu datu kopu apstrādē vai ja uz tabulām nav indeksu un/vai nepieciešama visa tabulas skanēšana Heštabulai (ko izrēėina no kreisās puses tabulas) Ĝoti vēlams satilpt atmiħā Atbalsta tikai vienāds (=) nosacījumu No ātrdarbības viedokĝa ir būtiski, kura tabula kreisā, kura labā Bet šo lēmumu atstājiet optimizatora ziħā, ja vien nav Ĝoti speciāli iemesli, kāpēc tā nedarīt

Hash join ārējās/iekšējās tabulas ilustrācija TABLE a (a number, d number) TABLE b (b number, d number) 100 ieraksti 10 000 000 ieraksti SELECT /*+ use_hash (a b) ordered*/ * FROM a, b WHERE a = b; Operation Name Used-Mem ---------------------------------- SELECT STATEMENT HASH JOIN 1140K(0) TABLE ACCESS FULL A TABLE ACCESS FULL B Elapsed: 00:00:01.68 100 rows processed SELECT /*+ use_hash (a b) ordered*/ * FROM b, a WHERE a = b; Operation Name Used-Mem --------------------------------- SELECT STATEMENT HASH JOIN 217M(1) TABLE ACCESS FULL B TABLE ACCESS FULL A Elapsed: 00:00:16.11 100 rows processed Tas nenozīmē, ka FROM klauzā ir svarīga tabulu secība!!

Kā uzlabot? I Tieši neiespaidojot izpildes plānu: SQL teikumā pēc iespējas tabulas datus atlasīt tikai vienreiz Sakolekcionēt reprezentatīvas statistikas; Pārbaudīt vai aptuveni sakrīt CBO paredzētais un reāli atgrieztais ierakstu skaits katrā solī

Kā uzlabot? II Tieši veicot izmaiħas izpildes plānā: Sākt datu atlasi ar tabulu, kas visvairāk ierobežo atlasāmo datu apjomu Izvēlēties noderīgāko datu pieejas metodi: Dažas operācijas sāk atgriezt datus neizpildot visu operāciju līdz galam Piemēram nested loops, table access full Dažām operācijām nepieciešams liels darbs pirms atgriež pirmo ierakstu Piemēram sort order by, merge join Izvēlēties noderīgāko savienojumu (join) mehānismu Eksperimentēt!

Saistītie informācijas avoti http://blog.tanelpoder.com/2009/03/14/newpresentation-slides-plus-aot-seminars-in-hongkong-and-dallas/ http://tkyte.blogspot.com/2007/04/whenexplanation-doesn-sound-quite.html Oracle dokumentācija - Performance Tuning Guide => The Query Optimizer PL/SQL Packages and Types Reference => dbms_xplan Šī prezentācija (un arī citas interesantas lietas) -