Técnicas de Optimización

Click here to load reader

  • date post

    20-Jul-2015
  • Category

    Documents

  • view

    301
  • download

    0

Embed Size (px)

Transcript of Técnicas de Optimización

Base de Datos

Ing. Ronald Prez

[email protected] [email protected] [email protected]

Administracin de Bases de Datos

Agenda

Funciones de un DBA Diseo de grupos de archivos Rendimiento E/S del disco Particionamiento

SQL Server MySQL Oracle

Vistas Materializadas ndices

Administracin de Bases de Datos

Actores en un Sistema de BDAdministrador de la base de datos (ABD)

Responsable de administrar los recursos del SBD (nivel tcnico):

BD + SGBD + Otro Software (aplicaciones/programas de acceso)Definir/Modificar la estructura de la BD y restricciones de los datos Crear/Modificar estructuras de almacenamiento y mtodos de acceso Conceder/Denegar permisos de acceso y controlar dicho acceso a datos (seguridad de la BD) Definir planes de copias de seguridad de los datos de la BD Garantizar el funcionamiento correcto del sistema y proporcionar servicio tcnico al usuario (respuesta lenta del sistema...) Adquirir los recursos software y hardware necesarios

Las funciones del ABD incluyen:

Administracin de Bases de Datos

Diseo de grupos de archivosLos grupos de archivos definen la arquitectura de almacenamiento bsica para todos los objetos de una base de datos. Un conjunto de grupos de archivos bien definido puede permitirle dirigir operaciones de copia de seguridad y de restauracin a una parte de la base de datos. La estructura de grupos de archivos que se defina puede afectar tambin a las caractersticas de rendimiento para la operaciones de disco y aceptar capacidades de particin.

Administracin de Bases de Datos

Diseo de grupos de archivosPara recuperabilidad Los grupos de archivos tienen que tener como mnimo un archivo y pueden tener muchos archivos que abarcan unidades de disco. Un grupo de archivos crea la frontera de almacenamiento para todos los objetos de una base de datos, excepto las tablas, ndices y vistas indizada, puesto que todos tienen particiones.

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

Administracin de Bases de Datos

Diseo de grupos de archivosPara rendimiento El diseo de archivos para rendimiento es, de hecho, una afirmacin incorrecta.

Los grupos de archivos no tienen ninguna caracterstica de rendimiento inherente. Las caractersticas de rendimiento derivan del archivo o archivos del grupo de archivos.

Administracin de Bases de Datos

Rendimiento de E/S del discoRecordar que la mejora del rendimiento que ver a partir de los diseos de grupos de archivos y la ubicacin de archivos se refiere a operaciones que requieren E/S del disco. Si ha diseado sus aplicaciones y bases de datos utilizando los siguientes principios, los beneficios en rendimiento sern mnimos porque casi todo el acceso a la informacin se producir desde la cach de datos en la memoria

Administracin de Bases de Datos

Rendimiento de E/S del discoPrincipios: Todas las columnas estn definidas con el tipo de datos ms pequeo para capturar informacin Las aplicaciones extraen slo el nmero mnimo de filas necesarias Las aplicaciones extraen slo el nmero mnimo de columnas necesarias El uso de tablas temporales y variables de tabla ha sido minimizado

Administracin de Bases de Datos

Diseo de grupo de archivos para la particinAdems de disear grupos de archivos para rendimiento y recuperabilidad, los grupos de archivos tienen un papel fundamental en el diseo de particiones. Al aplicar una particin adecuada, puede alcanzar un aumento importante en la disponibilidad de la informacin porque ya no esta limitado por procesos de carga masiva o de archivo.Administracin de Bases de Datos

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

Administracin de Bases de Datos

Esquema de Particin (SQL Server)El esquema de particin define las estructuras de almacenamiento fsicas que se utilizarn con un funcin de particin especifica. El proceso de crear una particin en una tabla, ndice o vista indizadas es el siguiente: Crear una funcin de particin Crear un esquema de particin asignado a una funcin de particin Crear una tabla, ndice o vista indizada en el esquema de particin

Administracin de Bases de Datos

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:

CREATE PARTITION FUNTION FuncionDeParticion (INT) AS RANGE FOR VALUES (10,20,30,40,50,60)

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

Funcin de particin (RANGE LEFT)Nmero de Particin 1 23 4 5 6 7

Valor mn. - 1121 31 41 51 61

Valor mx. 10 2030 40 50 60 +

Administracin de Bases de Datos

Funcin de particin (RANGE RIGHT)Nmero de Particin 1 23 4 5 6 7

Valor mn. - 1020 30 40 50 60

Valor mx. 9 1929 39 49 59 +

Como el mximo de particiones de un objeto es 1000, se puede especificar un mximo de 999 puntos de frontera

Administracin de Bases de Datos

Esquemas de particinUn 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)

Administracin de Bases de Datos

Creacin de una tabla con particinLa creacin de una tabla, ndice o vista indizada con particin es similar crear una tabla, ndice o vista indizadas sin particin.Ejemplo: CREATE TABLE Empleado ( IdEmpleado INT NOT NULL ,Nombre VARCHAR(30) NOT NULL ,Apellido VARCHAR(30) NOT NULL ) ON ParticionScheme(IdEmpleado ) GOAdministracin de Bases de Datos

Operadores SPLIT y MERGEComo la informacin cambia constantemente, las particiones no suele ser esttica. Hay dos operadores disponibles para gestionar las definiciones de los puntos de frontera El operador SPLIT introduce un punto de frontera nuevo en una funcin de particin. MERGE elimina un punto frontera de una funcin de particin.

Administracin de Bases de Datos

Operadores SPLIT y MERGESintaxis general:

ALTER PARTITION FUNTION partition_funtion_name() { SPLIT RANGE (boundary_value) | MERGE RANGE (boundary_value)} [;]

Administracin de Bases de Datos

Particionamiento (MySQL)Para determinar si el servidor MySQL soporta particionamiento puede ejecutar el siguiente comando SHOW VARIABLES LIKE '%partition%

Tambin puede ejecutar el comando SHOW PLUGINS;

Administracin de Bases de Datos

Particionamiento (MySQL)Particiones por RANGECREATE 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 LISTCREATE 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) );

Administracin de Bases de Datos

Particionamiento (MySQL)Particiones HASHESCREATE 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 KEYCREATE TABLE k1 ( id INT NOT NULL PRIMARY KEY ,name VARCHAR(20) ) PARTITION BY KEY() PARTITIONS 2;

Administracin de Bases de Datos

Particionamiento en Oracle

Administracin de Bases de Datos

Particionamiento en Oracle

Administracin de Bases de Datos

Particionamiento en OracleParticionamiento CompositeCREATE 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 ),

Administracin de Bases de Datos

Particionamiento en OracleParticionamiento 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 )

)

Administracin de Bases de Datos

Vistas MaterializadasLa 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.

Administracin de Bases de Datos

Vistas MaterializadasCREATE 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

Administracin de Bases de Datos

Vistas MaterializadasUna 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 MaterializadasCarga 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;

Administracin de Bases de Datos

Vistas MaterializadasMtodo 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 MaterializadasEjemplo:

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

Administracin de Bases de Datos

ndicesLos 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 datosAdministracin 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.

Administracin de Bases de Datos

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)

Administracin de Bases de Datos

rboles-B (B-trees)

Administracin de Bases de Datos

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

Particionado o no particionado rbol B Normal Invertido Bitmap Bitmap Join

Administracin de Bases de Datos

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

Restricciones sobre ndices

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.

Administracin de Bases de Datos

Restricciones sobre ndicesOracle crea automticamente: Un ndice UNIQUE basado en B*-tree para mantener las columnas que se hayan definido como clave primaria de una tabla utilizando el CONSTRAINT PRIMARY KEY de una tabla no organizada por ndice. Un ndice UNIQUE basado en B*-tree para mantener las columnas sobre las que se defini el CONSTRAINT UNIQUE. Un ndice basado en B*-tree para mantener las columnas que se hayan definido como clave primaria y todas las filas de una tabla organizada por ndice. Un ndice basado en hashing para mantener las filas de un grupo de tablas (cluster) organizado por hash.Administracin de Bases de Datos

Ventaja de la estructura de rbol B

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.

Administracin de Bases de Datos

Bsqueda en ndices basados en rbol BBsqueda exacta

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.

Administracin de Bases de Datos

Bsqueda en ndices basados en rbol BBsqueda por rango: Similar al scan nico pero buscando el lmite inferior del rango Busca en las hojas todas las claves menores o iguales al lmite inferior Se aprovecha la lista enlazada de hojas.

Administracin de Bases de Datos

Tipos bsicos de ndicesndices Ordenados: Estos ndices estn basados en una disposicin ordenada de los valores ndices Asociativos (ndices Hash): Estos ndices estn basados en una distribucin uniforme de los valores a travs de una serie de cajones (buckets); El valor asignado a cada cajn est determinado por una funcin, llamada funcin de asociacin (Hash Function)

Tcnicas de Indexacin / Tcnicas de Asociacin

Administracin de Bases de Datos

Criterios de valoracinTipos 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

Administracin de Bases de Datos

Criterios de valoracinTiempo 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)

Administracin de Bases de Datos

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)

Administracin de Bases de Datos

Claves de BsquedaLos 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

Administracin de Bases de Datos

ndices en SQL ServerSintaxis general: CREATE [ UNIQUE ] [ CLUSTERED | NONCLUSTERED ] INDEX index_name ON ( column [ ASC | DESC ] [ ,...n ] ) [ INCLUDE ( column_name [ ,...n ] ) ] [ WITH ( [ ,...n ] ) ] [ ON { partition_scheme_name ( column_name ) | filegroup_name | default } ] [ FILESTREAM_ON { filestream_filegroup_name | partition_scheme_name | "NULL" } ] [;]

Administracin de Bases de Datos

Deshabilitar/ Habilitar un ndice (SQL Server)

Sintaxis general: ALTER INDEX { index_name ON DISABLE [;] | ALL}

ALTER INDEX { index_name ON REBUILD[;]

| ALL}

Administracin de Bases de Datos

ndices en OracleTable Index: CREATE [UNIQUE|BITMAP] INDEX [esquema.]index_name ON [esquema.]table_name [tbl_alias] (col [ASC | DESC]) index_clause index_attribs

Administracin de Bases de Datos

ndices en OracleBitmap 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

Administracin de Bases de Datos

ndices en OracleCluster Index: CREATE [UNIQUE|BITMAP] INDEX [esquema.]index_name ON CLUSTER [esquema.]cluster_name index_attribs

Administracin de Bases de Datos