You are on page 1of 50

Contenido Introduccin Introduccin a las transacciones y los bloqueos Administracin de las transacciones Bloqueos en SQL Server Administracin de los

bloqueos Procedimientos recomendados Prctica A: Administracin de transacciones y bloqueos Repaso

Mdulo 15: Administracin de transacciones y bloqueos


1 2 4 13 20 31 32 43

La informacin contenida en este documento est sujeta a modificaciones sin previo aviso. A menos que se indique lo contrario, los nombres de las compaas, productos, personas, personajes y datos mencionados son ficticios, y no representan de ningn modo a ninguna persona, compaa, producto o acontecimiento reales. Es responsabilidad del usuario el cumplimiento de todas las leyes de derechos de autor aplicables. Ninguna parte de este documento puede ser reproducida o transmitida de ninguna forma, ni por ningn medio, ya sea electrnico o mecnico, con ningn propsito, sin la previa autorizacin por escrito de Microsoft Corporation. Sin embargo, si su nico medio de acceso es electrnico, se le concede permiso para imprimir una copia. Microsoft puede ser titular de patentes, solicitudes de patentes, marcas, derechos de autor y otros derechos de propiedad intelectual sobre el contenido de este documento. El suministro de este documento no le otorga ninguna licencia sobre estas patentes, marcas, derechos de autor, u otros derechos de propiedad intelectual, a menos que ello se prevea en un contrato por escrito de licencia de Microsoft. 2000 Microsoft Corporation. Reservados todos los derechos. Microsoft, ActiveX, BackOffice, MS-DOS, PowerPoint, Visual Basic, Visual C++, Visual Studio, Windows y Windows NT son marcas comerciales registradas o marcas comerciales de Microsoft Corporation en los Estados Unidos o en otros pases. Otros nombres de productos y compaas mencionados aqu pueden ser marcas comerciales de sus respectivos propietarios. Jefe de proyecto: Rich Rose Diseadores de instrucciones: Rich Rose, Cheryl Hoople, Marilyn McGill Ingenieros de diseo de software de instrucciones: Karl Dehmer, Carl Raebler, Rick Byham Direccin tcnica: Karl Dehmer Expertos en la materia: Karl Dehmer, Carl Raebler, Rick Byham Artista grfico: Kirsten Larson (Consultora independiente) Directora de edicin: Lynette Skinner Editor: Wendy Cleary Editor de copias: Edward McKillop (S&T Consulting) Director de produccin: Miracle Davis Coordinadora de produccin: Jenny Boe Soporte de produccin: Lori Walker (S&T Consulting) Jefe de pruebas: Sid Benavente Prueba de los materiales del curso: TestingTesting123 Automatizacin del aula: Lorrin Smith-Bates Director creativo, servicios Media/Sim: David Mahlmann Direccin de desarrollo de Web: Lisa Pease Especialista en creacin de CD: Julie Challenger Soporte en lnea: David Myka (S&T Consulting) Director de localizacin: Rick Terek Coordinador de operaciones: John Williams Soporte de fabricacin: Laura King, Kathy Hershey Director principal del producto, Administracin de publicacin: Bo Galford Director principal del producto, Base de datos: Margo Crandall Jefe de grupo, Infraestructura del curso: David Bramble Jefe de grupo del producto, Desarrollo de contenido: Dean Murray Director general: Robert Stewart

Mdulo 15: Administracin de transacciones y bloqueos

iii

Notas para el instructor


Presentacin: 45 minutos Prctica: 60 minutos Este mdulo proporciona a los alumnos informacin acerca de cmo se utilizan las transacciones y los bloqueos para asegurar la integridad de las transacciones a la vez que se permite el uso simultneo. El mdulo prosigue con la descripcin de cmo se ejecutan y se deshacen las transacciones. Una animacin breve ayuda a describir cmo funciona el procesamiento de las transacciones. El mdulo describe a continuacin cmo los bloqueos de Microsoft SQL Server 2000 mantienen la coherencia y el uso simultneo de los datos. Se presentan los recursos que se pueden bloquear, los diferentes tipos de bloqueos y la compatibilidad entre los bloqueos. La ltima seccin describe algunas opciones de bloqueo, trata los interbloqueos y explica cmo presentar informacin acerca de los bloqueos activos. En esta prctica los alumnos definen una transaccin y observan el efecto de las instrucciones BEGIN TRAN, COMMIT TRAN y ROLLBACK TRAN. A continuacin, observan lo que ocurre cuando se aplican diferentes opciones de bloqueo a una transaccin. Despus de completar este mdulo, los alumnos sern capaces de: Describir el proceso de las transacciones. Ejecutar, cancelar o deshacer una transaccin. Identificar los problemas de la simultaneidad de bloqueos. Identificar los recursos que se pueden bloquear y los tipos de bloqueos. Describir la compatibilidad de los bloqueos. Describir cmo SQL Server utiliza el bloqueo dinmico. Establecer opciones de bloqueo y presentar informacin acerca de los bloqueos.

Material y preparacin
Esta seccin proporciona el material y las tareas de preparacin que se necesitan para impartir este mdulo.

Material necesario
Para impartir este mdulo, necesitar el material siguiente: Archivo 2329a_15.ppt de Microsoft PowerPoint Archivo de ejemplo C:\MOC\2329A\Demo\D15_Ex.sql, que contiene todas las secuencias de comandos de ejemplo del mdulo, excepto cuando se indique lo contrario.

Tareas de preparacin
Para preparar este mdulo, deber: Leer todo el material del mismo. Completar la prctica. Practicar con la presentacin, incluida la diapositiva animada. Revisar las notas del producto relevantes incluidas en el disco compacto Material del instructor.

iv

Mdulo 15: Administracin de transacciones y bloqueos

Presentacin multimedia
Esta seccin proporciona procedimientos de presentacin multimedia que no se pueden incluir en las notas al margen y no son adecuados para las notas del alumno.

Transacciones de SQL Server


Para preparar la presentacin multimedia Haga clic en el botn de la diapositiva para iniciar la presentacin multimedia. Esta presentacin multimedia presenta el procesamiento de transacciones de SQL Server. Comienza con la definicin de una transaccin y explica los dos tipos de transacciones, implcitas y explcitas. A continuacin, explica cmo se puede cancelar o deshacer una transaccin. La presentacin contina con una descripcin del registro de transacciones, que mantiene la coherencia de la base de datos, explica cmo se graban las modificaciones en el archivo de disco del registro antes de escribirlas en la base de datos y describe cmo los puntos de comprobacin del registro indican qu transacciones se han aplicado a la base de datos. La presentacin concluye con la descripcin del proceso automtico de recuperacin.

Otras actividades
Esta seccin contiene procedimientos para implementar actividades interactivas con el fin de presentar o examinar informacin, como juegos o ejercicios de simulacin de funciones.

Presentacin de la diapositiva animada de PowerPoint


La diapositiva animada se identifica con un icono de vnculos en la esquina inferior izquierda de la diapositiva. Para presentar la diapositiva Recuperacin de transacciones y puntos de comprobacin La diapositiva muestra cmo SQL Server puede recuperar fcilmente las transacciones en el caso de un error del sistema. 1. Presente la diapositiva del tema en la que aparecen las acciones requeridas para la recuperacin de una transaccin. 2. Avance hasta la primera animacin, en la que la flecha de Transaccin 1 termina antes del punto de comprobacin. No es necesaria ninguna accin porque la transaccin queda reflejada en la base de datos. 3. Avance hasta la siguiente animacin, en la que la flecha de Transaccin 2 empieza antes del punto de comprobacin y termina despus de l. La transaccin debe rehacerse porque parte de la transaccin tuvo lugar despus del punto de comprobacin.

Mdulo 15: Administracin de transacciones y bloqueos

4. Avance hasta la siguiente animacin, en la que la flecha de Transaccin 3 empieza antes del punto de comprobacin y no termina antes del error del sistema. Hay que deshacerla. 5. Avance hasta la siguiente animacin, en la que la flecha de Transaccin 4 se confirma despus del punto de comprobacin. Debe reconstruirse (rehacerse) a partir del registro. 6. Avance hasta la ltima animacin, en la que la flecha de Transaccin 5 empieza despus del punto de comprobacin pero no se completa antes del error del sistema. Hay que deshacerla.

Desarrollo del mdulo


Para presentar este mdulo utilice la estrategia siguiente: Introduccin a las transacciones y los bloqueos Presente los trminos y los conceptos que se utilizan en el mdulo. Asegrese de que los alumnos comprendan la relacin entre los conceptos. Administracin de las transacciones Reproduzca la presentacin multimedia. Describa cmo se define una transaccin, las restricciones de las transacciones, cmo SQL Server procesa las transacciones, la recuperacin de las transacciones y los puntos de comprobacin. Asegrese de que los alumnos comprendan las transacciones y cmo se utilizan en la recuperacin automtica. Bloqueos en SQL Server Describa los problemas de la simultaneidad de bloqueos, los recursos que se pueden bloquear, los tipos de bloqueos y la compatibilidad entre los bloqueos. Haga nfasis en los problemas que pueden surgir debido a la falta de bloqueos y en que SQL Server controla automticamente estas situaciones. Advierta a los alumnos que la modificacin de las opciones de bloqueo en las transacciones puede tener un efecto negativo sobre el rendimiento. Administracin de los bloqueos Describa las opciones de bloqueo en el nivel de sesin y de tabla, explique los interbloqueos y describa cmo presentar la informacin acerca de los bloqueos. Haga nfasis en que los alumnos deben disear las transacciones para minimizar los interbloqueos. Tambin deben realizar pruebas para determinar si en una transaccin se est produciendo un interbloqueo.

vi

Mdulo 15: Administracin de transacciones y bloqueos

Informacin de personalizacin
En esta seccin se identifican los requisitos de instalacin de las prcticas para un mdulo y los cambios de configuracin que ocurren en los equipos de los alumnos durante estas prcticas. Esta informacin pretende ayudarle a replicar o personalizar el material del curso de Microsoft Official Curriculum (MOC). Importante La prctica de este mdulo tambin depende de la configuracin del aula especificada en la seccin Informacin de personalizacin que se encuentra al final de la Gua de configuracin del aula para el curso 2329A, Programacin de una base de datos Microsoft SQL Server 2000.

Preparacin de la prctica
No hay requisitos de preparacin de la prctica que afecten a la replicacin o personalizacin.

Resultados de las prcticas


No hay cambios de configuracin en los equipos de los alumnos que afecten a la replicacin o personalizacin.

Mdulo 15: Administracin de transacciones y bloqueos

Introduccin
Objetivo del tema
Proporcionar una introduccin a los temas y objetivos del mdulo.

Introduccin a las transacciones y los bloqueos Administracin de las transacciones Bloqueos en SQL Server Administracin de los bloqueos

Explicacin previa
En este mdulo, trataremos...

******EL USO POR QUIENES NO SEAN INSTRUCTORES NO EST AUTORIZADO Y RESULTA ILEGAL*****

Objetivos
Despus de completar este mdulo, el alumno ser capaz de: Describir el proceso de transacciones. Ejecutar, cancelar o deshacer una transaccin. Identificar los problemas de la simultaneidad de bloqueos. Identificar los recursos que se pueden bloquear y los tipos de bloqueos. Describir la compatibilidad de los bloqueos. Describir cmo Microsoft SQL Server 2000 utiliza el bloqueo dinmico. Establecer opciones de bloqueo y presentar informacin acerca de los bloqueos.

Mdulo 15: Administracin de transacciones y bloqueos

Introduccin a las transacciones y los bloqueos


Proporcionar una introduccin a este tema.

Objetivo del tema

Explicacin previa

Las transacciones aseguran que varias modificaciones a los datos se procesan juntas Los bloqueos impiden los conflictos de actualizacin Las transacciones estn serializadas El bloqueo es automtico Los bloqueos permiten usar los datos al mismo tiempo Control de simultaneidad

Las transacciones y los bloqueos aseguran la integridad de las transacciones.

******EL USO POR QUIENES NO SEAN INSTRUCTORES NO EST AUTORIZADO Y RESULTA ILEGAL***** Sugerencia Las transacciones utilizan los bloqueos para impedir que otros usuarios cambien o lean los datos de una transaccin que no se ha completado. El bloqueo es necesario en el Proceso de transacciones en lnea (OLTP, Online Transaction Processing) en sistemas multiusuario. SQL Server utiliza el registro de transacciones para asegurar que las actualizaciones se han completado y son recuperables.

Este mdulo se centra en el proceso de transacciones en lnea, no de aplicaciones de consulta, como almacenes de datos y ayuda a la toma de decisiones.

Transacciones
Las transacciones aseguran que varias modificaciones a los datos se procesan como una unidad; esto se conoce como atomicidad. Por ejemplo, una transaccin bancaria podra abonar en una cuenta y cargar en otra. Los dos pasos se deben completar al mismo tiempo. SQL Server acepta que el proceso de transacciones administre varias transacciones.

Mdulo 15: Administracin de transacciones y bloqueos

Bloqueos
Los bloqueos impiden los conflictos de actualizacin. Los usuarios no pueden leer o modificar los datos que estn en proceso de modificacin por parte de otros usuarios. Por ejemplo, si desea calcular una funcin de agregado y asegurarse de que otra transaccin no modifique el conjunto de datos que se utiliza para calcular la funcin de agregado, puede solicitar que el sistema establezca bloqueos en los datos. Tenga en cuenta los siguientes hechos acerca de los bloqueos: Los bloqueos hacen posible la serializacin de transacciones de forma que slo una persona a la vez pueda modificar un elemento de datos. Por ejemplo, en un sistema de reservas de una lnea area los bloqueos aseguran que slo se asigne un asiento concreto a una persona. SQL Server establece y ajusta dinmicamente el nivel de bloqueo apropiado durante una transaccin. Tambin se puede controlar manualmente cmo se utilizan algunos de los bloqueos. Los bloqueos son necesarios para que las transacciones simultneas permitan que los usuarios tengan acceso y actualicen los datos al mismo tiempo. La alta simultaneidad significa que hay varios usuarios que consiguen un buen tiempo de respuesta con pocos conflictos. Desde la perspectiva del administrador del sistema, los problemas principales son el nmero de usuarios, el nmero de transacciones y el rendimiento. Desde la perspectiva del usuario, la preocupacin principal es el tiempo de respuesta.

Control de simultaneidad
El control de simultaneidad garantiza que las modificaciones que realiza un usuario no afectan de forma negativa a las modificaciones que realice otro. Hay dos tipos. El control de simultaneidad pesimista bloquea los datos cuando se leen para preparar una actualizacin. Los dems usuarios no pueden realizar acciones que alteren los datos subyacentes hasta que el usuario que ha aplicado el bloqueo termine con los datos. Utilice la simultaneidad pesimista donde haya una alta contencin de los datos y el costo de proteger los datos con bloqueos sea menor que el costo de deshacer transacciones si se producen conflictos de simultaneidad. El control de simultaneidad optimista no bloquea los datos cuando se leen inicialmente. En su lugar, cuando se realiza una actualizacin, SQL Server realiza comprobaciones para determinar si los datos subyacentes han cambiado desde que se leyeron inicialmente. De ser as, al usuario le aparece un error, la transaccin se deshace y el usuario debe volver a empezar. Utilice la simultaneidad optimista cuando haya contencin baja de los datos y el costo de deshacer ocasionalmente una transaccin sea menor que el costo de bloquear los datos cuando se leen. SQL Server admite una gran variedad de mecanismos de control de simultaneidad optimista y pesimista. Los usuarios indican el tipo de control de simultaneidad al especificar el nivel de aislamiento de transacciones para una conexin.

Mdulo 15: Administracin de transacciones y bloqueos

Administracin de las transacciones


Objetivo del tema
Proporcionar un resumen de este tema.

Explicacin previa
En esta seccin, trataremos

Presentacin multimedia: Transacciones de SQL Server Recuperacin de transacciones y puntos de comprobacin Consideraciones para el uso de transacciones Establecimiento de la opcin de transacciones implcitas Restricciones en las transacciones definidas por el usuario

******EL USO POR QUIENES NO SEAN INSTRUCTORES NO EST AUTORIZADO Y RESULTA ILEGAL***** Esta seccin describe cmo se definen las transacciones, qu hay que tener en cuenta al utilizarlas, cmo se establece una opcin de transaccin implcita y las restricciones en el uso de las transacciones. Tambin describe el procesamiento y la recuperacin de transacciones.

Mdulo 15: Administracin de transacciones y bloqueos

Presentacin multimedia: Transacciones de SQL Server


Objetivo del tema
Ver un ejemplo del proceso de transacciones.

Explicacin previa

En esta presentacin, ver cmo se procesan las transacciones y cmo funciona el registro de transacciones.

******EL USO POR QUIENES NO SEAN INSTRUCTORES NO EST AUTORIZADO Y RESULTA ILEGAL***** Advertencia En SQL Server hay dos clases de transacciones: En una transaccin implcita, cada instruccin Transact-SQL, como INSERT, UPDATE o DELETE, se ejecuta como una transaccin. En una transaccin explcita o definida por el usuario, las instrucciones de la transaccin se agrupan entre las clusulas BEGIN TRANSACTION y COMMIT TRANSACTION. El usuario puede establecer un punto de almacenamiento, o marcador, en una transaccin. Un punto de almacenamiento define una ubicacin a la que puede volver una transaccin si parte de la misma se cancela condicionalmente. La transaccin debe continuar hasta que se complete o se deshaga en su totalidad. Las transacciones de SQL Server emplean la sintaxis siguiente. Sintaxis BEGIN TRAN[SACTION] [transaccin | @variableTransaccin [WITH MARK [descripcin]]] La opcin transaccin especifica un nombre de transaccin definido por el usuario. En variableTransaccin se especifica el nombre de una variable definida por el usuario con un nombre de transaccin vlido. WITH MARK especifica que la transaccin est marcada en el registro de transacciones. Descripcin es una cadena que describe la marca que permite WITH MARK para restaurar un registro de transacciones a una marca con nombre. Sintaxis Sintaxis Sintaxis SAVE TRAN[SACTION] {puntoAlmacenamiento | @variablePuntoAlmacenamiento} BEGIN DISTRIBUTED TRAN[SACTION] [transaccin | @variableTransaccin] COMMIT [TRAN[SACTION] [transaccin | @variableTransaccin]]

Para mostrar los subttulos de la presentacin, active la opcin Ttulos del men Ver en el Reproductor de Windows Media.

Punto clave

Una transaccin confirmada no se puede deshacer.

Mdulo 15: Administracin de transacciones y bloqueos

Sintaxis Ejemplo
Este ejemplo no se puede ejecutar porque los procedimientos almacenados no existen.

ROLLBACK [TRAN[SACTION] [transaccin | @variableTransaccin | puntoAlmacenamiento | @variablePuntoAlmacenamiento]] Este ejemplo define una transaccin que transfiere fondos entre la cuenta corriente y la cuenta de ahorro de un cliente.
BEGIN TRAN fund_transfer EXEC debit_checking 100, 'account1' EXEC credit_savings 100, 'account1' COMMIT TRAN fund_transfer

Descripcin del registro de transacciones


Todas las transacciones se graban en un registro de transacciones para mantener la coherencia de la base de datos y facilitar la recuperacin. El registro es un rea de almacenamiento que efecta automticamente el seguimiento de todos los cambios realizados en la base de datos, a excepcin de las operaciones no registradas. Las modificaciones se graban en el registro en disco cuando se ejecutan, antes de escribirse en la base de datos.

Mdulo 15: Administracin de transacciones y bloqueos

Recuperacin de transacciones y puntos de comprobacin


Objetivo del tema
Explicar el proceso de recuperacin.

Recuperacin de transacciones
1 2 3 4 5 Puntos de comprobacin

Accin requerida
Ninguna Confirmar Deshacer Confirmar Deshacer

Explicacin previa

Como el registro de transacciones graba todas las modificaciones, los datos se pueden recuperar fcilmente en caso de que se produzca un error del sistema.

Fallo del sistema

******EL USO POR QUIENES NO SEAN INSTRUCTORES NO EST AUTORIZADO Y RESULTA ILEGAL***** Como el registro de transacciones graba todas las transacciones, SQL Server puede recuperar los datos automticamente en el caso de un corte de energa, un error en el software del sistema, problemas en el cliente o una peticin de cancelacin de una transaccin. Sugerencia SQL Server garantiza automticamente que todas las transacciones confirmadas quedan reflejadas en la base de datos en caso de que se produzca un error. Utiliza el registro de transacciones para rehacer todas las transacciones confirmadas y deshacer las no confirmadas. En el ejemplo de la diapositiva: La transaccin 1 se ha confirmado antes del punto de comprobacin, de modo que queda reflejada en la base de datos. Las transacciones 2 y 4 se han confirmado despus del punto de comprobacin, de modo que deben reconstruirse (rehacerse) a partir del registro. Las transacciones 3 y 5 no se han confirmado, por lo que SQL Server las deshace.

Utilice la diapositiva como punto de partida para la explicacin. Pregunte a los alumnos por qu es necesaria cada una de las acciones.

Mdulo 15: Administracin de transacciones y bloqueos

Inicialmente, las pginas de la cach de datos y las del disco son iguales. Despus, tiene lugar el siguiente proceso: Los cambios que aparecen en la cach de datos como transacciones se confirman. Cuando la cach se llena, las pginas modificadas se escriben en disco. Cuando se produce un punto de comprobacin, la cach se escribe en disco. El disco vuelve a tener los mismos datos que la cach. Importante Utilice un controlador de disco con cach de escritura con SQL Server slo si se ha diseado para su uso con un servidor de bases de datos. Si no se hace as, se comprometer la capacidad de SQL Server de administrar transacciones. Un controlador de disco con cach de escritura puede hacer que parezca que est terminado el registro de preescritura, incluso si no es as.

Mdulo 15: Administracin de transacciones y bloqueos

Consideraciones para el uso de transacciones


Objetivo del tema
Identificar los problemas del uso de transacciones.

Explicacin previa

Recomendaciones para las transacciones Las transacciones deben ser lo ms cortas posible Preste atencin a ciertas instrucciones Transact-SQL Evite las transacciones que requieran la intervencin del usuario Aspectos del anidamiento de transacciones Se pueden anidar transacciones, pero no se recomienda Utilice @@trancount para determinar el nivel de anidamiento

En general, mantenga las transacciones lo ms cortas posible.

******EL USO POR QUIENES NO SEAN INSTRUCTORES NO EST AUTORIZADO Y RESULTA ILEGAL***** Suele ser conveniente mantener las transacciones en un tamao reducido y evitar el anidamiento de transacciones.

Recomendaciones para las transacciones


Las transacciones deben ser lo ms cortas posible. Las transacciones mayores aumentan la posibilidad de que los usuarios no puedan tener acceso a los datos bloqueados. He aqu algunos de los mtodos para mantener las transacciones cortas: Para minimizar la duracin de la transaccin, preste atencin cuando utilice ciertas instrucciones Transact-SQL, como WHILE o instrucciones del Lenguaje de definicin de datos (DDL, Data Definition Language). No requiera la intervencin del usuario durante una transaccin. Resuelva los aspectos que requieran la intervencin del usuario antes de iniciar la transaccin. Por ejemplo, si va a actualizar el registro de un cliente, obtenga la informacin necesaria del usuario antes de comenzar la transaccin. INSERT, UPDATE y DELETE deben ser las instrucciones principales de una transaccin, y deben escribirse de forma que afecten al menor nmero de filas posible. Una transaccin nunca debe ser menor que una unidad lgica de trabajo. Si es posible, no abra una transaccin mientras examina los datos. Las transacciones no deben empezar hasta que no se hayan realizado todos los anlisis de datos preliminares. Obtenga acceso a la mnima cantidad de datos posible mientras se encuentre en una transaccin. De esta forma disminuye el nmero de filas bloqueadas y se reduce la contencin.

10

Mdulo 15: Administracin de transacciones y bloqueos

Aspectos del anidamiento de transacciones


Tenga en cuenta lo siguiente en cuanto al anidamiento de transacciones: Se pueden anidar transacciones, pero el anidamiento no afecta a cmo SQL Server procesa la transaccin. Debe utilizar el anidamiento cuidadosamente, si la hubiera, porque el no confirmar o deshacer una transaccin deja activados los bloqueos indefinidamente. Slo se aplica la pareja de instrucciones BEGINCOMMIT ms externa. Normalmente, el anidamiento de transacciones se produce cuando se invocan entre s procedimientos almacenados con parejas de instrucciones BEGIN...COMMIT o desencadenadores. Puede utilizar la variable global @@trancount para determinar si hay alguna transaccin abierta y su nivel de anidamiento: @@trancount es cero cuando no hay transacciones abiertas. Una instruccin BEGIN TRAN incrementa @@trancount en uno y una instruccin ROLLBACK TRAN establece @@trancount en cero. Nota Tambin puede utilizar la instruccin DBCC OPENTRAN en la sesin actual para obtener informacin acerca de las transacciones activas.

Mdulo 15: Administracin de transacciones y bloqueos

11

Establecimiento de la opcin de transacciones implcitas


Objetivo del tema
Describir cmo se establecen las transacciones implcitas.

Explicacin previa

Una transaccin se inicia automticamente cuando se ejecutan determinadas instrucciones No se permiten transacciones anidadas La transaccin debe completarse explcitamente con COMMIT o ROLLBACK TRANSACTION De forma predeterminada, esta opcin est desactivada
SET SET IMPLICIT_TRANSACTIONS IMPLICIT_TRANSACTIONS ON ON

Las transacciones implcitas pueden ser tiles cuando se migran aplicaciones a SQL Server.

******EL USO POR QUIENES NO SEAN INSTRUCTORES NO EST AUTORIZADO Y RESULTA ILEGAL***** En la mayora de los casos, es preferible definir las transacciones explcitamente con la instruccin BEGIN TRANSACTION. Sin embargo, en aplicaciones que se desarrollaron originalmente en sistemas diferentes de SQL Server, la opcin SET IMPLICIT_TRANSACTIONS puede ser til. Establece el modo de transaccin implcita en una conexin. Sintaxis SET IMPLICIT_TRANSACTIONS {ON OFF} Al establecer transacciones implcitas, tenga en cuenta lo siguiente: Cuando el modo de transaccin implcita de una conexin est activado, la ejecucin de cualquiera de las instrucciones siguientes desencadena el inicio de una transaccin:
ALTER TABLE CREATE DELETE DROP FETCH GRANT INSERT OPEN REVOKE SELECT TRUNCATE TABLE UPDATE

No se permiten transacciones anidadas. Si la conexin ya se encuentra en una transaccin abierta, las instrucciones no inician una nueva transaccin. Cuando esta opcin est activada, el usuario tiene que confirmar o deshacer la transaccin explcitamente al final de la transaccin. De lo contrario, cuando el usuario se desconecte se deshar la transaccin y todos los cambios a los datos que contiene. De forma predeterminada, esta opcin est desactivada.

12

Mdulo 15: Administracin de transacciones y bloqueos

Restricciones en las transacciones definidas por el usuario


Objetivo del tema
Indicar los elementos que no se pueden utilizar en las transacciones definidas por el usuario.

Ciertas instrucciones no se pueden incluir


ALTER DATABASE BACKUP LOG CREATE DATABASE DROP DATABASE RECONFIGURE RESTORE DATABASE RESTORE LOG UPDATE STATISTICS

Explicacin previa

Hay algunas restricciones a las transacciones definidas por el usuario.

******EL USO POR QUIENES NO SEAN INSTRUCTORES NO EST AUTORIZADO Y RESULTA ILEGAL****** Hay algunas restricciones a las transacciones definidas por el usuario: Ciertas instrucciones no se pueden incluir en una transaccin explcita. Por ejemplo, algunas de ellas son operaciones de ejecucin prolongada que no se suelen utilizar en el contexto de una transaccin. Las instrucciones restringidas son las siguientes: ALTER DATABASE BACKUP LOG CREATE DATABASE DROP DATABASE RECONFIGURE RESTORE DATABASE RESTORE LOG UPDATE STATISTICS

Mdulo 15: Administracin de transacciones y bloqueos

13

Bloqueos en SQL Server


Proporcionar un resumen de este tema.

Objetivo del tema

Explicacin previa
En esta seccin, trataremos

Problemas de simultaneidad impedidos por los bloqueos Recursos que se pueden bloquear Tipos de bloqueos Compatibilidad de los bloqueos

******EL USO POR QUIENES NO SEAN INSTRUCTORES NO EST AUTORIZADO Y RESULTA ILEGAL***** En esta seccin se describen los problemas de simultaneidad, los recursos que se pueden bloquear, los tipos de bloqueos que se pueden establecer sobre dichos recursos y cmo se pueden combinar los bloqueos.

14

Mdulo 15: Administracin de transacciones y bloqueos

Problemas de simultaneidad impedidos por los bloqueos


Describir los problemas ms comunes de la simultaneidad de los bloqueos.

Objetivo del tema

Actualizacin perdida Dependencia no confirmada (lectura no confirmada) Anlisis incoherente (lectura no repetible) Lecturas fantasma

Explicacin previa

Los bloqueos son tiles para asegurar la integridad de las transacciones en estas situaciones

******EL USO POR QUIENES NO SEAN INSTRUCTORES NO EST AUTORIZADO Y RESULTA ILEGAL***** Los bloqueos pueden impedir las siguientes situaciones que comprometen la integridad de las transacciones: Actualizacin perdida Una actualizacin se puede perder cuando una transaccin sobrescribe los cambios de otra transaccin. Por ejemplo, dos usuarios pueden actualizar la misma informacin, pero slo la ltima modificacin queda reflejada en la base de datos. Dependencia no confirmada (lectura no confirmada) Una dependencia no confirmada ocurre cuando una transaccin lee los datos sin confirmar de otra transaccin. La transaccin puede hacer cambios segn datos que no son correctos o que no existen. Anlisis incoherente (lectura no repetible) Un anlisis incoherente ocurre cuando una transaccin lee la misma fila varias veces y cuando, entre las dos (o ms) lecturas, otra transaccin modifica esa fila. Como la fila se ha modificado entre lecturas de una misma transaccin, cada lectura produce valores diferentes, lo que causa incoherencias. Por ejemplo, un editor lee el mismo documento dos veces, pero de una lectura a otra, el escritor vuelve a escribir el documento. Cuando el editor lee el documento por segunda vez, ha cambiado por completo. La lectura original no se puede repetir, lo que produce confusin. Sera mejor que el editor slo leyera el documento despus de que el escritor hubiera terminado de escribirlo. Lecturas fantasma Las lecturas fantasma pueden ocurrir cuando las transacciones no estn aisladas unas de otras. Por ejemplo, se podra hacer una actualizacin en todos los registros de una regin al mismo tiempo que otra transaccin inserta un nuevo registro de esa regin. La prxima vez que la transaccin lea los datos, aparecer un registro adicional.

Mdulo 15: Administracin de transacciones y bloqueos

15

Recursos que se pueden bloquear


Enumerar los recursos que SQL Server puede bloquear.

Objetivo del tema

Elemento RID Clave Pgina Extensin Tabla Base de datos

Descripcin Identificador de fila Bloqueo de fila dentro de un ndice Pgina de datos o pgina de ndice Grupo de pginas Tabla completa Base de datos completa

Explicacin previa

El nmero de bloqueos se tiene que adaptar a la cantidad de datos a los que afecta cada uno de los bloqueos.

******EL USO POR QUIENES NO SEAN INSTRUCTORES NO EST AUTORIZADO Y RESULTA ILEGAL***** Para obtener el mximo rendimiento, el nmero de bloqueos mantenidos por SQL Server se tiene que adaptar a la cantidad de datos a los que afecta cada uno de los bloqueos. Para minimizar el costo de los bloqueos, SQL Server bloquea automticamente los recursos en el nivel apropiado para la tarea. SQL Server puede bloquear los siguientes tipos de elementos.
Elemento RID Clave Pgina Extensin Tabla Base de datos Descripcin Identificador de fila: se utiliza para bloquear una sola fila de una tabla. Bloqueo de fila dentro de un ndice: se utiliza para proteger intervalos de claves en transacciones serializables. Pgina de datos o pgina de ndice de 8 KB. Grupo contiguo de pginas de datos o pginas de ndice: se utiliza durante la asignacin de espacio. Tabla completa, incluidos todos los datos e ndices. Toda la base de datos: se utiliza durante la restauracin de una base de datos.

16

Mdulo 15: Administracin de transacciones y bloqueos

Tipos de bloqueos
Objetivo del tema
Enumerar los tipos de bloqueos.

Explicacin previa

Bloqueos bsicos Compartidos Exclusivos Bloqueos para situaciones especiales Intencin Actualizacin Esquema Actualizacin masiva

SQL Server tiene dos tipos principales de bloqueos: bloqueos bsicos y bloqueos para situaciones especiales.

******EL USO POR QUIENES NO SEAN INSTRUCTORES NO EST AUTORIZADO Y RESULTA ILEGAL***** SQL Server tiene dos tipos principales de bloqueos: bloqueos bsicos y bloqueos para situaciones especiales.

Bloqueos bsicos
En general, las operaciones de lectura adquieren bloqueos compartidos y las operaciones de escritura adquieren bloqueos exclusivos.

Bloqueos compartidos
SQL Server suele utilizar bloqueos compartidos (de lectura) en las operaciones que no modifican ni actualizan los datos. Si SQL Server ha aplicado un bloqueo compartido a un recurso, una segunda transaccin tambin puede adquirir un bloqueo compartido, incluso si la primera transaccin no ha terminado. Tenga en cuenta los siguientes hechos acerca de los bloqueos compartidos: Slo se utilizan en operaciones de lectura; los datos no se pueden modificar. SQL Server libera los bloqueos compartidos de un registro cuando se lee el registro siguiente. Un bloqueo compartido existe hasta que todas las filas que cumplen las condiciones de la consulta se han devuelto al cliente.

Mdulo 15: Administracin de transacciones y bloqueos

17

Bloqueos exclusivos
SQL Server utiliza bloqueos exclusivos (de escritura) en las instrucciones de modificacin de datos INSERT, UPDATE y DELETE. Tenga en cuenta los siguientes hechos acerca de los bloqueos exclusivos: Slo una transaccin puede conseguir un bloqueo exclusivo sobre un recurso. Una transaccin no puede adquirir un bloqueo compartido sobre un recurso que tenga un bloqueo exclusivo. Una transaccin no puede adquirir un bloqueo exclusivo sobre un recurso hasta que todos los bloqueos compartidos se hayan liberado.

Bloqueos para situaciones especiales


Dependiendo de la situacin, SQL Server puede utilizar otros tipos de bloqueos:

Bloqueos de intencin
SQL Server utiliza internamente los bloqueos de intencin para minimizar los conflictos de bloqueo. Los bloqueos de intencin establecen una jerarqua de bloqueo para que otras transacciones no puedan adquirir bloqueos en niveles ms incluyentes que otros existentes. Por ejemplo, si una transaccin tiene un bloqueo exclusivo de fila sobre un registro de cliente especfico, el bloqueo de intencin impide que otra transaccin adquiera un bloqueo exclusivo en el nivel de tabla. Los bloqueos de intencin son: bloqueo compartido de intencin (IS), bloqueo exclusivo de intencin (IX) y compartido con bloqueo exclusivo de intencin (SIX).

Bloqueos de actualizacin
SQL Server utiliza los bloqueos de actualizacin cuando va a modificar una pgina. Antes de modificar la pgina, SQL Server aumenta el nivel de bloqueo de actualizacin de pgina a bloqueo de pgina exclusivo para impedir conflictos de bloqueo. Tenga en cuenta los siguientes hechos acerca de los bloqueos de actualizacin. Los bloqueos de actualizacin: Se adquieren durante la parte inicial de una operacin de actualizacin al leer las pginas por primera vez. Son compatibles con los bloqueos compartidos.

Bloqueos de esquema
Los bloqueos de esquema aseguran que no se elimine una tabla o un ndice, o que no se modifique su esquema, cuando se les hace referencia en otra sesin. SQL Server proporciona dos tipos de bloqueos de esquema: Estabilidad del esquema (Sch-S), que asegura que no se eliminar un recurso. Modificacin del esquema (Sch-M), que asegura que otras sesiones no hagan referencia a un recurso que est siendo modificado.

18

Mdulo 15: Administracin de transacciones y bloqueos

Bloqueos de actualizacin masiva


Los bloqueos de actualizacin masiva permiten procesos de copia masiva simultneos en la misma tabla, a la vez que impiden que otros procesos que no hacen copias masivas tengan acceso a la tabla. SQL Server utiliza bloqueos de actualizacin masiva cuando se especifica una de las opciones siguientes: la sugerencia TABLOCK o la opcin table lock on bulk load (bloqueo de tabla en carga masiva), que se establece mediante el procedimiento almacenado de sistema sp_tableoption.

Mdulo 15: Administracin de transacciones y bloqueos

19

Compatibilidad de los bloqueos


Objetivo del tema
Explicar qu bloqueos son compatibles.

Explicacin previa

Los bloqueos pueden ser compatibles o incompatibles con otros bloqueos.

Los bloqueos pueden ser compatibles o incompatibles con otros bloqueos Ejemplos Los bloqueos compartidos son compatibles con todos los bloqueos excepto con los exclusivos Los bloqueos exclusivos no son compatibles con ningn otro bloqueo Los bloqueos de actualizacin son compatibles slo con los bloqueos compartidos

******EL USO POR QUIENES NO SEAN INSTRUCTORES NO EST AUTORIZADO Y RESULTA ILEGAL***** Los bloqueos pueden ser compatibles o incompatibles con otros bloqueos. Los bloqueos tienen una matriz de compatibilidad que muestra qu bloqueos son compatibles con otros bloqueos del mismo recurso. Los bloqueos mostrados en la siguiente tabla estn enumerados en orden desde el menos restrictivo (compartido) al ms restrictivo (exclusivo). Sugerencia
Bloqueo concedido existente Bloqueo solicitado Compartido de intencin (IS) Compartido (S) Actualizacin (U) Exclusivo de intencin (IX) Compartido con bloqueo exclusivo de intencin (SIX) Exclusivo (X) IS S S S S S S S S S No No U S S No No No IX S No No S No SIX S No No No No X No No No No No

Explique la matriz de bloqueos mediante los ejemplos de la diapositiva.

No

No

No

No

No

No

Nota Un bloqueo IX es compatible con otros bloqueos IX porque IX implica la intencin de actualizar slo algunas de las filas, no todas. Adems, la compatibilidad de los bloqueos de esquema es la siguiente: El bloqueo de modificacin de esquema (Sch-M) es incompatible con todos los bloqueos. El bloqueo de estabilidad de esquema (Sch-S) es compatible con todos los bloqueos excepto el bloqueo de modificacin de esquema (Sch-M).

20

Mdulo 15: Administracin de transacciones y bloqueos

Administracin de los bloqueos


Proporcionar un resumen de este tema.

Objetivo del tema

Explicacin previa
En esta seccin, trataremos

Opciones de bloqueo en el nivel de sesin Arquitectura de bloqueos dinmicos Opciones de bloqueo en el nivel de tabla Interbloqueos Presentacin de informacin acerca de los bloqueos

******EL USO POR QUIENES NO SEAN INSTRUCTORES NO EST AUTORIZADO Y RESULTA ILEGAL***** Esta seccin describe las opciones de bloqueo que se pueden especificar en los niveles de sesin y de tabla. Tambin describe cmo SQL Server controla los interbloqueos y cmo se puede ver la informacin de los bloqueos.

Mdulo 15: Administracin de transacciones y bloqueos

21

Opciones de bloqueo en el nivel de sesin


Presentar el nivel de aislamiento de las transacciones.

Objetivo del tema

Nivel de aislamiento de las transacciones READ COMMITTED (DEFAULT) READ UNCOMMITTED REPEATABLE READ SERIALIZABLE Tiempo de espera para los bloqueos Limita el tiempo de espera para un recurso bloqueado Use SET LOCK_TIMEOUT

Explicacin previa

SQL Server permite controlar las opciones de bloqueo en el nivel de sesin.

******EL USO POR QUIENES NO SEAN INSTRUCTORES NO EST AUTORIZADO Y RESULTA ILEGAL***** SQL Server permite controlar las opciones de bloqueo en el nivel de sesin mediante el establecimiento del nivel de aislamiento de las transacciones.

Nivel de aislamiento de las transacciones


El nivel de aislamiento protege una transaccin especificada de otras transacciones. Utilice el nivel de aislamiento de la transaccin para establecer el nivel de aislamiento de todas las transacciones de una sesin. Al establecer el nivel de aislamiento, se especifica el comportamiento predeterminado de los bloqueos en todas las instrucciones de la sesin. Establecer niveles de aislamiento de transaccin permite a los programadores aceptar un riesgo mayor de problemas de integridad a cambio de un mayor acceso simultneo a los datos. Cuanto mayor sea el nivel de aislamiento, durante ms tiempo se mantienen los bloqueos y ms restrictivos son stos. El nivel de aislamiento de la sesin se puede suplantar en instrucciones individuales mediante una especificacin de bloqueo. Tambin se puede utilizar la instruccin DBCC USEROPTIONS para especificar el aislamiento de la transaccin en una instruccin.

22

Mdulo 15: Administracin de transacciones y bloqueos

Sintaxis

SET TRANSACTION ISOLATION LEVEL {READ COMMITTED | READ UNCOMMITTED | REPEATABLE READ | SERIALIZABLE} La siguiente tabla describe las opciones de nivel de aislamiento de los bloqueos.
Opcin READ COMMITTED Descripcin Indica a SQL Server que utilice bloqueos compartidos al leer. En este nivel, no pueden producirse lecturas no confirmadas. Indica a SQL Server que no establezca bloqueos compartidos y no atienda bloqueos exclusivos. Pueden producirse lecturas no confirmadas. REPEATABLE READ Indica que no pueden ocurrir lecturas no confirmadas y lecturas irrepetibles. Los bloqueos de lectura se mantienen hasta el final de la transaccin. Impide que otros usuarios actualicen o inserten nuevas filas que cumplan los criterios de la clusula WHERE de la transaccin. No se pueden producir datos fantasma.

SERIALIZABLE

Ejemplo

El siguiente ejemplo establece el nivel de aislamiento de la sesin actual como READ UNCOMMITTED y, despus, comprueba DBCC USEROPTIONS para comprobar que SQL Server ha efectuado el cambio.
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED DBCC USEROPTIONS

Resultado
set option textsize language dateformat datefirst . . . isolation level (13 filas afectadas) value 64512 us_english mdy 7

read uncommitted

Nota DBCC siempre imprime el siguiente mensaje cuando se ejecuta:


DBCC execution completed. If DBCC printed error messages, see your System Administrator.

Mdulo 15: Administracin de transacciones y bloqueos

23

Sugerencia

Tiempo de espera para los bloqueos


Con la opcin SET LOCK_TIMEOUT, se puede establecer la cantidad mxima de tiempo que SQL Server permite que una transaccin espere la liberacin de un recurso bloqueado. SET LOCK_TIMEOUT tiempoDeEspera tiempoDeEspera es el nmero de milisegundos que pasan hasta que SQL Server devuelve un error de bloqueo. Un valor de -1 (el valor predeterminado) indica que no hay tiempo de espera. Despus de cambiarlo, el nuevo valor tiene efecto durante el resto de la sesin.

Demuestre los tiempos de espera de los bloqueos mediante varias consultas.

Sintaxis

Ejemplo

En este ejemplo se establece el tiempo de espera del bloqueo en 180.000 milisegundos.


SET LOCK_TIMEOUT 180000

Para determinar el valor para la sesin actual, consulte la variable global @@lock_timeout. Ejemplo En este ejemplo se presenta el valor actual de @@lock_timeout.
SELECT @@lock_timeout

Resultado

180000 (1 filas afectadas)

24

Mdulo 15: Administracin de transacciones y bloqueos

Arquitectura de bloqueos dinmicos


Objetivo del tema
Mostrar cmo se encuentran los bloqueos de costo ms efectivo.
Bloqueo dinmico

Explicacin previa

La arquitectura de bloqueos dinmicos ayuda a determinar los bloqueos de costo ms efectivo.

Costo

Fila

Pgina Granularidad

Tabla

Costo de bloqueo Costo de simultaneidad

******EL USO POR QUIENES NO SEAN INSTRUCTORES NO EST AUTORIZADO Y RESULTA ILEGAL***** SQL Server utiliza una arquitectura de bloqueos dinmicos para determinar los bloqueos de costo ms efectivo. Determina automticamente qu bloqueos resultan ms adecuados cuando se ejecuta una consulta, segn las caractersticas del esquema y consulta. SQL Server aumenta y reduce dinmicamente la granularidad y los tipos de bloqueos. Normalmente, el optimizador de consultas elige la granularidad de bloqueo correcta cuando se compila el plan de ejecucin, con lo que se reduce la necesidad de concentrar bloqueos. Por ejemplo, si una actualizacin adquiere una gran cantidad de bloqueos de nivel de fila y ha bloqueado un porcentaje significativo de una tabla, los bloqueos de nivel de fila se concentran en un bloqueo de tabla. La transaccin contiene los bloqueos de nivel de fila, con lo que se reduce la carga de trabajo de bloqueo. El bloqueo dinmico tiene las siguientes ventajas: Administracin simplificada de bases de datos, ya que los administradores ya no se tienen que preocupar de ajustar los umbrales de concentracin de bloqueos. Rendimiento aumentado, ya que SQL Server reduce la carga de trabajo del sistema mediante bloqueos adecuados a la tarea.

Mdulo 15: Administracin de transacciones y bloqueos

25

Opciones de bloqueo en el nivel de tabla


Objetivo del tema
Presentar las opciones de bloqueo de tablas.

selas con precaucin Puede especificar una o ms opciones de bloqueo para una tabla Utilice la parte sugerenciasDeOptimizador de la clusula FROM de las instrucciones SELECT o UPDATE Suplanta las opciones de bloqueo en el nivel de sesin

Explicacin previa

En la prctica diaria, no se debe especificar la opcin de bloqueo de tabla.

******EL USO POR QUIENES NO SEAN INSTRUCTORES NO EST AUTORIZADO Y RESULTA ILEGAL***** Aunque SQL Server utiliza una arquitectura de bloqueos dinmicos para seleccionar el mejor bloqueo para el cliente, se pueden especificar opciones de bloqueo en el nivel de tabla. Una sugerencia de tabla puede especificar un mtodo para que lo utilice el optimizador de consultas con una tabla especfica y para una instruccin. Nota Utilice las opciones de bloqueo en el nivel de tabla con precaucin, slo despus de comprender en detalle el funcionamiento de la aplicacin y cuando haya determinado que el bloqueo que solicita seguir siendo, con el tiempo, mejor que el bloqueo utilizado por SQL Server. Las siguientes caractersticas se aplican a las opciones de bloqueo en el nivel de tabla: Puede especificar una o varias opciones de bloqueo para una tabla. Utilice la parte sugerenciasDeOptimizador de la clusula FROM de las instrucciones SELECT o UPDATE. Estas opciones de bloqueo suplantan las opciones correspondientes del nivel de sesin (nivel de aislamiento de las transacciones) que se hayan especificado previamente con la instruccin SET.

26

Mdulo 15: Administracin de transacciones y bloqueos

La siguiente tabla describe las opciones de bloqueo de tabla.


Opcin HOLDLOCK SERIALIZABLE REPEATABLEREAD READCOMMITTED READUNCOMMITTED NOLOCK ROWLOCK PAGLOCK TABLOCK TABLOCKX READPAST UPDLOCK Descripcin Controlan el comportamiento de bloqueo de una tabla y suplantan los bloqueos que se utilizaran para exigir el nivel de aislamiento de la transaccin actual.

Especifican el tamao y el tipo de los bloqueos que se utilizarn para una tabla.

Salta las filas bloqueadas. Utiliza bloqueos de actualizacin en lugar de bloqueos compartidos.

Mdulo 15: Administracin de transacciones y bloqueos

27

Interbloqueos
Objetivo del tema
Ilustrar por qu y cmo se produce un interbloqueo.

Explicacin previa

Un interbloqueo se produce cuando dos transacciones tienen bloqueos sobre objetos diferentes y cada transaccin solicita un bloqueo sobre el objeto bloqueado por la otra transaccin.

Cmo SQL Server termina los interbloqueos Cmo minimizar los interbloqueos Cmo personalizar la configuracin de tiempo de espera de bloqueo

******EL USO POR QUIENES NO SEAN INSTRUCTORES NO EST AUTORIZADO Y RESULTA ILEGAL***** Sugerencia Un interbloqueo se produce cuando dos transacciones tienen bloqueos sobre objetos diferentes y cada transaccin solicita un bloqueo sobre el objeto bloqueado por la otra transaccin. Las dos transacciones tienen que esperar a que la otra libere el bloqueo. Un interbloqueo puede ocurrir cuando varias transacciones de duracin prolongada se ejecutan simultneamente en la misma base de datos. Tambin pueden ocurrir interbloqueos como resultado del orden en el que el optimizador procesa una consulta compleja, como una combinacin, en la que no se puede controlar el orden del proceso.

Asegrese de resaltar la diferencia entre los interbloqueos y los bloqueos.

Cmo SQL Server termina los interbloqueos


Para terminar automticamente los interbloqueos, SQL Server completa una de las transacciones. El proceso que utiliza SQL Server se encuentra en la lista siguiente. 1. Deshace la transaccin del sujeto del interbloqueo. En un interbloqueo, SQL Server da prioridad a la transaccin que ha estado en proceso durante ms tiempo; dicha transaccin prevalece. SQL Server deshace la transaccin en la que ha invertido menos tiempo. 2. Notifica a la aplicacin sujeto del interbloqueo (con el mensaje nmero 1205). 3. Cancela la peticin actual del sujeto del interbloqueo. 4. Permite que contine la otra transaccin. Importante En entornos multiusuario, todos los clientes deben comprobar con regularidad si reciben el mensaje nmero 1205, que indica que la transaccin se ha deshecho. Si se encuentra el mensaje 1205, la aplicacin tiene que volver a ejecutar la transaccin.

28

Mdulo 15: Administracin de transacciones y bloqueos

Cmo minimizar los interbloqueos


Aunque los interbloqueos no se pueden eliminar siempre, puede reducir el riesgo de que aparezcan si tiene en cuenta las siguientes directrices: Utilice los recursos en la misma secuencia para todas transacciones. Por ejemplo, si es posible, haga referencia a las tablas en el mismo orden en todas las transacciones que hagan referencia a ms de una tabla. Abrevie las transacciones minimizando el nmero de pasos. Abrevie la duracin de las transacciones evitando las consultas que afecten a muchas filas.

Cmo personalizar la configuracin de tiempo de espera de bloqueo


Si una transaccin se bloquea mientras espera un recurso y se produce un interbloqueo, SQL Server terminar una de las transacciones participantes sin tiempo de espera. Si no se produce ningn interbloqueo, SQL Server bloquea la transaccin que solicita el bloqueo hasta que la otra transaccin libere el bloqueo. De forma predeterminada, no hay ningn perodo de tiempo de espera obligatorio que tenga en cuenta SQL Server. La nica forma de probar si el recurso que se desea bloquear ya est bloqueado es tener acceso a los datos, lo que podra dar lugar a que estuviera bloqueado indefinidamente. LOCK_TIMEOUT permite que una aplicacin establezca el tiempo mximo que una instruccin debe esperar en un recurso bloqueado antes de que la instruccin bloqueada se cancele automticamente. La cancelacin no deshace ni cancela la transaccin. La aplicacin debe detectar el error para tratar la situacin de tiempo de espera y tomar una medida correctiva, como volver a enviar la transaccin o deshacerla. El comando KILL termina un proceso de usuario segn el Id. de proceso de servidor (spid).

Mdulo 15: Administracin de transacciones y bloqueos

29

Presentacin de informacin acerca de los bloqueos


Objetivo del tema
Mostrar la distinta informacin acerca de los bloqueos activos que se puede obtener.

Ventana Actividad actual Procedimiento almacenado de sistema sp_lock Analizador de SQL Monitor de sistema de Windows 2000 Informacin adicional

Explicacin previa

Para presentar un informe de los bloqueos activos, ejecute el procedimiento almacenado de sistema sp_lock.

******EL USO POR QUIENES NO SEAN INSTRUCTORES NO EST AUTORIZADO Y RESULTA ILEGAL***** Sugerencia Normalmente, para presentar un informe de los bloqueos activos se utiliza el Administrador corporativo de SQL Server o el procedimiento almacenado de sistema sp_lock. Puede utilizar el Analizador de SQL para obtener informacin acerca de un conjunto especfico de transacciones. Tambin puede utilizar el Monitor de sistema de Microsoft Windows 2000 para presentar el historial de bloqueos de SQL Server.

Muestre la ventana Actividad actual del Administrador corporativo de SQL Server y del Analizador de SQL.

Ventana Actividad actual


Utilice la ventana Actividad actual del Administrador corporativo de SQL Server para presentar informacin acerca de la actividad actual de bloqueo. Puede ver la actividad del servidor por usuario, detallar la actividad por conexin y la informacin de bloqueo por objeto.

Procedimiento almacenado de sistema sp_lock


El procedimiento almacenado de sistema sp_lock devuelve informacin acerca de los bloqueos activos en SQL Server. Sintaxis Resultado EXECUTE sp_lock El resultado ser similar al siguiente.
spid dbid 12 12 12 12 12 12 12 13 5 5 2 5 5 1 5 1 ObjId 0 0 0 0 981578535 5575058 981578535 0 IndId 0 0 0 0 0 0 0 0 Type DB DB EXT PAG RID TAB TAB DB Resource Mode S S X IX X IS IX S Status GRANT GRANT GRANT GRANT GRANT GRANT GRANT GRANT

1:280 1:528 1:528:0

30

Mdulo 15: Administracin de transacciones y bloqueos

Las cuatro primeras columnas hacen referencia a varios Id.: Id. de proceso del servidor (spid), Id. de base de datos (dbid), Id. de objeto (ObjId) e Id. de nmero de identificacin de ndice (IndId). La columna Type muestra el tipo de recurso que est bloqueado actualmente. Los tipos de recursos pueden ser: DB (base de datos), EXT (extensin), TAB (tabla), KEY (clave), PAG (pgina) o RID (identificador de fila). La columna Resource tiene informacin acerca del tipo de recurso que est bloqueado. Una descripcin de recurso de 1:528:0 indica que la fila nmero 0 de la pgina nmero 528 del archivo 1 tiene aplicado un bloqueo. La columna Mode describe el tipo de bloqueo que se est aplicando al recurso. Los tipos de bloqueo son: compartido (S), exclusivo (X), de intencin (I), de actualizacin (U) o de esquema (Sch). La columna Status muestra si el bloqueo se ha obtenido (GRANT), est bloqueado en espera de que termine otro proceso (WAIT) o est en proceso de conversin (CNVRT).

Analizador de SQL
El Analizador de SQL es una herramienta que supervisa las actividades del servidor. Para recopilar informacin acerca de diversos eventos, puede crear trazas, que proporcionan un perfil detallado de los eventos del servidor. Puede utilizar este perfil para analizar y resolver los problemas de recursos del servidor, supervisar los intentos de inicio de sesin y las conexiones, y corregir problemas de interbloqueo.

Monitor de sistema de Windows 2000


Puede ver la informacin de bloqueos de SQL Server con el Monitor de sistema. Utilice los objetos SQL Server: administrador de bloqueos y SQL Server: bloqueos.

Informacin adicional
Para buscar informacin acerca de los bloqueos y la actividad actual del servidor, puede consultar las tablas del sistema syslockinfo, sysprocesses, sysobjects, systables y syslogins, o puede ejecutar el procedimiento almacenado de sistema sp_who.

Mdulo 15: Administracin de transacciones y bloqueos

31

Procedimientos recomendados
Objetivo del tema
Enumerar las recomendaciones para administrar las transacciones y los bloqueos.

Mantenga Mantenga las las transacciones transacciones lo lo ms ms cortas cortas posible posible Disee Disee las las transacciones transacciones para para minimizar minimizar los los interbloqueos interbloqueos

Explicacin previa

Utilice las siguientes recomendaciones cuando administre transacciones y bloqueos.

Utilice Utilice las las opciones opciones de de bloqueo bloqueo predeterminadas predeterminadas de de SQL SQL Server Server

Tenga Tenga cuidado cuidado cuando cuando utilice utilice las las opciones opciones de de bloqueo bloqueo

******EL USO POR QUIENES NO SEAN INSTRUCTORES NO EST AUTORIZADO Y RESULTA ILEGAL***** Al administrar transacciones y bloqueos, debe tener en cuenta las siguientes recomendaciones: Mantenga las transacciones lo ms cortas posible, ya que as se reducir la posibilidad de conflictos de bloqueo con otras transacciones. Una transaccin nunca debe ser menor que una unidad lgica de trabajo. Disee las transacciones para minimizar los interbloqueos, de forma que no haya que volver a ejecutar las transacciones. Utilice las opciones de bloqueo predeterminadas de SQL Server, ya que el optimizador utiliza generalmente los mejores bloqueos, basados en la transaccin concreta y en la actividad actual de la base de datos. Tenga cuidado cuando utilice las opciones de bloqueo y pruebe las transacciones para asegurarse de que sus opciones de bloqueo son mejores que las opciones predeterminadas de SQL Server.

32

Mdulo 15: Administracin de transacciones y bloqueos

Prctica A: Administracin de transacciones y bloqueos


Objetivo del tema
Presentar la prctica.

Explicacin previa

En esta prctica, va a ejecutar transacciones, establecer opciones de bloqueo y ver los resultados de los bloqueos.

******EL USO POR QUIENES NO SEAN INSTRUCTORES NO EST AUTORIZADO Y RESULTA ILEGAL*****
Explique los objetivos de la prctica.

Objetivos
Despus de realizar esta prctica, el alumno ser capaz de: Definir transacciones con las instrucciones BEGIN TRANSACTION y COMMIT TRANSACTION. Determinar el nmero de transacciones activas al consultar la variable global @@trancount. Utilizar el procedimiento almacenado de sistema sp_lock y el Administrador corporativo de SQL Server para ver la informacin de los bloqueos. Utilizar la instruccin SET TRANSACTION ISOLATION LEVEL para controlar el comportamiento de los bloqueos en el nivel de sesin. Utilizar las opciones de bloqueo de tabla para controlar el comportamiento de los bloqueos en tablas especficas. Utilizar la instruccin SET LOCK_TIMEOUT para controlar la cantidad mxima de tiempo que una instruccin puede esperar a que se libere un bloqueo.

Requisitos previos
Antes de trabajar en esta prctica, debe tener: Los archivos de comandos de la prctica que se encuentran en C:\Moc\2329A\Labfiles\L15.

Mdulo 15: Administracin de transacciones y bloqueos

33

Preparacin de la prctica
Para completar esta prctica, necesitar lo siguiente: Haber completado la prctica anterior, o bien Haber ejecutado el archivo por lotes C:\Moc\2329A\Batches\Restore15.cmd. Este archivo de comandos restaura la base de datos ClassNorthwind a un estado requerido para esta prctica.

Ms informacin
Si necesita ayuda acerca de la ejecucin de archivos, busque el ttulo Ejecutar instrucciones SQL en la Ayuda del Analizador de consultas SQL. Otros recursos que puede utilizar son: El esquema de base de datos Northwind. Los Libros en pantalla de SQL Server.

Situacin de ejemplo
La organizacin del aula pretende simular la de una empresa dedicada al comercio mundial llamada Northwind Traders. Su nombre de dominio ficticio es nwtraders.msft. El servidor DNS principal para nwtraders.msft es el equipo del instructor, cuya direccin del Protocolo Internet (IP) es 192.168.x.200 (donde x es el nmero del aula que tiene asignado). El nombre del equipo del instructor es London. En la tabla siguiente se muestran el nombre de usuario, el nombre de equipo y la direccin IP del equipo de cada alumno en el dominio ficticio nwtraders.msft. Busque el nombre de usuario correspondiente a su equipo y antelo.
Nombre de usuario SQLAdmin1 SQLAdmin2 SQLAdmin3 SQLAdmin4 SQLAdmin5 SQLAdmin6 SQLAdmin7 SQLAdmin8 SQLAdmin9 SQLAdmin10 SQLAdmin11 SQLAdmin12 SQLAdmin13 Nombre del equipo Vancouver Denver Perth Brisbane Lisbon Bonn Lima Santiago Bangalore Singapore Casablanca Tunis Acapulco Direccin IP 192.168.x.1 192.168.x.2 192.168.x.3 192.168.x.4 192.168.x.5 192.168.x.6 192.168.x.7 192.168.x.8 192.168.x.9 192.168.x.10 192.168.x.11 192.168.x.12 192.168.x.13

34

Mdulo 15: Administracin de transacciones y bloqueos


(continuacin) Nombre de usuario SQLAdmin14 SQLAdmin15 SQLAdmin16 SQLAdmin17 SQLAdmin18 SQLAdmin19 SQLAdmin20 SQLAdmin21 SQLAdmin22 SQLAdmin23 SQLAdmin24 Nombre del equipo Miami Auckland Suva Stockholm Moscow Caracas Montevideo Manila Tokyo Khartoum Nairobi Direccin IP 192.168.x.14 192.168.x.15 192.168.x.16 192.168.x.17 192.168.x.18 192.168.x.19 192.168.x.20 192.168.x.21 192.168.x.22 192.168.x.23 192.168.x.24

Tiempo previsto para completar esta prctica: 60 minutos

Mdulo 15: Administracin de transacciones y bloqueos

35

Ejercicio 1 Creacin y ejecucin de una transaccin


En este ejercicio, va a utilizar las instrucciones BEGIN TRANSACTION y COMMIT TRANSACTION para comprender el efecto que surten las instrucciones en la forma en la que se modifican los datos. Tambin va a ver cmo SQL Server utiliza la variable global @@trancount para determinar si una transaccin est activa. Para crear y ejecutar una transaccin En este procedimiento, va a utilizar las instrucciones BEGIN TRANSACTION y COMMIT TRANSACTION para controlar cmo se procesa una instruccin UPDATE sobre la tabla Customers. 1. Inicie la sesin en el dominio del aula NWTraders con la informacin de la tabla siguiente.
Opcin Nombre de usuario Contrasea Valor SQLAdminx (donde x corresponde a su nombre de equipo, segn se ha designado en el dominio del aula nwtraders.msft) password

2. Abra el Analizador de consultas SQL y, si as se le pide, conctese al servidor local con autenticacin de Microsoft Windows. Tiene permiso para iniciar sesin y administrar SQL Server ya que ha iniciado sesin como SQLAdminx, que es miembro del grupo local Administradores de Windows 2000. Todos los miembros de este grupo se asignan automticamente a la funcin sysadmin de SQL Server. 3. En la lista BD, haga clic en ClassNorthwind. 4. Abra el archivo C:\Moc\2329A\Labfiles\L15\Tran1.sql y revise su contenido. Observe que la instruccin BEGIN TRAN est seguida por la instruccin UPDATE, pero no se encuentra la instruccin COMMIT TRAN o ROLLBACK TRAN correspondiente. Las instrucciones SELECT y PRINT, y la variable global @@trancount se utilizan en la secuencia de comandos para mostrar el progreso de la transaccin.

36

Mdulo 15: Administracin de transacciones y bloqueos

5. Ejecute la secuencia de comandos y revise los resultados. En este momento, se han confirmado los cambios efectuados con la instruccin UPDATE en esta transaccin? Cmo puede determinar esto? No, la transaccin se debe completar con la instruccin COMMIT TRAN. La transaccin sigue estando activa y sigue manteniendo los bloqueos que haya adquirido. El valor de la variable global @@trancount es 1, lo que indica que en esta sesin se ha enviado una instruccin BEGIN TRAN. ____________________________________________________________ ____________________________________________________________ Podran otras transacciones consultar o actualizar los datos modificados? Otras transacciones no podran consultar o modificar los datos modificados hasta que se haya confirmado (o deshecho) la transaccin. ____________________________________________________________ ____________________________________________________________ 6. Escriba una instruccin COMMIT TRANSACTION en la ventana de consulta y, despus, resltela y ejectela para completar la transaccin y hacer que los cambios sean definitivos. 7. Resalte y ejecute una de las instrucciones SELECT de la tabla Customers para comprobar que ahora s se ha completado el cambio.

Mdulo 15: Administracin de transacciones y bloqueos

37

Ejercicio 2 Deshacer una transaccin


En este ejercicio, va a utilizar la instruccin ROLLBACK TRANSACTION para comprender el efecto que tiene la forma en la que se modifican los datos dentro de una transaccin. Para utilizar la instruccin ROLLBACK TRANSACTION En este procedimiento utilizar las instrucciones BEGIN TRANSACTION y ROLLBACK TRANSACTION para controlar el modo en que se procesa una instruccin UPDATE en la tabla member. 1. Abra el archivo C:\Moc\2329A\Labfiles\L15\Tran2.sql y revise su contenido. Observe que este archivo de comandos es similar a Tran1.sql, pero el nombre de contacto es distinto y se ha agregado una instruccin ROLLBACK TRAN. 2. Ejecute la secuencia de comandos y revise los resultados. Se ha almacenado de forma permanente en la base de datos la modificacin efectuada por la instruccin UPDATE? No. La transaccin se ha cancelado, de modo que los cambios efectuados durante la transaccin se han deshecho. ____________________________________________________________ ____________________________________________________________ Se ha completado la transaccin? S. La instruccin ROLLBACK TRAN completa la transaccin y libera los bloqueos adquiridos por la transaccin. La consulta de la variable global @@trancount devuelve cero. ____________________________________________________________ ____________________________________________________________

38

Mdulo 15: Administracin de transacciones y bloqueos

Ejercicio 3 Presentacin de la informacin de bloqueo


En este ejercicio va a ejecutar simultneamente varias transacciones para determinar el efecto de dicha actividad sobre los bloqueos. Se le pedir que abra varias conexiones con el Analizador de consultas SQL para simular que varios usuarios estn enviando transacciones a SQL Server. Observe que las secuencias de comandos de este ejercicio no siempre incluyen instrucciones COMMIT TRAN o ROLLBACK TRAN. Su ausencia mantiene las transacciones abiertas y los bloqueos asociados activos, para poder ver as la informacin de bloqueo. Para ver la informacin de bloqueo En este procedimiento va a utilizar las instrucciones BEGIN TRANSACTION y ROLLBACK TRANSACTION para controlar cmo se procesa una instruccin UPDATE sobre la tabla Customers. 1. Inicie el Analizador de consultas SQL (conexin 1), y haga clic en Borrar la ventana de Consulta. 2. Ejecute el procedimiento almacenado de sistema sp_lock y revise el resultado. 3. Inicie el Administrador corporativo de SQL Server. 4. En el Administrador corporativo de SQL Server, en el rbol de la consola, expanda su servidor, expanda Administracin y, despus, expanda Actividad actual. Revise la informacin que se presenta en Informacin del proceso, Bloqueos / Id. de proceso y Bloqueos / Objeto. 5. Abra una segunda conexin en el Analizador de consultas SQL (conexin 2) y, en la lista BD, haga clic en ClassNorthwind. 6. Abra el archivo C:\Moc\2329A\Labfiles\L15\Lock1.sql mediante la conexin 2 y revise su contenido. Observe que se inicia una transaccin con la instruccin BEGIN TRAN pero no existe la correspondiente instruccin COMMIT TRAN o ROLLBACK TRAN para completar la transaccin. 7. Ejecute Lock1.sql mediante la conexin 2 y revise los resultados. 8. Cambie a la conexin 1, ejecute el procedimiento almacenado de sistema sp_lock y revise la informacin de bloqueo. Identifique los diferentes tipos de bloqueo y los recursos bloqueados por la transaccin. Anote dicha informacin para utilizarla en el Ejercicio 4. ____________________________________________________________ ____________________________________________________________

Mdulo 15: Administracin de transacciones y bloqueos

39

9. Cambie al Administrador corporativo de SQL Server, haga clic con el botn secundario del mouse (ratn) en Actividad actual y haga clic en Actualizar. 10. Revise la informacin de Actividad actual que se presenta en Informacin del proceso, Bloqueos / Id. de proceso y Bloqueos / Objeto. 11. Cambie a la conexin 2 y cancele la transaccin iniciada en el paso 7; para ello, ejecute una instruccin ROLLBACK TRAN. 12. Cambie a la conexin 1 y ejecute el procedimiento almacenado de sistema sp_lock. Observar que los bloqueos adquiridos por la transaccin en el paso 6 quedan ahora liberados.

40

Mdulo 15: Administracin de transacciones y bloqueos

Ejercicio 4 Establecimiento de las opciones de bloqueo


En este ejercicio, va a utilizar algunas opciones de bloqueo de SQL Server para determinar cmo afectan a la forma en la que se procesan las transacciones. Va a utilizar las conexiones que estableci en el Analizador de consultas SQL en el ejercicio 3 para simular que varios usuarios estn enviando transacciones a SQL Server. Tambin puede utilizar la ventana Actividad actual del Administrador corporativo de SQL Server para ver la informacin de bloqueo durante este ejercicio. Para establecer el nivel de aislamiento de la transaccin En este procedimiento va a utilizar la instruccin SET TRANSACTION ISOLATION LEVEL para controlar el comportamiento del bloqueo en el nivel de sesin. Va a utilizar las conexiones que estableci en el Analizador de consultas SQL en el ejercicio 3. 1. Cambie al Analizador de consultas SQL (conexin 2). 2. Abra el archivo de comandos C:\Moc\2329A\Labfiles\L15\Lock2.sql mediante la conexin 2, revise su contenido y, despus, ejectelo. 3. Cambie a la conexin 1, ejecute el procedimiento almacenado de sistema sp_lock y revise la informacin de bloqueo. Identifique y revise los diferentes tipos de bloqueo y los recursos que la transaccin ha bloqueado. Ha utilizado SQL Server bloqueos diferentes de los que ha utilizado en el paso 8 del ejercicio 3? Razone la respuesta. Esta vez, SQL Server ha utilizado un bloqueo de tabla exclusivo porque la instruccin SET TRANSACTION ISOLATION LEVEL indic que se utilizara el tipo de bloqueo que se requiere para conseguir el nivel de aislamiento especificado. ____________________________________________________________ ____________________________________________________________ 4. Cambie a la conexin 2 y cancele la transaccin; para ello, ejecute una instruccin ROLLBACK TRAN. Para utilizar las opciones de bloqueo de tablas En este procedimiento va a utilizar opciones de bloqueo de tabla para controlar el comportamiento de los bloqueos. 1. Cambie al Analizador de consultas SQL (conexin 1). 2. Ejecute el procedimiento almacenado de sistema sp_lock mediante la conexin 1 y revise el resultado. 3. Cambie al Analizador de consultas SQL (conexin 2).

Mdulo 15: Administracin de transacciones y bloqueos

41

4. Abra el archivo de comandos C:\Moc\2329A\Labfiles\L15\Lock3.sql mediante la conexin 2 y revise su contenido. Observe que se ha definido una opcin de bloqueo de tabla en la clusula FROM de la instruccin SELECT. Observe adems que la secuencia de comandos no contiene una instruccin COMMIT TRAN o ROLLBACK TRAN. 5. Ejecute el archivo de comandos Lock3.sql en la conexin 2. 6. Cambie a la conexin 1 y ejecute el procedimiento almacenado de sistema sp_lock. Anote los tipos de bloqueo que se utilizan y los recursos que estn bloqueados. ____________________________________________________________ ____________________________________________________________ 7. Abra una tercera conexin en el Analizador de consultas SQL (conexin 3) y, en la lista BD, haga clic en ClassNorthwind. 8. Abra el archivo de comandos C:\Moc\2329A\Labfiles\L15\Lock1.sql mediante la conexin 3 y ejectelo. 9. Cambie a la conexin 1 y ejecute el procedimiento almacenado de sistema sp_lock. Hay una transaccin que no se puede ejecutar? Si es as, por qu? S, la segunda transaccin est intentando actualizar los datos que estn bloqueados por la primera transaccin, de modo que la segunda transaccin debe esperar a que termine la primera. Puede determinar si una transaccin no se puede ejecutar debido a un conflicto de bloqueo; para ello, utilice el procedimiento almacenado de sistema sp_lock y busque la palabra WAIT en la columna de estado. En este caso, la transaccin de la conexin 3 debe esperar a que termine la transaccin de la conexin 2. ____________________________________________________________ ____________________________________________________________ Cunto tiempo espera una transaccin un recurso bloqueado? Una transaccin espera indefinidamente un recurso bloqueado, siempre y cuando no haya interbloqueos. Se puede establecer el perodo de tiempo de espera de la sesin para controlar cunto tiempo esperar SQL Server a que se liberen los recursos bloqueados. ____________________________________________________________ ____________________________________________________________ 10. Cambie a la conexin 3 y, en la barra de herramientas, haga clic en Cancelar ejecucin de consulta. 11. Cambie a la conexin 1 y ejecute el procedimiento almacenado del sistema sp_lock para comprobar que la transaccin en espera se ha cancelado.

42

Mdulo 15: Administracin de transacciones y bloqueos

Para establecer el perodo de tiempo de espera de bloqueo de una transaccin En este procedimiento, va a establecer el perodo de tiempo de espera de bloqueo para que la transaccin espere la obtencin de un bloqueo durante una cantidad de tiempo especificada. 1. Cambie a la conexin 3, modifique el archivo de comandos C:\Moc\2329A\Labfiles\L15\Lock1.sql y agregue la siguiente instruccin inmediatamente antes de la instruccin BEGIN TRAN:
SET lock_timeout 500

2. Ejecute la secuencia de comandos modificada mediante la conexin 3. Qu ocurre y por qu? La transaccin de la conexin 3 estaba esperando los recursos bloqueados por la transaccin de la conexin 2. SQL Server cancel la transaccin de la conexin 3 porque termin el tiempo de espera de bloqueo que se especific. ____________________________________________________________ ____________________________________________________________ 3. Cierre todas las ventanas del Analizador de consultas SQL.

Mdulo 15: Administracin de transacciones y bloqueos

43

Repaso
Reforzar los objetivos del mdulo mediante el repaso de los puntos clave.

Objetivo del tema

Introduccin a las transacciones y los bloqueos Administracin de las transacciones Bloqueos en SQL Server Administracin de los bloqueos

Explicacin previa

Las preguntas de repaso abarcan algunos de los conceptos clave impartidos en el mdulo.

******EL USO POR QUIENES NO SEAN INSTRUCTORES NO EST AUTORIZADO Y RESULTA ILEGAL*****
Utilice estas preguntas para repasar los temas del mdulo. Pregunte a los alumnos si tienen alguna duda antes de continuar.

1. Est desarrollando un nuevo sistema de recepcin de pedidos para su compaa. Espera que el sistema sea muy activo porque 450 operadores toman pedidos a los clientes durante las 24 horas del da. Deben los operadores procesar todos los elementos de cada pedido telefnico en una sola transaccin? Probablemente lo mejor sera tratar cada producto pedido como una transaccin independiente.

2. Una vez al mes se le pide que haga una actualizacin de la tabla products del sistema de recepcin de pedidos. La tabla products contiene millones de elementos. Se espera que cada actualizacin mensual afecte al menos al 65 por ciento de las filas de la tabla. Puede escribir una sola y compleja instruccin UPDATE para hacer la actualizacin, que suele durar 30 minutos como mnimo. Es sta la mejor forma de efectuar la actualizacin? No. Si es posible, divida las instrucciones en grupos de transacciones menores para minimizar los conflictos de bloqueo con otros usuarios.

3. Recibe llamadas de los usuarios que indican que el tiempo de respuesta del sistema de recepcin de pedidos se incrementa peridicamente en ms de 20 segundos. Les ha prometido un tiempo de respuesta de tres segundos. Sospecha que puede haber conflictos de bloqueo en el sistema. Cmo determinara el origen del problema? Utilice el procedimiento almacenado de sistema sp_lock o la ventana de actividad actual del Administrador corporativo de SQL Server para identificar el problema. A continuacin, modifique las transacciones involucradas.

THIS PAGE INTENTIONALLY LEFT BLANK

You might also like