Jak Oracle decyduje, jakie bloki brakuje w buforowym pamięci podręcznej do żądania?

0

Pytanie

Załóżmy, że wykonaliśmy następujące zapytanie.

select * from employees where salary > 10000;

Po pewnym czasie wykonaliśmy następujące zapytanie.

select * from employees where salary > 500;

Drugi, zazwyczaj zwraca więcej bloków. Ale mamy już niektóre z tych bloków w buforowym pamięci podręcznej z poprzedniego zapytania. Być może niektóre z nich usunięte z bufora pamięci podręcznej, ale niektóre lub wszystkie bloki z pierwszego zapytania mogą wciąż istnieć tam. Tak więc, tutaj serwer bazy danych musi wiedzieć, jakie bloki już istnieją i które z nich należy dodatkowo odczytać z dysku.

Moje pytanie brzmi, jak baza danych znajduje i decyduje, jakie bloki dodatkowo odczytywać z dysku?

1

Najlepsza odpowiedź

3

Oracle wykorzystuje metodę LRU ( co oznacza "co najmniej ostatnio używany"). To komputerowy algorytm, który jest używany do zarządzania danymi w pamięci podręcznej. Gdy bufor jest wypełniony i trzeba miejsce dla nowych rzeczy - najpierw kwiecistą najmniej niedawno używane elementy (rzeczy, które jakiś czas nie używali, ale które znajdują się w pamięci podręcznej, która zajmuje miejsce).

To nie odnosi się konkretnie do bloków danych i bloki danych w rzeczywistości nie są przechowywane w liście LRU, w dzisiejszych czasach nimi zarządza licznik dotyku, ale ten algorytm liczenia dotyku jest bardzo podobny do LRU, więc można myśleć o tym w ten sposób.

Krótko mówiąc, kiedy słyszysz LRU, pomyśl o buforze, który zarządza niektórymi danymi (dowolnymi danymi) i ma tendencję do usuwania elementów z pamięci podręcznej, w zależności od tego, czy były one wykorzystywane niedawno, czy nie. Im bardziej ostatnio, że coś jest używane, tym większe prawdopodobieństwo, że pozostanie w pamięci podręcznej.

Każdy blok ma DBA - adres bloku danych, który składa się z pliku# i bloku#. To jednoznacznie identyfikuje blok w bazie danych. Oracle wykorzystuje ten "klucz" do identyfikacji jednostki w buforowym pamięci podręcznej.

Jeśli wykonujesz zapytanie, jeśli niektóre z bloków nie ma w pamięci podręcznej, to dlatego, że LRU czyściłem je, aby zaznaczyć więcej rzeczy, które były używane w ostatnim czasie. To nie gwarancja, ale jeśli potrzebujesz taka gwarancja, można korzystać z różnych pul w buforowym pamięci podręcznej, w zasadzie można użyć KEEP poole do przechowywania często używanych segmentów w buforowym pamięci podręcznej.

Mam nadzieję, że to wyjaśni sytuację.

2021-10-28 11:08:38

@oramas, istnieją wątpliwości co do odpowiedzi ?
Roberto Hernandez

W innych językach

Ta strona jest w innych językach

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