Ako funguje Oracle rozhodnúť, ktorý z blokov chýbajú v buffer cache pre dotaz?

0

Otázka

Predpokladajme, že sme vykonaný nasledovný dotaz.

select * from employees where salary > 10000;

Po nejakom čase sme zrealizovali nasledovné dotaz.

select * from employees where salary > 500;

Druhý tendenciu vrátiť viac blokov. Ale máme už niektoré z týchto blokov v buffer cache, pretože z predchádzajúcich dotaz. Možno, že niektorí z nich sú odstránené tvoria buffer cache, ale niektoré alebo všetky bloky od prvého dotazu môže stále existujú tam. Takže tu, databázový server by mal vedieť, ktoré blokuje už existujú a tie, ktoré sa čítať z disku navyše.

Moja otázka je, ako sa databázu, nájsť a rozhodnúť, ktorý z blokov čítať z disku navyše?

1

Najlepšiu odpoveď

3

Oracle používa LRU technika ( čo je skratka pre 'najmenej nedávno použité'). Je to počítačový algoritmus, ktorý používajú na riadenie dát do vyrovnávacej pamäte. Keď sa pamäť naplní a potrebujete priestor pre nové veci - môžete zrušiť najmenej naposledy použité položky prvý (veci, ktoré neboli použité na chvíľu, ale sú v cache náročné na priestor).

Nie je špecifické pre dátové bloky a bloky údajov v skutočnosti nie sú uskladnené v LRU zoznam, sú riadené dotyk počítať v týchto dňoch, ale že dotyk počítať algoritmus je veľmi veľa, ako LRU, takže si môžete myslieť na to, že spôsob, ako.

V skratke, keď počujete LRU, že z vyrovnávacej pamäte, ktorá spravuje niektoré údaje (všetky údaje), a má tendenciu zrušiť položky z vyrovnávacej pamäte na základe toho, či boli použité nedávno, alebo nie. Viac nedávno niečo bolo použité - tým väčšia je pravdepodobnosť zostať v cache.

Každý blok má DBA - data block adresa -, ktorý sa skladá zo súboru# a blok#. Toto jednoznačne identifikuje bloku v databáze. Oracle používa že "kľúč" identifikovať bloku do vyrovnávacej pamäte cache.

Ak spustíte dotaz, ak niektoré bloky nie sú v cache, že je to preto, LRU vyjasní, aby ich prideliť viac vecí, ktoré sa nedávno použili. To nie je záruka, ale ak potrebujete, aby záruky, môžete použiť rôzne bazény v buffer cache, hlavne môžete použiť KEEP bazén udržiavať často pristupovali k segmenty v buffer cache.

Dúfam, že to objasňuje.

2021-10-28 11:08:38

@oramas, akékoľvek pochybnosti o odpoveď ?
Roberto Hernandez

V iných jazykoch

Táto stránka je v iných jazykoch

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................