Cum Oracle decide care blocuri sunt absente în buffer cache pentru o interogare?

0

Problema

Să presupunem că ne-am executați următoarea interogare.

select * from employees where salary > 10000;

După un timp, am executați următoarea interogare.

select * from employees where salary > 500;

Cel de-al doilea tind să se întoarcă mai multe blocuri. Dar avem deja unele dintre aceste blocuri în cache tampon pentru că din interogarea anterioară. Poate că unele dintre ele sunt șterse forma buffer cache-ul, dar unele sau toate blocurile din prima interogare pot exista în continuare acolo. Deci, aici, serverul de baze de date ar trebui să știe blocuri care deja există și care să fie citit de pe disc în plus.

Intrebarea mea este, cum de date a găsi și de a decide care blocuri de citit de pe disc în plus?

1

Cel mai bun răspuns

3

Oracle folosește LRU tehnica ( care vine de la 'cel mai recent utilizat'). Acesta este un algoritm de calculator folosit pentru a gestiona datele într-o memorie cache. Atunci când un cache-ul devine plin si ai nevoie de spatiu pentru lucruri noi - să renunțați la cel mai puțin recent utilizat elementele prima (lucrurile nu s-au folosit pentru un timp, dar sunt în cache consumatoare de spațiu).

Acesta nu este specific la blocuri de date - și blocuri de date nu sunt păstrate într-un LRU listă, acestea sunt gestionate de o atingere conta în aceste zile - dar care atinge numărul de algoritm este foarte mult ca un LRU deci, vă puteți gândi în acest mod.

Pe scurt, atunci când ai auzit LRU, cred că de un cache care gestionează unele date (date), și tinde să se debaraseze de obiecte din cache, bazat pe dacă acestea au fost utilizate recent sau nu. Cel mai recent ceva a fost folosit - cu atât mai probabil este să rămână în memoria cache.

Fiecare bloc are un DBA - bloc de date adresa - care constă dintr-un fișier# și bloc#. Aceasta identifică în mod unic un bloc într-o bază de date. Oracle folosește "cheie" pentru a identifica blocul în buffer cache.

Dacă executați o interogare, dacă unele blocuri nu sunt în cache, este pentru că LRU a le respingă în scopul de a aloca mai multe lucruri care sunt utilizate mai recent. Aceasta nu este o garanție, dar dacă aveți nevoie de acest fel de garanție, puteți utiliza diferite piscine în buffer cache, în principal, puteți utiliza KEEP piscina pentru a menține frecvent accesate segmente în buffer-ul cache.

Sperăm că clarifică.

2021-10-28 11:08:38

@oramas, orice îndoieli cu privire la răspunsul ?
Roberto Hernandez

În alte limbi

Această pagină este în alte limbi

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