Casa Finanza personale Basi del Database Buffer Cache in Oracle 12c - dummies

Basi del Database Buffer Cache in Oracle 12c - dummies

Sommario:

Video: Full Notion Tour | Kylie Stewart (2019 Edition) 2024

Video: Full Notion Tour | Kylie Stewart (2019 Edition) 2024
Anonim

La cache del buffer del database di Oracle 12c è in genere la porzione più grande dell'SGA. Ha dati che provengono dai file su disco. Poiché l'accesso ai dati dal disco è più lento della memoria, l'unico scopo della cache del buffer del database è memorizzare nella cache i dati in memoria per un accesso più rapido. La cache del buffer del database può contenere dati da tutti i tipi di oggetti:

Tabelle

  • Indici

  • Viste materializzate
  • Dati di sistema

  • Nella frase

cache del buffer del database, il termine buffer si riferisce ai blocchi del database. Un blocco del database è la quantità minima di memoria che Oracle legge o scrive. Tutti i segmenti di archiviazione che contengono dati sono costituiti da blocchi. Quando richiedi i dati dal disco, almeno Oracle legge un blocco. Anche se si richiede solo una riga, è probabile che vengano recuperate molte righe nella stessa tabella. Lo stesso vale se richiedi una colonna in una riga. Oracle legge l'intero blocco, che molto probabilmente ha molte righe e tutte le colonne per quella riga.

È possibile pensare che se la tabella dei reparti ha solo dieci righe, l'intera cosa può essere letta in memoria anche se si richiede il nome di un solo dipartimento.

Stato cache buffer in Oracle 12c

La cache buffer

controlla quali blocchi possono rimanere in base allo spazio disponibile e allo stato del blocco (analogamente a come il pool condiviso decide quale SQL deve rimanere). Il buffer cache utilizza la propria versione dell'algoritmo LRU.

Un blocco nella cache del buffer può trovarsi in uno dei tre stati:

Libero:

  • Attualmente non utilizzato per nulla Pinned:

  • Accesso attualmente > Sporco: Il blocco è stato modificato ma non ancora scritto sul disco

  • Blocchi liberi Idealmente, i blocchi liberi sono disponibili quando ne hai bisogno. Tuttavia, questo probabilmente non è il caso, a meno che il tuo database sia così piccolo che l'intera cosa possa essere contenuta nella memoria.

L'algoritmo LRU funziona in modo leggermente diverso nella cache del buffer rispetto al pool condiviso. Assegna un punteggio a ciascun blocco e quindi indica per quanto tempo è trascorso dall'accesso. Ad esempio, un blocco ottiene un punto ogni volta che viene toccato.

Più alto è il punteggio, minore è la probabilità che il blocco venga scaricato dalla memoria. Tuttavia, è necessario accedere frequentemente o il punteggio diminuisce. Un blocco deve lavorare duro per rimanere in memoria se la competizione per le risorse di memoria è alta.

Assegnare a ciascun blocco un punteggio e un tempo impedisce che si verifichi questo tipo di situazione: a un blocco si accede pesantemente alla fine del mese per i report.Il suo punteggio è superiore a qualsiasi altro blocco nel sistema. A quel blocco non si accede mai più.

È lì che spreca memoria finché il database non viene riavviato o un altro blocco ottiene un punteggio sufficiente per eliminarlo. Il componente tempo lo invecchia molto rapidamente dopo che non lo si accede più.

Blocchi bloccati

Un blocco attualmente in accesso è un blocco bloccato

.

Il blocco è bloccato (o bloccato) nella cache del buffer in modo che non possa essere invecchiato dalla cache del buffer mentre il processo Oracle (che spesso rappresenta un utente) lo sta accedendo. Blocchi sporchi Un blocco modificato è un blocco sporco

.

Per assicurarsi che le modifiche siano mantenute attraverso gli arresti del database, questi blocchi sporchi devono essere scritti dalla cache del buffer sul disco. Il database denomina i blocchi sporchi in un elenco sporco o in una coda di scrittura. Si potrebbe pensare che ogni volta che un blocco viene modificato, dovrebbe essere scritto sul disco per minimizzare i dati persi. Questo non è il caso - nemmeno quando c'è un commit

(quando si salvano le modifiche in modo permanente)! Diverse strutture aiutano a prevenire i dati persi. Inoltre, Oracle ha un problema di gioco d'azzardo. Le prestazioni del sistema scorrono se si scrivono blocchi su disco per ogni modifica. Per ovviare al problema, Oracle ha le probabilità che il database non riesca a fallire e scrive blocchi su disco solo in gruppi più grandi. Non preoccuparti; non è nemmeno un rischio contro i dati persi. Oracle sta ottenendo prestazioni dal database

adesso

a spese possibili di un recupero che richiede più tempo più tardi. Poiché i guasti nei sistemi correttamente gestiti si verificano raramente, è un modo economico per ottenere prestazioni. Tuttavia, non è come se Oracle lasciasse blocchi sporchi dappertutto senza ripulire se stesso. Trigger di scrittura a blocchi in Oracle 12c Che cosa innesca una scrittura di blocco e quindi un blocco sporco?

Il database viene emesso un comando di arresto.

Si verifica un checkpoint completo o parziale, ovvero quando il sistema scarica periodicamente tutti i buffer sporchi sul disco.

  • Viene raggiunta una soglia del tempo di recupero, impostata dall'utente; il numero totale di blocchi sporchi causa un tempo di recupero inaccettabile.

  • È necessario un blocco libero e nessuno viene trovato dopo un dato numero di ricerche.

  • Alcuni comandi DDL (Data Definition Language). (I comandi DDL sono istruzioni SQL che definiscono gli oggetti in un database.)

  • Ogni tre secondi.

  • Altri motivi. L'algoritmo è complesso e non è possibile essere certi con tutte le modifiche che si verificano con ogni versione del software.

  • Il fatto è che il database rimane occupato a scrivere blocchi in un ambiente in cui ci sono molti cambiamenti.

Basi del Database Buffer Cache in Oracle 12c - dummies

Scelta dell'editore

Come utilizzare le funzionalità dell'app Klout su dispositivi Apple - dummies

Come utilizzare le funzionalità dell'app Klout su dispositivi Apple - dummies

L'esperienza mobile di Klout è più limitato rispetto al sito web completo. Tuttavia, molte funzionalità sono ancora disponibili con l'app per dispositivi mobili, incluso dare + K ai tuoi influenzatori, controllare il tuo punteggio Klout e apportare semplici modifiche al tuo profilo. E con l'implementazione di Klout per il tuo iPhone Passbook puoi persino usare Klout per ottenere ...

Metriche dei social media: App Android SDK di Google Analytics - dummies

Metriche dei social media: App Android SDK di Google Analytics - dummies

Tracciamento delle metriche di un'applicazione ( un'app) è stata semplificata, ma le app sono ancora isolate. Puoi tenere traccia di ogni app, ma le soluzioni sono ancora in fase di creazione per tenere traccia di tutte le app. Per andare avanti con Google Analytics SDK per la tua app Android, segui questi passaggi: Scarica l'SDK di Google Analytics per Android. Aggiungi la libreria libGoogleanalytics. jar ...

Metriche sui social media: individuazione del momento di trazione con Google+ - dummies

Metriche sui social media: individuazione del momento di trazione con Google+ - dummies

In i social media, il momento di trazione potrebbe anche essere chiamato il "miglior tempo per condividere su Google+ o altri siti sociali. "Il momento migliore per te potrebbe non essere il momento migliore per i tuoi colleghi generatori di contenuti. (Il merito di questo suggerimento principale va a Christopher Penn che per primo condivise la sua osservazione sulla ricerca ...

Scelta dell'editore

Combinazione di due foto sulla tua Nikon D3400 con sovrapposizione immagini - manichini

Combinazione di due foto sulla tua Nikon D3400 con sovrapposizione immagini - manichini

L'opzione Sovrapposizione immagini sulla Il menu di ritocco di Nikon D3400 consente di unire due foto in una. Questa opzione è stata utilizzata per combinare una foto di un lupo mannaro, mostrato a sinistra, con una scena da giardino notturno, mostrata nel mezzo. Il risultato è l'immagine spettrale mostrata a destra. Oooh, spaventoso! Su ...

Scelta di una modalità Esposizione per una Nikon DSLR - manichini

Scelta di una modalità Esposizione per una Nikon DSLR - manichini

La prima impostazione da prendere in considerazione quando si le riprese con la tua Nikon D3100, D5100 o D7000 sono la modalità di esposizione, che puoi selezionare tramite la ghiera dei modi. La tua scelta determina la quantità di controllo che hai rispetto a due impostazioni di esposizione critiche - diaframma e tempo di posa - oltre a molte altre opzioni, incluse quelle relative ...

Scelta del formato immagine JPEG per una reflex Nikon - dummies

Scelta del formato immagine JPEG per una reflex Nikon - dummies

Offerte Nikon D3100, D5100 o D7000 i due tipi di file comuni nella maggior parte delle fotocamere digitali odierne: JPEG e Camera Raw, o semplicemente Raw in breve, che passa dallo specifico moniker NEF (Nikon Electronic Format) sulle fotocamere Nikon. Il tipo di file, talvolta noto anche come formato file, determina come i dati dell'immagine ...

Scelta dell'editore

Comprensione della struttura delle classi Java - dummies

Comprensione della struttura delle classi Java - dummies

Impossibile creare un'applicazione Java senza creare una classe. Tuttavia, i modi in cui si usano le classi all'inizio quando si apprendono su di essi sono stati relativamente semplicistici - Java è in grado di avere una complessità considerevolmente maggiore, che è il punto di questo capitolo. Le classi hanno una struttura specifica. Proprio come i progetti ...

Come utilizzare i metodi astratti in Java - dummies

Come utilizzare i metodi astratti in Java - dummies

Sia le interfacce che le classi astratte hanno metodi astratti in Java. Ma i metodi astratti giocano ruoli leggermente diversi in questi due tipi di tipi di riferimento. Come puoi tenere tutto dritto nella tua mente? La prima cosa da fare è ricordare che nessuno impara a conoscere i concetti di programmazione orientata agli oggetti senza ottenere molti ...

Come utilizzare l'interfaccia CharSequence in Java - dummies

Come utilizzare l'interfaccia CharSequence in Java - dummies

L'API Java include un'interfaccia utile chiamata CharSequence. Tutte e tre queste classi - String, StringBuilder e StringBuffer - implementano questa interfaccia. Questo metodo esiste principalmente per consentire di utilizzare String, StringBuilder e StringBuffer in modo intercambiabile. A tal fine, molti dei metodi delle classi String, StringBuilder e StringBuffer utilizzano CharSequence come parametro ...