Se rellena la columna de la tabla sysprocesses bloqueada para esperas de pestillos después de instalar SQL Server 2000 SP4


Resumen


Después de instalar Microsoft SQL Server 2000 Service Pack 4 (SP4), puede observar que se llena la columna bloqueada en la tabla del sistema sysprocesses para esperas de pestillos además de esperas de bloqueo. A veces, puede que observe breves períodos de tiempo cuando se notifica un proceso de servidor único ID (SPID) como bloqueo de sí mismo. Este es el comportamiento esperado.

Más información


Pestillos se utilizan para sincronizar el acceso a las páginas de datos almacenados en caché y otros objetos en memoria. Normalmente, pestillos sólo se mantienen brevemente y tiempos de espera de pestillos son pequeños correspondientemente. SQL Server 2000 SP4 agrega diagnósticos para ayudar a solucionar los casos en que un SPID espera mucho tiempo un pestillo. Estos diagnósticos provocar la columna bloqueada en la tabla del sistema sysprocesses para reflejar el propietario de un pestillo que está bloqueando la solicitud de cierre de SPID otra. Antes de SQL Server 2000 SP4, la columna bloqueada se llenó sólo cuando una espera de bloqueo causado el bloqueo.



Este cambio en SQL Server 2000 SP4 no cambia las situaciones en las que se solicitó un pestillo. Además, este cambio no afecta a las situaciones en que un SPID está bloqueado por un pestillo. Este cambio sólo afecta al modo en que cierre esperas se muestran en la tabla del sistema sysprocesses .

Propiedad de cierre sólo se realizará un seguimiento pestillos en exclusiva (EX) o actualización (modo de pestillo UP). No se realiza el seguimiento de propiedad de pestillos que están en modo compartido de pestillo (SH). Esto significa que la columna bloqueada no se llenará para algunas peticiones de pestillo, incluso después de haber instalado SQL Server 2000 SP4.

La mayor parte del tiempo, puede omitir el valor de la columna bloqueado si se cumplen las condiciones siguientes:
  • El valor de la columna waittime es bajo.
  • Las columnas waittype del SPID es un waittype pestillos.
Para obtener más información acerca de los posibles valores de la columna de waittype, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:

822101 las columnas waittype y lastwaittype columnas de la tabla sysprocesses en SQL Server 2000

Cuando un SPID está esperando un bloqueo temporal de página de E/S, puede observar que la columna bloqueada informa brevemente que el SPID está bloqueando a sí mismo. Este comportamiento es un efecto secundario de la manera en que los pestillos se utilizan para las operaciones de E/S en las páginas de datos. Cuando un subproceso emite una solicitud de E/S, el SPID que emite la solicitud de E/S adquiere un pestillo en la página. Todas las operaciones de E/S de SQL Server 2000 son asincrónicas. Por lo tanto, el SPID intentará adquirir otro pestillo en la misma página si el SPID que emitió la solicitud de E/S debe esperar a que la solicitud finalice. Este segundo pestillo está bloqueado por el cierre de la primera. Por lo tanto, la columna bloqueada informa de que el SPID está bloqueando a sí mismo. Cuando finalice la solicitud de E/S, se libera el pestillo de la primera. A continuación, se concede la segunda solicitud de cierre.

Por ejemplo, pueden producirse las siguientes condiciones:
  1. SPID 55 quiere leer una página de datos que no existe en el grupo de búferes.
  2. SPID 55 adquiere un pestillo EX en la página. Dado que la página no existe todavía en la memoria, es el modo de pestillo solicitado ex. El modo de pestillo EX obliga a otros SPID que también puede tener acceso a la página a esperar finalizar la solicitud de E/S. El modo de pestillo EX también impide que otros SPID emitir una solicitud de E/S duplicada de la misma página.
  3. SPID 55 emite la solicitud de E/S para leer la página desde el disco.

  4. Porque SPID 55 quiere leer la página, SPID 55 debe esperar a la solicitud de E/S termine. Para esperar a que finalice la solicitud de E/S, 55 SPID intenta adquirir otro seguro que tiene el modo de pestillo (SH) compartido en la misma página. Porque ya se ha adquirido un pestillo EX, la solicitud de cierre SH se bloquea y se suspende el SPID. Dado que el pestillo EX que bloquea las solicitudes de pestillo SH también fue adquirido por 55 SPID, el SPID temporalmente se notifica como bloqueo de sí mismo.

  5. Cuando finalice la solicitud de E/S, se libera el pestillo EX en la página.
  6. La versión del pestillo EX proporciona el pestillo SH a 55 SPID.

  7. SPID 55 ahora puede leer la página.

Entre los pasos 4 y 5, la tabla sysprocesses indica que SPID 55 está bloqueado por sí mismo junto con un tipoDeEspera de PAGEIOLATCH_XX. En este waittype XX puede ser SH, hasta, o ex. Este comportamiento indica que SPID 55 emite una solicitud de E/S y 55 SPID está esperando finalizar la solicitud de E/S.