logo
MyWebStudies - Página de inicio
INGRESAR

REGISTRARSE
Buscador

Creando tablespaces con diferentes tamaños de bloque en oracle - oracle dba

mywebstudies.com

PorMyWebStudies

2024-04-05
Creando tablespaces con diferentes tamaños de bloque en oracle - oracle dba


Creando tablespaces con diferentes tamaños de bloque en oracle - oracle dba

Lo primero que debemos saber, es que el parámetro DB_BLOCK_SIZE define el tamaño estándar del bloque, lo cual quiere decir que este debe coincidir con el tamaño de los bloques de las tablespaces. Ya que cuando hacemos una QUERY , Oracle lo que hace es, si no se encuentra en la memoria, va directamente al fichero y lee el bloque.

El tamaño estándar del bloque es de 8k.

Como mencionábamos, los bloques de las tablespaces deben coincidir con el tamaño definido ya que si una tablespace, contiene varios bloques, que van a ser de 8k por supuesto, y realizamos una SELECT , Oracle lo que hace es coger un bloque de 8k y lo sube a memoria, de ahí que repitamos, tiene que coincidir el tamaño del bloque que se encuentra en el disco, con el tamaño del bloque que se encuentra en memoria.

Debemos saber que a partir de la versión 10 de Oracle, es posible tener distintos tamaños de bloques. Lo que ocurría antes de esta versión 10, era que podíamos definir el tamaño del bloque, ya fuera de 2k, 4k, 16k etc. pero los bloques de las tablespaces debían tener obligatoriamente el mismo tamaño.

A partir de la versión 10, tenemos la posibilidad de tener zonas de memoria con distintos tamaños de bloque.

imagen

Como ya sabemos tenemos la SGA , la cual va a estar representada con un rectángulo.

Dentro de la SGA , ya conocemos que tenemos una zona de memoria, que estará representada con un rectángulo más pequeño, esta zona de memoria la conocemos como

DB_CACHE-SIZE: Que por defecto la DB_CACHE_SIZE tiene bloques de 8k .

imagen

Tenemos una tablespace, que estará representada por un triángulo. Y esta tablespace está dividida en bloques de 8k, como cualquiera de las tablespaces que hemos visto en el curso.

Cuando estamos haciendo una transacción y buscamos una fila en concreto, Oracle lo que hace es irse a buscar la fila dentro de un bloque, ya que como dijimos la tablespace está dividida en varios. Y lo que hará es tomar el bloque y subirlo a memoria clonándolo.

imagen

El tamaño de bloque de 8k, es muy práctico para trabajar con bases de datos tipo transaccional, ya que un bloque puede estar compuesto por varias filas, y si buscamos una en concreto, no perdemos mucho en memoria, ya que al ser un bloque pequeño es gestionado más fácil.

Un DATA WAREHOUSE le es más práctico tener bloques más grandes, lo que implica tener un mejor input-output en cada lectura y escritura, ya que al ser más grande el bloque, contiene más filas.

Pero cuál es el problema en sí, pues que en la tablespace de 8k definidos, no podemos tener bloques más grandes.

Entonces qué hacemos?

Pues creamos una tablespace, que la estaremos representando con un rombo, con bloques de una mayor denominación, por ejemplo de 32k.

Antes de crear la tablespace debemos tener creada una zona de memoria, donde se alojarán bloques de 32k. Tal y como vemos en la diapositiva.

imagen

Por lo que cuando se haga una búsqueda en esa tablespace, Oracle hará lo mismo que con la otra, clonará el bloque subiéndolo a la DB_CACHE_SIZE de 32k.

imagen