Sommario:
- La cache della libreria in Oracle 12c
- La cache del dizionario in Oracle 12c
- La cache dei risultati del server in Oracle 12c
- Il pool riservato in Oracle 12c
- Algoritmo utilizzato meno recentemente in Oracle 12c
Video: [ENG SUB] RUN BTS! 2019 - EP.86 2024
Alcuni oggetti e dispositivi in Oracle 12c vengono utilizzati frequentemente. Pertanto, ha senso averli pronti ogni volta che si desidera eseguire un'operazione. Inoltre, i dati nel pool condiviso non vengono mai scritti sul disco.
Il pool condiviso stesso è composto da quattro aree principali:
-
Cache libreria
-
Cache dizionario
-
Cache risultati server
-
Pool riservato
Una cache è un'area temporanea in memoria creata per un rapido recupero di informazioni che altrimenti richiederebbero più tempo per essere recuperate. Ad esempio, le cache menzionate nell'elenco precedente contengono informazioni precompilate. Invece di un utente che deve calcolare i valori ogni volta, l'utente può accedere alle informazioni in una cache.
La cache della libreria in Oracle 12c
La cache della libreria è proprio come si chiama: una libreria. Più specificamente, è una libreria di istruzioni SQL pronte all'uso.
Ogni volta che si esegue un'istruzione SQL, accade molto in background. Questa attività in background è chiamata analizzando . L'analisi può essere piuttosto costosa in termini di potenza di elaborazione.
Durante l'analisi, alcune di queste cose accadono:
-
La sintassi dell'istruzione viene controllata per assicurarsi di aver digitato tutto correttamente.
-
Gli oggetti a cui ti riferisci sono controllati. Ad esempio, se si sta tentando di accedere a una tabella denominata EMPLOYEE, Oracle si assicura che esista nel database.
-
Oracle si assicura di avere il permesso di fare ciò che stai cercando di fare.
-
Il codice viene convertito in un formato pronto per il database. Il formato è chiamato codice byte o codice p.
-
Oracle determina il percorso o il piano ottimale. Questa è di gran lunga la parte più costosa.
Ogni volta che si esegue un'istruzione, le informazioni vengono memorizzate nella cache della libreria. In questo modo, la prossima volta che si esegue l'istruzione non deve verificarsi molto (come il controllo delle autorizzazioni).
La cache del dizionario in Oracle 12c
La cache del dizionario viene spesso utilizzata per l'analisi quando si esegue SQL. Puoi considerarlo come una raccolta di informazioni su di te e sugli oggetti del database. Può controllare le informazioni di tipo sfondo.
La cache del dizionario è anche regolata dalle regole dell'algoritmo Least Used Used (LRU): Se non è della giusta dimensione, le informazioni possono essere sfrattate. Non avere spazio sufficiente per la cache del dizionario può influire sull'utilizzo del disco.
Poiché le definizioni di oggetti e informazioni basate su autorizzazioni sono memorizzate nei file di database, Oracle deve leggere i dischi per ricaricare tali informazioni nella cache del dizionario. Questo richiede più tempo rispetto a scaricarlo dalla memoria cache.Immagina un sistema con migliaia di utenti che eseguono costantemente SQL … una cache di dizionari di dimensioni errate può davvero ostacolare le prestazioni.
Come la cache della libreria, non è possibile controllare direttamente la dimensione della cache del dizionario. Man mano che il pool condiviso complessivo cambia dimensione, lo stesso vale per la cache del dizionario.
La cache dei risultati del server in Oracle 12c
La cache dei risultati del server ha due parti:
-
Cache dei risultati SQL: Questa cache consente a Oracle di vedere che i dati richiesti, richiesti da un'istruzione SQL eseguita di recente, potrebbero essere conservato in memoria Questa situazione consente a Oracle di saltare la parte dell'esecuzione di, er, esecuzione, per mancanza di un termine migliore, e andare direttamente al set di risultati, se esiste.
La cache dei risultati SQL funziona meglio su dati relativamente statici (come la descrizione di un articolo su un sito di e-commerce).
Dovresti preoccuparti che la cache dei risultati restituisca dati errati? Affatto. Oracle invalida automaticamente i dati memorizzati nella cache dei risultati se uno qualsiasi dei componenti sottostanti viene modificato.
-
Cache dei risultati delle funzioni PL / SQL: La cache dei risultati della funzione PL / SQL memorizza i risultati di un calcolo. Ad esempio, supponiamo di avere una funzione che calcola il valore del dollaro in base al tasso di cambio dell'euro. Potresti non voler memorizzare quel valore reale poiché cambia costantemente.
Invece, hai una funzione che chiama una tariffa giornaliera o oraria per determinare il valore del dollaro. In un'applicazione finanziaria, questa chiamata potrebbe verificarsi migliaia di volte all'ora. Pertanto, invece dell'esecuzione della funzione, passa direttamente alla cache dei risultati PL / SQL per ottenere i dati tra gli aggiornamenti della velocità. Se la velocità cambia, Oracle esegue nuovamente la funzione e aggiorna la cache dei risultati.
Il pool riservato in Oracle 12c
Quando Oracle deve allocare una porzione grande (oltre 5 KB) di memoria contigua nel pool condiviso, alloca la memoria nel pool riservato. Dedicare il pool riservato per gestire allocazioni di memoria di grandi dimensioni migliora le prestazioni e riduce la frustrazione della memoria.
Algoritmo utilizzato meno recentemente in Oracle 12c
Se la cache della libreria è a corto di spazio, gli oggetti vengono espulsi. Le dichiarazioni utilizzate più rimangono nella cache della libreria più a lungo. Più spesso vengono utilizzati, minori sono le possibilità di essere sfrattati se la cache della libreria è a corto di spazio.
Il processo di eliminazione della cache della libreria si basa su quello che viene chiamato l'algoritmo Least Recently Used (LRU). Se la tua scrivania è ingombra, cosa metti via prima? Le cose che usi meno.
Non è possibile modificare autonomamente la dimensione della cache della libreria. La dimensione complessiva del pool condiviso determina ciò. Se pensi che troppe dichiarazioni siano state sfrattate, puoi aumentare la dimensione complessiva del pool condiviso se la stai modificando da solo. Se stai lasciando che Oracle esegua la messa a punto, recupera la memoria libera da altrove.