Practica de a folosi indicii în oracol

Practica de a folosi sugestii în Oracle
Înlocuirea sugestiilor într-o interogare SQL fără a modifica interogarea

În timpul funcționării bazelor de date, uneori devine necesară ajustarea planurilor de interogare SQL fără a fi nevoie să modificați textul interogării SQL

Acest lucru poate ajuta la metode care au apărut la Oracle, deoarece Oracle 9i și dezvoltate în Oracle 11g, permițând indicii de substituție (informatii de optimizare a) în interogare, fără a modifica textul cererii de operare și fără compilarea nouă procedură stocată (funcție, procedură, pachet), în care este el.

Practica a arătat că aceste metode sunt deosebit de eficiente în timpul tranziției de la o versiune a Oracle la alta. De exemplu, atunci când migrați de la Oracle 11.2.0.3 la 11.2.0.4 sau Oracle 12c, planurile de executare a interogărilor care au fost optime în versiunea anterioară devin uneori departe de a fi optime.

În acest caz, revenirea la planul optim de execuție permite tehnici diferite, o astfel de modificare sau comadă plus structura indiciu (de exemplu, indicele de indiciu) pentru interogarea asociată cu procedura stocată recompilării ulterioară în care se află. De asemenea, se poate aplica un indiciu în interogare, returnând munca de optimizare la versiunile anterioare ale Oracle, în care planurile de execuție au fost optime. După cum arată practica, în Oracle 11g acest lucru poate ajuta sugestii:

Dacă aveți probleme cu planurile de execuție în interogări cu variabile de legare (variabile conexe), optimizarea planului de executare a interogării poate ajuta (pe lângă sugestii, cum ar fi indexul), un alt indiciu:

/ * + opt_param ('_optim_peek_user_binds' 'false) * /

Acest indiciu modifică valoarea parametrului de inițializare _optim_peek_user_binds nedocumentate, care afectează punerea în aplicare a planurilor de a lega-variabile la true (implicit) la valoarea false.

În acest caz, puteți utiliza metodele de înlocuire a indiciilor rapide în interogare fără recompilarea procedurii stocate. Aplicarea acestor metode permite, în plus, anularea rapidă a utilizării sugestiilor și încercarea rapidă a altor variante de sugestii pentru îmbunătățirea planului.

Un avantaj important al aplicării unei metode de substituție indiciu este că, înainte de a introduce indiciu în cerere (cu proceduri ulterioare recompilare stocate, care este cererea), putem vedea că acest indiciu îmbunătățește de fapt plan de execuție interogare.

În același timp, substituirea unui indiciu într-o interogare poate fi justificată, de regulă, în cazul în care stabilitatea planurilor de execuție este în primul rând importantă. Suportul pentru indici poate duce la restricționarea artificială a libertății de acțiune a optimizatorului, ceea ce poate conduce la imposibilitatea utilizării altor planuri, probabil, mai optimale (de exemplu, în funcție de valorile variabilelor de legare).

Începând cu Oracle 9i, a apărut o metodă de înlocuire sau de adăugare de sugestii la o interogare care nu este accesată pentru editare, cunoscută sub numele de metoda Stored Outlines. Această metodă permite nu numai înlocuirea, ci și înlocuirea sugestiei existente cu alta, atât în ​​interogarea principală, cât și în subcheile interogării.

Cu toate acestea, această metodă nu se regăsește în gama noastră largă de aplicații, datorită faptului că se confruntă cu problema utilizării acestei metode în interogările care sunt variabile se leagă (de exemplu, tipul de interogare SELECT * FROM acord UNDE ISN =: b) , în timp ce majoritatea interogărilor se bazează pe variabilele de legare.

Există și alte metode de înlocuire a sugestiilor în interogare, de exemplu, profile SQL, dar am găsit și metode mai exigente care au apărut în Oracle 11g, cum ar fi planul de bază SQL și patch-ul SQL. Acest lucru se datorează confortului de a lucra cu aceștia și capacitatea de a lucra cu interogări care conțin variabile de legare.

Versiunea PDF a acestui număr poate fi achiziționată în magazinul nostru.

Articole similare