03_BBDD.GVD.Bitmap
-
Upload
leandro-arge -
Category
Documents
-
view
220 -
download
0
description
Transcript of 03_BBDD.GVD.Bitmap
Grandes volúmenes de
datos Índices Bitmap en Oracle
bases de datos
Índices Bitmap en Oracle
Para columnas con un pequeño conjunto de valores posibles y con pocas actualizaciones
Por ejemplo, queremos saber las provincias de la comunidad valenciana (3) en las que nuestro clientes (millones) han vivido BitMap
2
Índices Bitmap en Oracle
Son una matriz de 0 y 1 En una coordenada esta todos los rowids
de la tabla y en la otra todos los posibles valores del índice
1 = la fila tiene ese valor 0 = la fila no lo tiene
3
Índices Bitmap en Oracle
4
rowid Alicante Valencia Castellón
RWIDX 0 1 0
RWIDY 0 1 1
RWIDW 0 0 1
RWIDZ 1 0 0 RWIDU
1 1 0
clientes
El cliente cuyo registro tiene el ROWIDY
ha vivido en Valencia y Castellón
Índices Bitmap en Oracle
Ventajas
◦ Pueden suponer un ahorro de espacio frente a índices B-tree
◦ Condiciones AND/OR en la cláusula WHERE se resuelven de forma rápida realizando las correspondientes operaciones booleanas sobre el mapa de bits antes de convertir el mapa resultante a los identificadores de fila
5
Índices Bitmap en Oracle
Restricciones
◦ Sólo útiles para operaciones AND, OR, NOT, =
◦ No adecuados para operaciones de comparación <, >, <>
◦ No adecuados para aplicaciones con muchas transacciones concurrentes
6
Índices Bitmap en Oracle
Ejercicio
◦ Busca columnas en el esquema que sean adecuadas para índices bitmap
◦ Piensa en alguna columna a las ya existentes para la cual sería adecuado un índice bitmap
7
Índices Bitmap en Oracle
columnas candidatas del ejemplo
◦ pedidos.esta_pedi
◦ ejecucion.nume_even
8
Índices Bitmap en Oracle
Mapa de bits para la columna pedidos.esta_pedi
ROWID ‘C’ ‘R’
1xx 1 0
2xx 0 1
3Xx 1 0
4xx 0 1
5xx 1 0
6xx 0 1
9
where nume_pedi = ‘C’;
Índices Bitmap en Oracle
where nume_even in (2, 3, 4)
in
1
0
1
1
RowId 2 3 4
1xxx 1 0 1
2xxx 0 0 0
3xxx 0 1 0
4xxx 0 1 1
10
nume_even