Fundamentos de la caché del búfer de base de datos en Oracle 12c

Oracle de 12c caché del búfer de base de datos

es normalmente la mayor parte de la SGA. Tiene datos que proviene de los archivos en el disco. Debido a acceder a los datos desde el disco es más lento que de la memoria, la único objetivo base de datos de caché de buffer es almacenar en caché los datos en la memoria para un acceso más rápido.

El caché del búfer de base de datos puede contener datos de todos los tipos de objetos:

  • Mesas

  • Índices

  • Vistas materializadas

  • Datos del sistema

En la frase caché del búfer de base de datos, el termino amortiguador se refiere a los bloques de base de datos. LA bloque de base de datos es la cantidad mínima de almacenamiento que Oracle lee o escribe. Todos los segmentos de almacenamiento que contienen los datos están formados por bloques. Cuando usted solicita los datos del disco, como mínimo Oracle lee un bloque.

Incluso si usted solicita sólo una fila, muchas filas de la misma tabla son susceptibles de ser recuperados. Lo mismo ocurre si usted solicita una columna en una fila. Oracle lee todo el bloque, que muy probablemente tiene muchas filas y todas las columnas de esa fila.

Es factible pensar que si su mesa de departamentos tiene sólo diez filas, toda la cosa se puede leer en la memoria incluso si usted está solicitando el nombre de un solo departamento.

Estado caché de buffer en Oracle 12c

los buffer cache controla lo que los bloques pueden quedarse dependiendo del espacio disponible y el estado de bloque (similar a la forma en la piscina compartida decide qué SQL llega a quedarse). El buffer cache utiliza su propia versión del algoritmo LRU.

Un bloque de la caché del búfer puede estar en uno de tres estados:

  • Gratis: No se utiliza actualmente para cualquier cosa

  • Fijado: Actualmente está siendo visitada

  • Sucio: Block ha sido modificado pero aún no escrito en el disco

Bloques libres

Idealmente, bloques libres están disponibles siempre que los necesite. Sin embargo, esto probablemente no es el caso a menos que su base de datos es tan pequeño que todo puede caber en la memoria.

El algoritmo LRU funciona un poco diferente en la caché del búfer de lo que hace en la piscina compartida. Puntajes It cada bloque y luego veces cuánto tiempo ha pasado desde que se accedió. Por ejemplo, un bloque obtiene un punto cada vez que se tocaba.

Cuanto mayores sean los puntos, el menos probable que el bloque se añade desde la memoria. Sin embargo, hay que acceder con frecuencia o la puntuación disminuye. Un bloque tiene que trabajar duro para mantenerse en la memoria si la competencia por los recursos de memoria es alta.

Dar a cada bloque una puntuación y el tiempo impide que este tipo de situaciones que surjan: Un bloque se accede en gran medida al final del mes para los informes. Su puntuación es superior a cualquier otro bloque en el sistema. Ese bloque no se accede de nuevo.

Se sienta allí perdiendo la memoria hasta que la base de datos se reinicia o otro bloque finalmente anota los puntos suficientes para vencer a cabo. Los componentes edades vez que muy rápidamente después de que usted ya no acceder a ella.

Bloques Pinned

Un bloque que se accede actualmente es un bloque de clavado. El bloque está bloqueado (o clavado) en la caché del búfer para que no pueda ser envejecido de la caché del búfer, mientras que el proceso de Oracle (a menudo en representación de un usuario) está accediendo a ella.

Bloques sucios

Un bloque modificado es un bloque sucio. Para asegurarse de que los cambios se mantienen a través de cierres de bases de datos, estos bloques sucios deben ser escritos de la caché del búfer en el disco. Los nombres de bases de datos bloques sucios en una lista sucia o cola de escritura.

Se podría pensar que cada vez que un bloque es modificado, debe ser escrito en el disco para minimizar la pérdida de datos. Este no es el caso - no incluso cuando hay una cometer (al guardar los cambios de forma permanente)! Varias estructuras ayudan a prevenir la pérdida de datos.

Además, Oracle tiene un problema de juego. El rendimiento del sistema se arrastraría si escribió bloques en el disco para cada modificación. Para combatir esto, Oracle juega las probabilidades de que la base de datos es poco probable que falle y escribe bloques en el disco sólo en grupos más grandes.

No te preocupes- ni siquiera es un riesgo contra la pérdida de datos. Oracle está consiguiendo el rendimiento de la base de datos Ahora mismo el posible costo de una toma de recuperación más largo luego. Debido a fallas en los sistemas administrados adecuadamente rara vez se producen, es una forma barata de obtener algún rendimiento. Sin embargo, no es como si Oracle deja bloques sucios por todas partes sin limpiar después de sí mismo.

Bloque de escritura desencadena en Oracle 12c

¿Qué desencadena una escritura de bloque y, por tanto, un bloque sucio?

  • La base de datos se emite un comando de apagado.

  • Un puesto de control total o parcial ocurre - que es cuando el sistema vuelca periódicamente todos los buffers modificados al disco.

  • Un umbral de tiempo de recuperación, fijado por usted, es metformina el número total de bloques sucios provoca un tiempo de recuperación inaceptable.

  • Se necesita un bloque libre y no se encuentra ninguno después de una cantidad dada de búsqueda.

  • Cierto lenguaje de definición de datos (DDL) manda. (Comandos DDL son sentencias SQL que definen los objetos de una base de datos.)

  • Cada tres segundos.

  • Otras razones. El algoritmo es compleja, y no se puede estar seguro con todos los cambios que se producen en cada versión de software.

El hecho es que la base de datos se mantiene bloques de escritura bastante ocupado en un ambiente donde hay muchos cambios.




» » » Fundamentos de la caché del búfer de base de datos en Oracle 12c