Documente Academic
Documente Profesional
Documente Cultură
Agenda
Funciones de un DBA Diseo de grupos de archivos Rendimiento E/S del disco Particionamiento
Actores en un Sistema de BD
Administrador de la base de datos (ABD)
Los objetos sin particiones deben residir en un grupo e archivos nico, aunque la informacin que contenga un objeto sin particin pueda abarcar ms de una archivo
Los grupos de archivos no tienen ninguna caracterstica de rendimiento inherente. Las caractersticas de rendimiento derivan del archivo o archivos del grupo de archivos.
Qu es el particionamiento de datos?
Los registros de una tabla se dividen en diferentes trozos(como tablas individuales) Todos las filas siguen perteneciendo a la misma tabla lgica
Funciones de particin
Una funcin de particin define los puntos de frontera que utiliza SQL Server para dividir informacin en un esquema de particin, un ejemplo de funcin de particin es el siguiente:
La clausula AS permite especificar si la funcin de particin que est creando es RANGE LEFT o RANGE RIGHT. Los parmetros LEFT y RIGHT define que particin incluir los puntos de fronteras.
Administracin de Bases de Datos
Valor mn. - 11
21 31 41 51 61
Valor mx. 10 20
30 40 50 60 +
Valor mn. - 10
20 30 40 50 60
Valor mx. 9 19
29 39 49 59 +
Como el mximo de particiones de un objeto es 1000, se puede especificar un mximo de 999 puntos de frontera
Esquemas de particin
Un esquema de particin, que es una definicin alternativa para el almacenamiento, se define para abarcar a uno o ms grupos de archivos. Un ejemplo de un esquema de particin es el siguiente:
CREATE PARTITION SCHEME ParticionScheme AS PARTITION FuncionDeParticion TO (Fg1, Fg2, Fg3, Fg4, Fg5, Fg6, Fg7)
ALTER PARTITION FUNTION partition_funtion_name() { SPLIT RANGE (boundary_value) | MERGE RANGE (boundary_value)} [;]
Particionamiento (MySQL)
Para determinar si el servidor MySQL soporta particionamiento puede ejecutar el siguiente comando SHOW VARIABLES LIKE '%partition%
Particionamiento (MySQL)
Particiones por RANGE
CREATE TABLE Ejemplo (id INT ,NombreVARCHAR(50) ,purchased DATE) PARTITION BY RANGE( YEAR(purchased) ) ( PARTITION p0 VALUES LESS THAN (1990) ,PARTITION p1 VALUES LESS THAN (1995) ,PARTITION p2 VALUES LESS THAN (2000) ,PARTITION p3 VALUES LESS THAN (2005) );
Administracin de Bases de Datos
Particionamiento (MySQL)
Particiones por LIST
CREATE TABLE employees (id INT NOT NULL , fname VARCHAR(30) , lname VARCHAR(30) , hired DATE NOT NULL DEFAULT '1970-01-01 , separated DATE NOT NULL DEFAULT '9999-12-31 , job_code INT , store_id INT ) PARTITION BY LIST(store_id) ( PARTITION pNorth VALUES IN (3,5,6,9,17) ,PARTITION pEast VALUES IN (1,2,10,11,19,20) ,PARTITION pWest VALUES IN (4,12,13,14,18) ,PARTITION pCentral VALUES IN (7,8,15,16) );
Particionamiento (MySQL)
Particiones HASHES
CREATE TABLE employees ( id INT NOT NULL , fname VARCHAR(30) , lname VARCHAR(30) , hired DATE NOT NULL DEFAULT '1970-01-01 , separated DATE NOT NULL DEFAULT '9999-12-31 , job_code INT , store_id I NT ) PARTITION BY HASH( YEAR(hired) ) PARTITIONS 4;
Administracin de Bases de Datos
Particionamiento (MySQL)
Particiones KEY
CREATE TABLE k1 ( id INT NOT NULL PRIMARY KEY ,name VARCHAR(20) ) PARTITION BY KEY() PARTITIONS 2;
Particionamiento en Oracle
Particionamiento en Oracle
Particionamiento en Oracle
Particionamiento Composite
CREATE TABLE TAB2 (ord_id NUMBER(10), ord_day NUMBER(2), ord_month NUMBER(2), ord_year NUMBER(4) ) PARTITION BY RANGE(ord_year) SUBPARTITION BY HASH(ord_id) SUBPARTITIONS 8 ( PARTITION q1 VALUES LESS THAN(2001) ( SUBPARTITION q1_h1 TABLESPACE TBS1, SUBPARTITION q1_h2 TABLESPACE TBS2, SUBPARTITION q1_h3 TABLESPACE TBS3, SUBPARTITION q1_h4 TABLESPACE TBS4 ),
Particionamiento en Oracle
Particionamiento Composite:
PARTITION q2 VALUES LESS THAN(2002) ( SUBPARTITION q2_h5 TABLESPACE TBS5, SUBPARTITION q2_h6 TABLESPACE TBS6, SUBPARTITION q2_h7 TABLESPACE TBS7, SUBPARTITION q2_h8 TABLESPACE TBS8 ), PARTITION q3 VALUES LESS THAN(2003) ( SUBPARTITION q3_h1 TABLESPACE TBS1, SUBPARTITION q3_h2 TABLESPACE TBS2, SUBPARTITION q3_h3 TABLESPACE TBS3, SUBPARTITION q3_h4 TABLESPACE TBS4 ), PARTITION q4 VALUES LESS THAN(2004) ( SUBPARTITION q4_h5 TABLESPACE TBS5, SUBPARTITION q4_h6 TABLESPACE TBS6, SUBPARTITION q4_h7 TABLESPACE TBS7, SUBPARTITION q4_h8 TABLESPACE TBS8 )
Vistas Materializadas
La vista materializada no es ms que una vista, definida con una sentencia SQL, de la que adems de almacenar su definicin, se almacenan los datos que retorna, realizando una carga inicial y despus cada cierto tiempo un refresco de los mismos.
La creacin de este tipo de vistas no es tan compleja como puede parecer, lo ms importante es tener claro cada cunto tiempo queremos actualizar la informacin de las vistas, y qu mtodo de refresco utilizar.
Vistas Materializadas
CREATE MATERIALIZED VIEW mi_vista_materializada [TABLESPACE mi_tablespace] [BUILD {IMMEDIATE | DEFERRED}] [REFRESH {ON COMMIT | ON DEMAND | [START WITH fecha_inicio] NEXT fecha_intervalo } | {COMPLETE | FAST | FORCE} ] [{ENABLE|DISABLE} QUERY REWRITE] AS SELECT t1.campo1, t2.campo2 FROM mi_tabla1 t1 , mi_tabla2 t2 WHERE t1.campo_fk = t2.campo_pk AND
Vistas Materializadas
Una de las cosas importantes a tener en cuenta es que para poder utilizar este mtodo casi siempre es necesario haber creado antes un LOG de la Vista materializada, indicando los campos clave en los que se basar el mantenimiento de la vista. Se utiliza la instruccin CREATE MATERIALIZED VIEW LOG ON: Ejemplo CREATE MATERIALIZED VIEW LOG ON mi_tabla_origen WITH PRIMARY KEY INCLUDING NEW VALUES;
Administracin de Bases de Datos
Vistas Materializadas
Carga de datos en la vista BUILD IMMEDIATE: Los datos de la vista se cargan en el mismo momento de la creacin BUILD DEFERRED: Slo se crea la definicin, los datos se cargarn ms adelante. Para realizar esta carga se puede utilizar la funcin REFRESH del package DBMS_MVIEW: begin dbms_mview.refresh('mi_vista_materializada'); end;
Vistas Materializadas
Mtodo y temporalidad del refresco de los datos
REFRESH ON COMMIT: Cada vez que se haga un commit en los objetos origen definidos en el select REFRESH ON DEMAND: Como con la opcin DEFERRED del BUILD, se utilizarn los procedures REFRESH, REFRESH_ALL_MVIEWS o REFRESH_DEPENDENT del package DBMS_MVIEW REFRESH [START WITH fecha_inicio] NEXT fecha_intervalo: START WITH indica la fecha del primer refresco (fecha_inicio suele ser un SYSDATE) NEXT indica cada cunto tiempo se actualizar (fecha_intervalo podra ser SYSDATE +1 para realizar el refresco una vez al da)
Administracin de Bases de Datos
Vistas Materializadas
Ejemplo:
CREATE MATERIALIZED VIEW LOG ON mi_tabla_origen WITH PRIMARY KEY INCLUDING NEW VALUES; CREATE MATERIALIZED VIEW mi_vista_materializada REFRESH FAST NEXT SYSDATE + 7 AS SELECT campo1, campo2, campo8 FROM mi_tabla_origen WHERE campo2 > 5000;
Administracin de Bases de Datos
Vistas Materializadas
ndices
Los ndices se utilizan para mejorar el rendimiento de las peticiones de datos. En un mundo perfecto, podra crear muchos ndices para satisfacer todas las permutaciones de consulta que crease un usuario. No obstante, los ndices necesitan mantenimiento. A medida que se inserta, se actualiza y se elimina informacin, hay que volver a calcular los ndices. La creacin de ndices debe ser equilibrada para que cree suficientes ndices para mejorar las consultas y al mismo tiempo asegurar el mnimo impacto en las modificaciones de datos
Administracin de Bases de Datos
ndices (consideracin)
Un ndice slo es til si proporciona un medio para encontrar la informacin fcilmente a pesar del volumen de informacin almacenado.
rboles-B (B-trees)
La estructura que utiliza SQL Server,Oracle, para construir y mantener ndices se denomina rbol equilibrado o rbol-B (balanced tree o B-tree)
rboles-B (B-trees)
ndices (Clasificacin)
Lgica Una columna o concatenado: Una sola o varias columnas clave nico o no nico: Permite o no valores duplicados en la clave Basado en funciones: Basado en funciones sobre una o ms columnas de la tabla. Mecanismo eficiente para evaluar consultas que contienen funciones en su clusula WHERE
CREATE INDEX cantidad_a_despachar_idx
ON item(cantidad - cantidad_despachada); SELECT orden.id, item.id FROM item WHERE (cantidad - cantidad_despachada) > 0;
Administracin de Bases de Datos
ndices (Clasificacin)
Fsica
Almacenamiento de ndices
Cuando se crea un ndice se asigna automticamente un segmento de ndice. Se puede administrar el espacio de un segmento de ndice de la siguiente forma:
Especificando los parmetros de almacenamiento relacionados con la asignacin de extents Especificando el parmetro PCTFREE
Se puede asignar un tablespace diferente al tablespace de los datos, mejorando as el desempeo. Cuando se crea el ndice, el DBMS hace sort sobre las columnas del ndice y almacena el rowid y el valor del ndice para cada fila.
Administracin de Bases de Datos
Se pueden crear tantos ndices sobre las tablas como combinaciones de columnas diferentes existan. Se puede crear un ndice sobre el mismo conjunto de columnas, si las mismas estn ordenadas de forma diferente. No se pueden crear dos ndices sobre el mismo atributo. Se puede borrar un ndice sin alterar los datos de la tabla de datos.
Todos los nodos hojas estn al mismo nivel, recuperacin de cualquier registro toma el mismo tiempo Arboles B permanecen balanceados automticamente Todos los bloques estn llenos en un 75% en promedio Proveen un buen desempeo para consultas exactas y por rangos Inserciones, modificaciones y eliminaciones son eficientes, y se mantiene el orden de las claves para una recuperacin rpida El desempeo es bueno para tablas pequeas y grandes y no se degrada cuando la tabla crece.
Empieza en el nodo raz Bsqueda de clave ms pequea mayor o igual que el valor Si es mayor que la clave, se sigue el apuntador anterior hasta el hijo. Si es igual a la clave, se sigue el apuntador hasta el hijo Si no existe uno mayor o igual, se sigue el apuntador del valor ms alto del bloque. Repita los pasos si el hijo es un nodo interno. Busca en la hoja la clave igual al valor. Si la clave se encuentra, retorna el ROWID Si la clave no se encuentra, la fila no existe.
Criterios de valoracin
Tipos de Acceso: Los tipos de acceso que se soportan eficazmente (estos tipos podran incluir la bsqueda de registros con un valor concreto en un atributo o buscar los registros cuyos atributos contengan valores en un rango especificado) Tiempo de Acceso: El tiempo que se tarda en buscar un determinado elemento de datos o conjunto de elementos, usando la tcnica en cuestin
Criterios de valoracin
Tiempo de Insercin: El tiempo empleado en insertar un nuevo elemento de datos (este valor incluye el tiempo utilizado en buscar el lugar apropiado donde insertar el nuevo elemento de datos, as como el tiempo empleado en actualizar la estructura de ndice) Tiempo de Borrado: El tiempo empleado en borrar un elemento de datos (este valor incluye el tiempo utilizado en buscar el elemento a borrar, as como el tiempo empleado en actualizar la estructura de ndice)
Criterios de valoracin
Espacio Adicional Requerido: El espacio adicional ocupado por la estructura del ndice (como normalmente la cantidad necesaria de espacio adicional suele ser moderada, es razonable sacrificar el espacio para alcanzar un rendimiento mejor)
Claves de Bsqueda
Los atributos o conjuntos de atributos usados para buscar en un archivo se llaman claves de bsqueda Esta definicin de clave de bsqueda no tiene nada que ver con clave primaria, clave candidata y superclave
| ALL}
ndices en Oracle
Table Index: CREATE [UNIQUE|BITMAP] INDEX [esquema.]index_name ON [esquema.]table_name [tbl_alias] (col [ASC | DESC]) index_clause index_attribs
ndices en Oracle
Bitmap Join Index: CREATE [UNIQUE|BITMAP] INDEX [esquema.]index_name ON [esquema.]table_name [tbl_alias] (col_expression [ASC | DESC]) FROM [esquema.]table_name [tbl_alias] WHERE condition [index_clause] index_attribs
ndices en Oracle
Cluster Index: CREATE [UNIQUE|BITMAP] INDEX [esquema.]index_name ON CLUSTER [esquema.]cluster_name index_attribs