Unidad 4

9
Unidad 4: Operación y mantenibilidad 4.1 Bitácoras de trabajo del DBMS. En muchos DBMS la bitácora incluye todo tipo de consulta incluyendo aquellas que no modifican los datos. La operación ROLLBACK está basada en el uso de una bitácora. El DBMS (Sistema Manejador de Bases de Datos) mantiene una bitácora o diario en cinta o en disco, comúnmente, en el cual se registran los detalles de todas las operaciones de actualización, en particular, los valores iniciales y final del objeto modificado. Por tanto, si resulta necesario anular alguna modificación específica, el sistema puede utilizar la entrada correspondiente de la bitácora para restaurar el valor original del objeto restaurado. 4.1.1. Funciones específica de las bitácoras. La estructura más ampliamente usada para grabar las modificaciones de la base de datos es la Bitácora. Cada registro de la bitácora escribe una única escritura de base de datos y tiene lo siguiente: Nombre de la Transaccion Valor antiguo Valor Nuevo Es fundamental que siempre se cree un registro en la bitácora cuando se realice una escritura antes de que se modifique la base de datos. También tenemos la posibilidad de deshacer una modificación que ya se ha escrito en la base de datos, esto se realizará usando el campo del valor antiguo de los registros de la bitácora. Los registros de la bitácora deben residir en memoria estable como resultado el volumen de datos en la bitácora puede ser exageradamente grande. Las operaciones COMMIT y ROLLBACK establecen lo que se le conoce como punto de sincronización lo cual representa el límite entre dos transacciones consecutivas, o el final de

description

op

Transcript of Unidad 4

Unidad 4: Operacin y mantenibilidad

4.1 Bitcoras de trabajo del DBMS.En muchos DBMS la bitcora incluye todo tipo de consulta incluyendo aquellas que no modifican los datos.La operacin ROLLBACK est basada en el uso de una bitcora. El DBMS (Sistema Manejador de Bases de Datos) mantiene una bitcora o diario en cinta o en disco, comnmente, en el cual se registran los detalles de todas las operaciones de actualizacin, en particular, los valores iniciales y final del objeto modificado. Por tanto, si resulta necesario anular alguna modificacin especfica, el sistema puede utilizar la entrada correspondiente de la bitcora para restaurar el valor original del objeto restaurado.

4.1.1. Funciones especfica de las bitcoras.La estructura ms ampliamente usada para grabar las modificaciones de la base de datos es la Bitcora. Cada registro de la bitcora escribe una nica escritura de base de datos y tiene lo siguiente: Nombre de la Transaccion Valor antiguo Valor NuevoEs fundamental que siempre se cree un registro en la bitcora cuando se realice una escritura antes de que se modifique la base de datos.Tambin tenemos la posibilidad de deshacer una modificacin que ya se ha escrito en la base de datos, esto se realizar usando el campo del valor antiguo de los registros de la bitcora.Los registros de la bitcora deben residir en memoria estable como resultado el volumen de datos en la bitcora puede ser exageradamente grande.Las operaciones COMMIT y ROLLBACK establecen lo que se le conoce como punto de sincronizacin lo cual representa el lmite entre dos transacciones consecutivas, o el final de una unidad lgica de trabajo, y por tanto al punto en el cual la base de datos esta (o debera estar) en un estado de consistencia. Las nicas operaciones que establecen un punto de sincronizacin son COMMIT, ROLLBACK y el inicio de un programa. Cuando se establece un punto de sincronizacin:Se comprometen o anulan todas las modificaciones realizadas por el programa desde el punto de sincronizacin anterior.Se pierde todo posible posicionamiento en la base de datos. Se liberan todos los registros bloqueados. Es importante advertir que COMMIT y ROLLBACK terminan las transaccin, no el programa.

4.1.2 Recuperacin (rollback)En tecnologas de base de datos, un rollback es una operacin que devuelve a la base de datos a algn estado previo. Los Rollbacks son importantes para la integridad de la base de datos, a causa de que significan que la base de datos puede ser restaurada a una copia limpia incluso despus de que se han realizado operaciones errneas. Son cruciales para la recuperacin de crashes de un servidor de base de datos; realizando rollback(devuelto) cualquier transaccin que estuviera activa en el tiempo del crash, la base de datos es restaurada a un estado consistente.En SQL, ROLLBACK es un comando que causa que todos los cambios de datos desde la ltima sentencia BEGIN WORK, o START TRANSACTION sean descartados por el sistema de gestin de base de datos relacional (RDBMS), para que el estado de los datos sea "rolled back"(devuelto) a la forma en que estaba antes de que aquellos cambios tuvieran lugar.Una sentencia ROLLBACK tambin publicar cualquier savepoint existente que puediera estar en uso.En muchos dialectos de SQL, ROLLBACKs son especficos de la conexin. Esto significa que si se hicieron dos conexiones a la misma base de datos, un ROLLBACK hecho sobre una conexin no afectar a cualesquiera otras conexiones. Esto es vital para el buen funcionamiento de la Concurrencia.La funcionalidad de rollback est normalmente implementada con un Log de transacciones, pero puede tambin estar implementada mediante control de concurrencia multiversin.En el proceso de Rollback, SQL Server comienza a hacer un rollback de todas las transacciones que no fueron confirmadas adems de las que fueron rechazadas, dejando de esta manera la base de datos en un estado consistente.Este proceso de recuperacin en algunos casos puede tardar mucho tiempo debido a la gran cantidad de informacin que tienen que replicar desde el log de transacciones. Es por eso que la frecuencia con la que se hacen los checkpoints dentro de la base de datos es crucial para el tiempo que tardara el servidor en ejecutar el proceso de recuperacin.Adicionalmente cabe mencionar que en algunas pocas ocasiones el terminar el servicio de SQL Server de manera inesperada puede causar corrupciones de datos, y esto s es grave debido a que en algunos casos puede ser recuperable la informacin, pero siempre con un riesgo de perder algo de data, y en otros no es posible arreglar la base de datos, entonces lo nico que queda en estas situaciones es la restauracin de backups y es ah donde si se tiene una buena estrategia de backups se puede llegar a recuperar absolutamente toda la informacin hasta el momento del desastre.

4.1.3 Permanencia (commit)En cualquier momento, el programa podra decidir que es necesario hacer fallar la transaccin, con lo que el sistema deber revertir todos los cambios hechos por las operaciones ya hechas. En el lenguaje SQL se denomina COMMIT aaplicar_cambiosy ROLLBACK acancelar_cambios.Las transacciones suelen verse implementadas en sistemas de bases de datos y, ms recientemente, se han visto incorporadas a como gestiona un sistema operativo la interaccin con un sistema de archivos (como varias caractersticas de las bases de datos, debido a que son muy similares arquitectnicamente).Una sentencia COMMIT en SQL finaliza una transaccin de base de datos dentro de un sistema gestor de base de datos relacional (RDBMS) y pone visibles todos los cambios a otros usuarios. El formato general es emitir una sentencia BEGIN WORK, una o ms sentencias SQL, y entonces la sentencia COMMIT. Alternativamente, una sentencia ROLLBACK se puede emitir, la cual deshace todo el trabajo realizado desde que se emiti BEGIN WORK. Una sentencia COMMIT publicar cualquiera de los savepoints(puntos de recuperacin) existentes que puedan estar en uso.En trminos de transacciones, lo opuesto decommitpara descartar los cambios "en tentativa" de una transaccin, es unrollback.

4.2 Definicin de los modos de operacin de un DBMS. (alta, baja, recovery)El sistema de gestin de bases de datos es esencial para el adecuado funcionamiento y manipulacin de los datos contenidos en la base. Se puede definir como: "El Conjunto de programas, procedimientos, lenguajes, etc. que suministra, tanto a los usuarios no informticos como a los analistas, programadores o al administrador, los medios necesarios para describir, recuperar y manipular los datos almacenados en la base, manteniendo su integridad, confidencialidad y seguridad".Las funciones esenciales de un SGDB son la descripcin, manipulacin y utilizacin de los datos.Descripcin: Incluye la descripcin de: Los elementos de datos, su estructura, sus interrelaciones, sus validaciones. Tanto a nivel externo como lgico global e interno esta descripcin es realizada mediante un LDD o Lenguaje de Descripcin de Datos.Manipulacin: Permite: Buscar, Aadir, Suprimir y Modificar los datos contenidos en la Base de Datos.La manipulacin misma supone: Definir un criterio de seleccin, Definir la estructura lgica a recuperar, Acceder a la estructura fsica. Esta manipulacin es realizada mediante un LMD o Lenguaje de Manipulacin de Datos.Utilizacin: La utilizacin permite acceder a la base de datos, no a nivel de datos sino a la base como tal, para lo cual: Rene las interfaces de los usuarios y suministra procedimientos para el administrador.En trminos ideales, un DBMS debe contar con estas funciones, sin embargo, no todos las poseen, as existen algunos manejadores que no cumplen la funcin de respaldo o de seguridad, dejndola al usuario o administrador; sin embargo un DBMS que sea completo y que deba manejar una base de datos multiusuario grande, es conveniente que cuente con todas estas operaciones.

4.3 Comandos de activacin de los modos de operacinPara ser uso de los diferentes comandos para un modo de operacin debemos estar como administrador o asuma un rol que incluya el perfil dederechosService Management.ComandoSTARTUPPara el arranque de una base de datos hay tres fases de arranque, para realizar estas fases podemos utilizarstartupMs un comando, las tres fases son las siguientes:Fase de no montajeSe leen los parmetros del sistema, se inician las estructuras de memoria y los procesos de segundo plano. La instancia se arranca sin asociarla a la base de datos. Normalmente se utiliza cuando se modifica o se necesita crear el archivo de control:startup nomount ;Fase de montaje:Se asocia la instancia con la base de datos. Se usa el archivo de parmetros para localizar los archivos de control, que contienen el nombre de los archivos de datos y los registros rehacer. Los archivos de datos y los registros de rehacer no estn abiertos, as que no son accesibles por usuarios finales para tareas normales. Para realizar esta fase se pueden utilizar dos comandos:El comandoSHUTDOWNLoutilizamosparar una base dedatos lacual consiste en varias clusulas.SHUTDOWN NORMAL- Este es el valor por defecto, durante el proceso deparada no admite nuevas conexiones y espera que las conexiones actuales finalicen. En el prximo arranque la base datos no requiere procedimientos de recuperacin.SHUTDOWN IMMEDIATE- Se produce una parada inmediata de la base de datos, durante el proceso de parada no permite nuevas conexiones y las actuales la desconecta, las transacciones que no estn commit se hararoolback de ellas. En el prximo arranque la base datos no requiere procedimientos de recuperacin.SHUTDOWN TRANSACTIONAL- Se produce una parada hasta que hayan terminado las transacciones activas, no admite nuevas conexiones y tampoco nuevas transacciones, una vez que las transacciones activas van terminando va desconectando a los usuarios. En el prximo arranque la base datos no requiere procedimientos de recuperacin.SHUTDOWN ABORT- Abortatodos los procesos deuna base dedatos, durante el proceso de parada no permite nuevas conexiones y las actuales la desconecta, las transacciones que no estn commit se har roolback de ellas. En el prximo arranque la base datos puede requerir procedimientos de recuperacin.Comando DescribeEste comando permite conocer la estructura de una tabla, las columnas que laforman y su tipo y restricciones.DESCRIBE f1;Comando SHOW TABLES y SHOW CREATE TABLE4.4. Manejo de ndicesLos ndices son "estructuras" alternativa a la organizacin de los datos en una tabla. El propsito de los ndices es acelerar el acceso a los datos mediante operaciones fsicas ms rpidas y efectivas. Para entender mejor la importancia de un ndice pongamos un ejemplo; imagnate que tienes delante las pginas amarillas, y deseas buscar el telfono de Manuel Salazar que vive en Alicante. Lo que hars ser buscar en ese pesado libro la poblacin Alicante, y guindote por la cabecera de las pginas buscars los apellidos que empiezan por S de Salazar. De esa forma localizars ms rpido el apellido Salazar. Pues bien, enhorabuena, has estado usando un ndice.4.4.1 Tipos de ndicesEn MySQL se tienen dos tipos de ndices, los cuales son:

ndices agrupados

Los ndices agrupados, definen el orden en que almacenan las filas de la tabla (nodos hoja/pgina de datos de la imagen anterior). La clave del ndice agrupado es el elemento clave para esta ordenacin; el ndice agrupado se implementa como una estructura de rbol b que ayuda a que la recuperacin de las filas a partir de los valores de las claves del ndice agrupado sea ms rpida. Las pginas de cada nivel del ndice, incluidas las pginas de datos del nivel hoja, se vinculan en una lista con vnculos dobles. Adems, el desplazamiento de un nivel a otro se produce recorriendo los valores de claves.

ndices no agrupados

Los ndices no agrupados tienen la misma estructura de rbol b que los ndices agrupados, con algunos matices; como hemos visto antes, en los ndices agrupados, en el ltimo nivel del ndice (nivel de hoja) estn los datos; en los ndices no-agrupados, en el nivel de hoja del ndice, hay un puntero a la localizacin fsica de la fila correspondiente en el ndice agrupado. Adems, la ordenacin de las filas del ndice est construida en base a la(s) columna(s) indexadas, lo cual no quiere decir (a diferencia de los ndices agrupados), que la organizacin fsica de las pginas de datos corresponda con el ndice.

4.4.2 Reorganizacin de ndicesUn paquete puede usar la tarea Reorganizar ndice para reorganizar los ndices de una base de datos individual o de varias bases de datos. Si la tarea solo reorganiza los ndices de una base de datos individual, puede elegir las vistas o las tablas cuyos ndices reorganiza la tarea. La tarea Reorganizar ndice tambin incluye la opcin de compactar datos de objetos grandes. Los datos de objetos grandes son datos de tipoimage, text, ntext, varchar(max), nvarchar(max), varbinary(max) o xml.La tarea Reorganizar ndice encapsula la instruccin ALTER INDEX de Transact-SQL. Si elige compactar datos de objetos grandes, la instruccin utiliza la clusula REORGANIZE WITH (LOB_COMPACTION = ON); en caso contrario, se establece LOB_COMPACTION en OFFDentro de las tareas habituales de Mantenimiento de las Bases de Datos se encuentran aquellas destinadas al control y respaldo de las mismas como ser: Control de Integridad, Chequeo de Consistencia, Copias de Seguridad o Compactacin de las bases.Pero tambin es necesario ejecutar trabajos de mantenimiento cuyos objetivos sean el de mantener la performance de las bases de datos y evitar su degradacin.

4.4.3 Reconstruccin de ndicesEs importante peridicamente examinar y determinar qu ndices son susceptibles de ser reconstruidos. Cuando un ndice est descompensado puede ser porque algunas partes de ste han sido accedidas con mayor frecuencia que otras. Como resultado de este suceso podemos obtener problemas de contencin de disco o cuellos de botella en el sistema. Normalmente reconstruimos un ndice con el comandoALTER INDEX.Es importante tener actualizadas las estadsticas de la base de datos. Para saber si las estadsticas se estn lanzando correctamente podemos hacer una consulta sobre la tabla dba_indexes y ver el campo last_analyzed para observar cuando se ejecutaron sobre ese ndice las estadsticas.

Comando ALTER INDEXComo hemos comentado esta sentencia se utiliza para cambiar o reconstruir un ndice existente en la base de datos.Para poder ejecutar este comando el ndice debe de estar en el propio esquema donde intentes ejecutarlo o deberas de tener el privilegio alter any index. Tambin tenemos que tener en cuenta que para realizar la reconstruccin de un ndice deberamos de tener cuota suficiente sobre el tablespace que lo lanzamos.

Para reconstruir un ndice bastara con lazar la siguiente sentencia:ALTER INDEX REBUILD;

Para reconstruir una particin de un ndice podramos hacer lo siguienteALTER INDEX REBUILD PARTITION NOLOGGING;