Monitoreando SQL Server 2008

Monitoreando SQL 2008

Objetivos




  • Recoger datos de rendimiento con el Monitor de sistema.
  • Recopilar información de rastreo mediante el Analizador de SQL Server.
  • Identificar los problemas de servicio de SQL Server.
  • Identificar los problemas de concurrencia.
  • Localice la información de error


Contenido



  • Lección 1: Trabajo con el Monitor de sistema
  • Lección 2: Trabajo con el Analizador de SQL Server
  • Lección 3: Diagnóstico de Fallas de bases de datos
  • Lección 4: Diagnóstico de fallas en el servicio
  • Lección 5: Diagnóstico de fallas de hardware
  • Lección 6: Resolución de problemas y Interbloqueos Bloqueo

Introduccion


Monitor del sistema, comúnmente conocido como Monitor de rendimiento, es una utilidad de Microsoft Windows que le permite capturar la información estadística sobre:

  • entorno de hardware
  • sistema operativo
  • todas las aplicaciones que exponen propiedades y contadores.
System Monitor Everviwe
  • Utiliza una arquitectura de sondeo para capturar y registrar datos numéricos expuestos por las aplicaciones.
  • Las aplicaciones son responsables de la actualización de los contadores.
  • Un administrador elige los contadores de captar para el análisis y el intervalo para recopilar datos.
ENCONTRAR MONITOR DEL SISTEMA
  • Por el momento Microsoft lanzó Windows XP y Windows Server 2003, que había sido llamado Monitor de rendimiento, Monitor de rendimiento, y Sistema.
  • Windows Vista y Windows Server 2008 le cambió el nombre una vez más, al igual que el Windows 7 próximo
  • Se llama oficialmente el Monitor de sistema de Microsoft, usted todavía está utilizando PerfMon.exe
  • La captura de un contador o contadores 100 no afecta al rendimiento del sistema.
  • Los contadores están organizados en una jerarquía de tres niveles.
  • Uno o más contadores están especificados dentro de un objeto, y cada objeto tiene que tener por lo menos un contador.
  • Un contador puede tener cero o más instancias
Por ejemplo:
Objeto SQLServer: Bases de datos, tiene contadores para:
transacciones activas
El tamaño del archivo de datos
transacciones / seg
el por ciento del espacio de registro de transacciones actualmente en uso.
  • Al definir contadores para capturar, puede especificar criterios en cualquier nivel dentro de la jerarquía de nivel de objeto
  • Monitor del sistema recoge los datos de cada contador en el objeto del contador
  • Monitor de sistema recoge datos para el contador (s) dentro del objeto
Captura de Registros
  • La primera vez que utiliza el Monitor de sistema, la mayoría de la gente comienza el programa, añadir objetos y contadores, y ver los resultados en la pantalla gráfica.
  • La visualización gráfica no le permite guardar la información en un archivo para su posterior análisis y sólo ofrece una instantánea sobre dos minutos de los contadores en un sistema.

  • Para la captura de datos para el análisis, es necesario configurar un registro de contador, que se ejecuta en segundo plano cuando nadie ha iniciado sesión en el equipo.
  • Dependiendo de su sistema operativo, puede configurar un registro de contador de una variedad de lugares.
Interface
  • En el Monitor de sistema, haciendo clic derecho en Registros de contador, seleccionando Nueva configuración de registro, y dando el registro de un nombre de contador
  • Al hacer clic en Agregar objetos permite especificar los objetos que se desea capturar.
  • Agregar contadores le permite especificar contadores individuales dentro de un objeto, así como los casos individuales dentro de un mostrador.
  • Puede definir el nombre y el formato del registro de contador.
  • Si no se define una cuenta específica es la causa más común de un registro de contador no pueda iniciarse.
  • Las causas más frecuente de un registro de contador no se inicie son caducidad de la contraseña, una cuenta fuera bloqueada, o una cuenta desactivada.
Rendimiento de Contadores
  • Tres contadores indican un problema en el sistema por su cuenta:
    1. Sistema: Longitud de la cola del procesador
    2. Interfaz de red: Longitud de cola de salida
    3. Disco físico: medio. Longitud de la cola de disco
  • Cuando el procesador, interfaz de red, o el disco se sobrecargue con la actividad, los procesos que esperar a que los recursos a ser liberado.
  • Cada hilo que tiene que esperar a un incrementos de recursos del contador Longitud de la cola correspondiente.

Profile SQL

Introduccion

Que es?
  • SQL Trace, que está expuesta a los administradores de capturar la información asociada a más de 200 eventos que pueden ocurrir dentro de una instancia.
  • SQL Server es la herramienta gráfica que ofrece la interfaz más común para el subsistema de seguimiento de SQL.
Usos
  • Supervisar una instancia de los errores o problemas de concurrencia.
  • Optimizar el rendimiento de las consultas que se ejecutan en el medio ambiente.
Definiendo una Traza
  • Puede iniciar el Analizador de SQL Server desde el SQL Server 2008 Performance Tools del menú.
  • Después Profiler se inicia, seleccione Archivo, Nueva traza y conéctese a una instancia para empezar a configurar una traza
  • Puede especificar varias propiedades generales de un rastro, como el nombre, plantilla, detener el tiempo, y si se guardan los datos de seguimiento
  • Cada traza se requiere para tener un nombre y por lo menos un evento.
  • Analizador de buques con varias plantillas que tienen eventos, columnas de datos y filtros ya definidos.
  • Ver página de plantillas 318.
  • De forma predeterminada, cuando se inicia una traza mediante el Analizador, todos los eventos aparecen en una cuadrícula dentro de la interfaz.
  • Usted, además, puede guardar los datos de la traza a una tabla, un archivo, o ambos.
Precaucion
  • Profiler puede capturar un gran número de eventos en un corto período de tiempo y cuando se carga en la rejilla dentro Profiler puede requerir el uso de una gran cantidad de memoria.
  • Aunque las redes pueden presentar información en un formato fácil de entender el formato, una red tiene mucho más arriba que un formato basado en texto
  • Si guarda una traza en un archivo, puede especificar:
    • un límite de tamaño máximo para el archivo de seguimiento para mantener el archivo de crecer fuera de control.
    • Además, puede activar un rollover archivo
  • Si habilita la sustitución incremental de archivos
    • después de que un archivo de seguimiento ha alcanzado el tamaño máximo
    •   se cierra el archivo
    • un archivo nuevo se abre.
  • Si se especifica un tamaño máximo sin sustitución incremental de archivos:
    • Profiler se detiene la captura de eventos después de que el tamaño máximo del archivo se ha alcanzado
Mejores Practicas
  • Ajustar el tamaño máximo de archivo de 50 megabytes (MB) proporciona un buen compromiso para gestionar el tamaño y número de archivos de rastreo.
  • Un archivo de 50 MB es lo suficientemente pequeño como para copiar o mover rápidamente a través de cualquier red
  • Cuando se especifica una tabla para guardar el resultado del seguimiento a:
    • Profiler crea una conexión y corrientes de todos los eventos capturados a la tabla de destino
  • Si configura un tamaño máximo para el número de filas:
    • Profiler se cierra la captura de eventos una vez que el tamaño máximo ha sido alcanzado

  • Nunca se debe iniciar eventos de seguimiento a la misma instancia para la que está capturando eventos.
  • La mejor solución es el registro para registrar sucesos de traza en un archivo y luego importar el archivo en el servidor para el análisis

  • El tiempo de parada de la traza le permite iniciar una traza que se extiende por un período de tiempo determinado.
  • Después de que el tiempo de parada se ha alcanzado, basado en el reloj del servidor, la traza se detiene automáticamente.
Especificando un evento de traza



  • Traza de SQL expone más de 200 eventos que se pueden capturar.
  • La acción más importante que usted define cuando se configura un trace es seleccionar el conjunto de eventos que usted necesita para controlar diversas situaciones que se producen en un entorno operativo.

  • Los eventos se clasifican en 21 grupos de eventos, algunos de los cuales contienen más de 40 eventos.
  • Ver página 320

  • Los grupos de eventos más comúnmente utilizados son:
    • Locks
    • rendimiento
    • Auditoría de seguridad
    • Procedimientos almacenados
    • TSQL

  • El procedimiento almacenado y TSQL
    • Actuación del grupo de referencia y solucionar problemas de rendimiento de las consultas

  • La Auditoría de Seguridad
    • Auditoría definir rápidamente a través de una variedad de eventos de seguridad
  • Locks
    • Solucionar los problemas de concurrencia

  • Los acontecimientos a tener mucho cuidado con son:
    • Rendimiento | Showplan *
    • Procedimientos almacenados | SP: StmtCompleted
    • Procedimientos almacenados | SP: StmtStarting
    • TSQL | StmtCompleted
    • TSQL | StmtStarting
  • *El plan de presentación Estadísticas Perfil, texto del plan de presentación y eventos Showplan XML devuelven cantidades variables de datos, dependiendo de la complejidad de una consulta (planes).

  • Los acontecimientos StmtCompleted y StmtStarting producir el mayor volumen de los acontecimientos en ningún rastro.
  • si necesita solucionar problemas de rendimiento de una declaración individual, puede utilizar los eventos StmtCompleted y StmtStarting
Seleccionando Datos de Columna
  • Una vez que haya determinado qué eventos desea capturar, entonces tienes que determinar qué columnas de datos para devolver
  • Aunque se puede seleccionar todas las columnas de datos de 64 posibles para volver a un evento de seguimiento, los datos de seguimiento es más útil si se captura sólo la información necesaria para sus propósitos.
  • No todas las columnas de datos son válidos para todos los eventos de seguimiento

  • Cuando usted está tratando de rendimiento de referencia, puede capturar los siguientes eventos:
    • RPC: Starting
    • RPC: Completed
    • SQL: BatchStarting
    • SQL: BatchCompleted

  • * Eventos partir capturar casi toda la misma información que la * Completado eventos.
  • Si recorre los acontecimientos * completadas, también puede capturar las estadísticas de rendimiento con la lee, escribe, CPU, y las columnas de Duración

  • columnas comunes
    • DatabaseName DatabaseID,
    • ApplicationName, NTUserName, LoginName
    • ClientProcessID, SPID HostName, LoginSID
    • NTDomainName, SessionLoginName
    • StartTime, EndTime
    • ObjectName, ServerName
Aplicando Filtros
  • Para hacer referencia a los datos de seguimiento, puede agregar uno o varios filtros a una traza.
  • Un filtro es esencialmente una cláusula WHERE que se aplica a los datos del evento devueltos por la API de seguimiento de SQL.
  • Los filtros están definidas en las columnas de datos y le permite especificar varios criterios que deben aplicarse

  • Las columnas de datos que contengan datos de carácter permitir filtros que se define en una cadena de texto usando LIKE o NOT LIKE que puede contener uno o más caracteres comodín.
  • Basadas en el tiempo las columnas de datos permiten especificar mayor o menor que.

  • Numérico basados ​​en columnas de datos permiten especificar es igual, no igual a, mayor que o igual que y menor que o igual
  • Columnas de datos binarios no se pueden filtrar.
  • Filtros múltiples para una columna de datos individual son tratados como condiciones OR
  • Filtros través de las columnas de datos múltiples se tratan como y condiciones.
Gestionando el seguimiento de la traza
Start
El seguimiento de SQL API devuelve los eventos que coinciden con la definición de traza, mientras que descartar cualquier evento que no coinciden trazar criterios de filtro
Stop
Todo termina la recopilación de eventos, y si la traza se inicia de nuevo posteriormente, todos los datos de seguimiento anteriores se borra de la pantalla de Profiler
Pause
Tras la reanudación de una traza, los acontecimientos posteriores se añaden a la parte inferior de la pantalla Profiler
  • SQL Server Profiler is an application that allows you to define graphically settings that are translated into stored procedure calls to create and manage traces.
  • View page 324

Correlación de los datos de rendimiento y monitorización

  • Usted puede ser capaz de diagnosticar un problema usando sólo el Monitor del sistema o de seguimiento SQL, utilizando los dos conjuntos de datos en conjunto proporciona un contexto para el análisis.
  • El reto es llevar a los dos conjuntos de datos en conjunto de una manera coherente que permite el análisis eficiente

  • Puede guardar una traza a una tabla, tal como se puede guardar un registro de contador en una tabla.
  • Después de que ambos conjuntos de datos se guardan en una tabla, puede ejecutar una gran variedad de consultas para correlacionar la información junta.

  • Profiler le permite ver un archivo de seguimiento con un registro de contador (ver los dos conjuntos de datos en la misma pantalla).
  • Profiler también mantiene sincronizados los dos juntos (sólo si se ha capturado la columna de datos StartTime en la traza).
  • Un indicador muestra los valores del contador en el momento en que la consulta se ha ejecutado.

Diagnosticando Fallas en la base de Datos

De error y mensajes informativos relacionados con el servidor que ejecuta SQL Server se puede encontrar en:
  • Registros de eventos de Windows
  • SQL Server logs de error
  • Agente SQL Server registra
  • Base de datos de registro electrónico
El SQL Server registro de errores es un archivo de texto en el disco esto se llama registro de errores y se encuentra en la MSSQL10. <instancia> \ MSSQL \ LOG directorio
También puede recuperar el contenido del sistema de ejecución extendido sys.xp_readerrorlog procedimiento almacenado.
Contiene información de inicio, tales como:
  • La versión (incluidos los Service Pack) de SQL Server y Windows
  • Proceso de Windows ID
  • autenticación de modo
  • Número de procesadores
  • confi guración parámetros de instancia
  • mensajes para cada base de datos (abierto, se recuperó y comenzó con éxito)
  • rastros de arranque y parada o base de datos de copia de seguridad / restaurar
El propósito principal del registro de error es para registrar los mensajes de error tales como:
  • corrupción de bases de datos
  • la insuficiencia de recursos
  • fallos de hardware
También contiene los mensajes creados con un comando RAISERROR que especifica el parámetro LOG WITH.
Usted se encuentra en el archivo de registro del Agente SQL Server con nombre SQLAgent.out.
El registro electrónico de base de datos está contenida en la tabla dbo.sysmail_log en la base de datos msdb
Usted puede utilizar el Visor de sucesos de Windows para ver los registros de sucesos
Bloc de notas para ver los registros de SQL Server y el Agente SQL Server
T-SQL para los registros de la base de datos de correo
Problemas en Bases de Datos
Los errores más comunes que se encuentran mucho con la falta de espacio para los archivos de cualquiera de los datos o de registro
Si un registro de transacciones se llena, puede realizar las siguientes acciones (todas la actividad de escritura de las paradas de la base de datos, error 9002):
  • Realice una copia de seguridad del registro de transacciones.
  • Añadir espacio en disco para el volumen que el archivo de registro de transacciones está encendido.
  • Mueva el registro en un volumen con más espacio.
  • Aumentar el tamaño del archivo de registro de transacciones.
  • Agregue otro archivo de registro en un volumen de disco que tenga espacio.
Log de Transacciones
La primera acción que se debe realizar es ejecutar una copia de seguridad de registro de transacciones.
Una copia de seguridad del registro de transacciones no puede liberar suficiente espacio en el registro para ser reutilizado si alguna de las siguientes situaciones:
  • La base de datos está participando en la replicación y la base de datos de distribución no está disponible.
  • Usted tiene una transacción abierta.

  • Database Mirroring está en pausa.
  • La base de datos espejo está detrás de la principal.
  • Un examen del registro está en funcionamiento.
  • SQL Server no puede aumentar el tamaño de un archivo con la suficiente rapidez.
La forma más común de aumentar el espacio disponible en el disco es:
  •   para agregar un segundo archivo de registro a la base de datos en un volumen de disco que tenga espacio libre.
Bases de datos
Si una base de datos se queda sin espacio en disco, un error 1101 o 1105 se eleva.
  • no se puede insertar ningún dato nuevo
Se puede aumentar el espacio disponible para una base de datos mediante la adición de un archivo al grupo de archivos apropiado en un volumen de disco que tiene más espacio disponible.
Usted puede tener la tentación de añadir un nuevo grupo de archivos con los archivos en un volumen de disco con el espacio, pero esto no resuelve el problema de espacio
Antes de añadir archivos a grupos de archivos, primero debe verificar si los archivos de datos tienen la característica de crecimiento automático desactivado.
Si el crecimiento automático está desactivada y el volumen de disco todavía tiene espacio, puede aumentar el espacio disponible sólo mediante el aumento del tamaño de los archivos existentes.
TempDB
La falta de espacio en tempdb causa problemas serios para una variedad de procesos.
Además de las tablas temporales locales y globales que cualquier usuario puede crear, almacenar tempdb se utiliza para lo siguiente:
  • Tablas de trabajo para GROUP BY, ORDER BY y consultas UNION
  • Tablas de trabajo para los cursores y las operaciones de cola

  • Tablas de trabajo para la creación / reconstrucción de índices que especifican la opción SORT_IN_TEMPDB
  • Archivos de trabajo para las operaciones de hash
Almacenamiento de tempdb se utiliza también para el almacén de versiones. El almacén de versiones se utiliza para almacenar versión de fila para lo siguiente:
  • Creación de índices en línea
  • Índice Online reconstruir
  • Las transacciones que se ejecutan en el nivel de aislamiento de instantánea
  • Las operaciones se ejecutan en contra de una base de datos con la propiedad de instantánea de lectura confirmada habilitado
  • Varios conjuntos de resultados activos (MARS)
Si tempdb se queda sin espacio, puede afectar a cada base de datos en una instancia.
En los casos graves, todas tus aplicaciones que se ejecutan en una instancia podría dejar de funcionar.
Además de los 1101, 1105, y 9002 errores, tempdb elevará 3958, 3959, 3966, 3967 y los errores cuando se producen problemas de espacio para el almacén de versiones se encuentran.

Diagnosticando Fallas de Servicio

Se pueden utilizar dos utilidades para ver el estado y la configuración de los servicios de SQL Server:
  • La consola de servicios de Windows
  • SQL Server Configuration Manager.
El propósito del Administrador de configuración de SQL Server es configurar y gestionar:
  • los servicios de SQL Server
  • configuración de la red
  • Native Client.
Administrador de Configuraciones


Si el servicio está en un estado detenido, el servidor de SQL se cierra debido a cualquiera de los siguientes:

  • El servicio está configurado en el modo de inicio manual o con discapacidad y la máquina se reinicia.
  • El servicio fue cerrado por alguien.
  • SQL Server detectó un error crítico y cerrar el servicio.
El primer lugar usted debe buscar cuando el servicio de SQL Server está en un estado de detención puede ser:
  • el registro de errores de SQL Server o el registro de sucesos de aplicación de Windows.
Si la máquina se reinicia:
  • "SQL Server está finalizando a causa de un apagado del sistema."
Si alguien cerrar el servicio
  • "SQL Server está finalizando en respuesta a un 'stop' solicitud del Administrador de control de servicios."

Si los servicios se establece en Manual o Desactivado.

  • usted debe saber quién hizo el cambio
Cuentas de Servicio
Para iniciar SQL Server, SQL Server cuenta de servicio tiene que tener permisos varios, entre ellos los siguientes:
  • Lectura y escritura para la carpeta (s) donde los datos / archivos de registro de bases de datos del sistema se almacenan
  • Leer y escribir permisos en las claves del Registro de SQL Server
  • Inicie sesión como un servicio de autoridad
  • Sysadmin autoridad dentro de la instancia de SQL Server
Si el servicio de SQL Server se inicia y se apaga inmediatamente. El primer paso debe ser verificar si alguna de las siguientes condiciones para la cuenta de servicio:
  • cuenta eliminada
  • Cuenta bloqueada
  • cuenta deshabilitada
  • Contraseña expirado
Si la cuenta de servicio se ha eliminado, entonces usted necesita para que su administrador del sistema vuelve a crear la cuenta y luego restablecer la cuenta de inicio en la ficha Iniciar sesión del cuadro de diálogo SQL Server Propiedades del servicio, que se muestra en la Figura


Que pasa cuando SQL Inicia


La base de datos principal se trajo por primera vez en línea.
Después de que la base de datos principal se pone en línea la base de datos tempdb se vuelve a crear.
Si SQL Server no puede volver a crear la base de datos tempdb, el servicio se apaga.

Error en TempDB


Las causas más comunes de SQL Server no ser capaz de volver a crear la base de datos tempdb son los siguientes:

  • El SQL Server cuenta de servicio no tiene los permisos necesarios.
  • La carpeta no existe 
    • crear la carpeta
    • iniciar el SQL Server en modo de usuario único utilizando la opción-m parámetro de inicio, cambiar la ubicación de tempdb
  • La carpeta no está disponible.
    • Ver el registro de eventos de aplicación de Windows:
    • de inicio del servicio
    • Activación del dispositivo o el archivo no se encuentra el error
    • Servicio de apagado
Parametros de Inicio




Si se produce un error de activación del dispositivo relacionado con la base de datos principal, la secuencia de eventos que se ven en el registro de sucesos de aplicación de Windows es la siguiente:

  • de inicio del servicio
  • Activación de dispositivos o le fi no se encuentra el error
  • Servicio de apagado
Las causas más comunes de un error de activación del dispositivo durante el inicio de SQL Server son los siguientes:
  • La cuenta de servicio no tiene permisos suficientes.
  • El sistema de almacenamiento está fuera de línea.
  • Los parámetros de inicio se cambiaron incorrectamente.
Si usted no ve ningún problema con los permisos, archivos y carpetas, entonces usted debe comprobar las opciones de inicio del servicio, como se muestra en la Figura
La primera cosa que usted siempre debe buscar es un espacio que no le pertenece.
Una base de datos master dañada que puede ser reparado por ejecutar la instalación de SQL Server.
SQL Server tiene cuatro bases de datos del sistema en todos los casos: master, model, msdb y tempdb.
Ejemplo
Con la experiencia de alguien sin experiencia es que la persona tiene experiencia lograron sobrevivir a las cosas que han ido mal. Nunca voy a admitir muchas de las cosas que me las he arreglado para sobrevivir durante décadas. Al seguir muchas de las mejores prácticas, barras laterales, notas y precauciones que se fi nd en este libro, espero que usted puede evitar muchos de los errores que yo y muchos otros han hecho en los últimos años. Si tiene confi gurado replicación, también verá una base de datos llamada distribución. SQL Server tiene una base de datos del sistema sexto, primero introdujo en SQL Server 2005, el nombre mssqlsystemresource. La base de datos contiene más de mssqlsystemresource el procedimiento almacenado, función, DMV, y otro tipo de código que se incluye con SQL Server. La base de datos es crítica para mssqlsystemresource SQL Server e impide las operaciones de un servidor que ejecuta SQL Server se inicie. Desafortunadamente, esta base de datos está escondido. Por lo tanto, es necesario buscar los errores de activación de dispositivos relacionados con la mssqlsystemresource base de datos, así como la base de datos maestra y tempdb.
SystemDB


SQL Server tiene cuatro bases de datos del sistema en todos los casos: master, model, msdb y tempdb.
Si ha configurado la replicación, también verá una base de datos llamada distribución.
SQL Server tiene una base de datos del sistema sexto, por primera vez en SQL Server 2005, mssqlsystemresource nombre.
Esta base de datos está oculto.

Diagnosticando Fallas en Hardware

Disco


La primera indicación de que tiene un fallo en el sistema de disco son los errores registrados en el registro de sucesos del sistema de Windows o en el sistema de registro para la red de área de almacenamiento (SAN) o almacenamiento conectado a red (NAS) de matriz.
Cuando un volumen de disco que las bases de datos se almacenan en pondrá fuera de línea, SQL Server inicia el registro los errores de dispositivo de activación, registro de error de SQL Server, así como el registro de aplicación de Windows Event
Puede utilizar la carpeta Administración de discos en la consola de Administración de equipos para determinar el estado de los volúmenes de disco, como se muestra en la Figura

Memoria y Procesador


Cuando SQL Server encuentra un error grave, un volcado de pila se genera.
Si el error es recuperable, SQL Server sigue funcionando.
Si el error es lo suficientemente grave, la instancia se apaga.
Si se encuentra con problemas de memoria o proceso, aparecen errores STOP.
Si se produce un error de memoria encontradas cuando la computadora se inicia, verá un error POST.
Ambos llegan y POST son acompañados por una pantalla azul con información de diagnóstico adicional

Resolviendo Problemas de Bloqueo e Interbloqueo

Introduccion
Debido a que es necesario tener los datos en una base de datos que es accesible y puede ser manipulado por varios usuarios, un mecanismo debe estar en su lugar para controlar el acceso concurrente para mantener la consistencia de los datos.

Locks

SQL Server utiliza un mecanismo de bloqueo para mantener la consistencia de los datos para el acceso multiusuario.
Un proceso interno llamado Lock Manager determina el bloqueo apropiado para adquirir

SQL Server tiene siete modos de bloqueo diferentes y tres tipos de cierre diferentes. En la mayoría de las situaciones, tiene que tratar sólo con los siguientes modos de bloqueo de tres:

  • compartido
    • Para las operaciones de lectura para evitar que los datos sean leídos de cambiar durante la lectura
    • Múltiples bloqueos compartidos en el mismo recurso al mismo tiempo
  • exclusivo
    • En un recurso que está siendo modificado y se mantiene hasta que se haya completado la modificación
    • Para acceder al recurso debe esperar hasta que el bloqueo exclusivo ha sido puesto en libertad
  • actualizar
    • Es un híbrido de un compartido y un bloqueo exclusivo
    • Bloqueo en el recurso compartido, hasta que encuentra la pieza de datos que necesita ser modificada.
    • Bloqueo exclusivo mientras los datos están siendo cambiado
Los tres tipos de bloqueo que se pueden adquirir son:
  • fila
  • página
  • mesa
Las cerraduras pueden ser el ámbito de una:
  • sesión
  • transacción
  • Cursor.
Cada modo de bloqueo se puede adquirir en una fila, una página o de tabla.
El Administrador de bloqueo determina el tipo de bloqueo para adquirir basado en un umbral de recursos muy agresivo, comúnmente conocida como la regla del dos por ciento, que está diseñado para reducir al mínimo el número de bloqueos que necesitan ser adquirido y administrado, ya que cada bloqueo adquirido también consume memoria .


El Administrador de bloqueo tiene un mecanismo denominado extensión de bloqueo que permite un bloqueo para ser promovido a otro tipo.
SQL Server puede escalar un bloqueo de fila a un bloqueo de tabla, o un bloqueo de página a un bloqueo de tabla.

Niveles de Aislamiento

SQL Server tiene cinco niveles de aislamiento.

Nivel de aislamientoLectura de datos sucioslectura no repetibleFantasma
Lectura no confirmada
Lectura confirmada
No
Lectura repetible
No
No
Instantánea
No
No
No
Serializable
No
No
No


Los niveles de aislamiento afectan a la forma en que SQL Server administra las operaciones, así como la duración de los bloqueos adquiridos.
Uncommitted. Los datos se pueden leer que aun no se ha comprometido. A pesar de que un bloqueo exclusivo sigue bloqueando el otro bloqueo exclusivo, las operaciones de lectura ignorar un bloqueo exclusivo.
Commitned. Este es el nivel de aislamiento predeterminado de SQL Server. Un bloqueo exclusivo bloquea un compartido, así como los bloqueos exclusivos. Un bloqueo compartido en un bloqueo exclusivo. Los bloqueos compartidos se liberan tan pronto como los datos se ha leído.

Repeatable read. Los bloqueos exclusivos bloqueen los bloqueos compartidos como exclusivos. Bloqueos compartidos bloque bloqueos exclusivos. Los bloqueos compartidos se mantienen durante la duración de la operación.
Read serializable. Todas las restricciones son como el nivel de aislamiento REPEATABLE READ. Además, usted no puede insertar una nueva fila dentro de la gama de conjunto de claves actualmente bloqueado por la transacción. Los bloqueos se mantienen durante la duración de la operación.
Snapshot. Utiliza la función de versiones de filas para mantener los bloqueos compartidos y exclusivos entre sí, manteniendo la consistencia de datos. Una operación de lectura recupera los datos de la versión de la fila antes del inicio de una operación de modificación de datos.

Proceso de Bloqueo


El gestor de bloqueos se basa en una en primera entrada, primera salida (FIFO) algoritmo.
El bloqueo es el término que se utiliza cuando se produce una situación que produce cerraduras compiten por el mismo recurso.
Aunque el bloqueo es un hecho normal dentro de cualquier base de datos que permite la manipulación de datos por múltiples usuarios.


Usted tiene un problema si el bloqueo es severo o si dura mucho tiempo.
Si el bloqueo se produce por un largo tiempo o bloqueo continuo se produce a través de procesos, el rendimiento de una aplicación sufre.

Usted puede determinar si un proceso se bloquea mediante la vista sys.dm_exec_requests.
Un proceso que está bloqueado mostrará un número distinto de cero en la columna blocking_session_id.

La función fija de servidor sysadmin pueden terminar el proceso (SPID es el ID de proceso del sistema de la sesión de bloqueo)

  • MATAR <spid>
Cuando un proceso es asesinado:
  • Cualquier transacción abierta se revierte.
  • Se devuelve un mensaje al cliente.
  • Una entrada se coloca en el registro de errores de SQL Server.
  • Una entrada se coloca en el registro de sucesos de aplicación de Windows.
Interbloqueos
Cuando dos procesos se bloquean entre sí de tal manera que ningún proceso se puede resolver, se ha creado un punto muerto.
Un interbloqueo requiere al menos dos procesos, y cada proceso se debe realizar una acción que modifica los datos.
Puede tener varios bloqueos compartidos adquiridos en un solo recurso al mismo tiempo
  • no es posible producir un interbloqueo con un proceso que sólo recupera los datos
Ejemplo
SPID1 adquiere un bloqueo exclusivo en Rowa.
SPID2 adquiere un bloqueo exclusivo en RowC.
SPID1 intenta adquirir un bloqueo compartido sobre RowC y es bloqueada por el bloqueo exclusivo.
SPID2 intenta adquirir un bloqueo compartido sobre Rowa y también es bloqueado por el bloqueo exclusivo.
El administrador de bloqueos detecta el punto muerto y elige uno de los procesos que se mataron de forma automática.
El proceso que se elige como el sujeto de interbloqueo es la que tiene la menor cantidad de tiempo acumulado dentro de SQL Server
No se puede cambiar el sujeto de interbloqueo algoritmo de selección
Cuando se detecta un interbloqueo, un mensaje de error 1205 se devuelve al cliente y el punto muerto se graba en el registro de error SQL Server.
Puede utilizar Profiler para capturar una traza punto muerto, lo que le permite inspeccionar la causa del estancamiento gráficamente.

No hay comentarios:

Publicar un comentario