Share via


Hash Warning (clase de evento)

Actualizado: 5 de diciembre de 2005

La clase de evento Hash Warning se puede utilizar para supervisar cuándo se ha producido una recursividad hash o un cese de hash (salida hash) durante una operación de hash.

La recursividad hash se produce cuando no hay suficiente memoria para la entrada generada, lo que causa que ésta se divida en varias particiones que se procesan por separado. Si alguna de estas particiones sigue sin caber en la memoria disponible, se vuelve a dividir en subparticiones, que también se procesan por separado. El proceso de división continúa hasta que cada partición quepa en la memoria disponible o hasta que se alcance el nivel máximo de repetición (que se muestra en la columna de datos IntegerData).

La salida hash se produce cuando una operación de hash alcanza el nivel máximo de repetición y vuelve a un plan alternativo para procesar el resto de datos con particiones. La salida hash normalmente se produce debido a la existencia de datos sesgados.

La repetición hash y el cese de hash reducen el rendimiento del servidor. Para eliminar o reducir la frecuencia de la repetición hash y del cese de hash, realice uno de los siguientes procedimientos:

  • Asegúrese de que existen estadísticas en las columnas que se están combinando o agrupando.
  • Si hay estadísticas en las columnas, actualícelas.
  • Utilice un tipo de combinación diferente. Por ejemplo, utilice en su lugar una combinación MERGE o LOOP, si resulta apropiado.
  • Aumente la memoria disponible en el equipo. La repetición hash o el cese de hash se produce cuando no hay suficiente memoria para procesar las consultas realizadas y es necesario volcarlas en el disco.

Crear o actualizar las estadísticas de la columna afectada en la combinación es el modo más eficaz de reducir el número de repeticiones hash o de ceses de hash que se producen.

[!NOTA] Para describir los ceses de hash, también se utilizan los términos combinación hash aplazada y combinación hash de repetición. Para obtener más información, vea Descripción de las combinaciones hash.

ms190736.note(es-es,SQL.90).gifImportante:
Para determinar dónde se está produciendo el evento Hash Warning cuando el optimizador de consultas genera un plan de ejecución, debería recopilar la clase de evento Showplan en la traza. Puede elegir cualquiera de las clases de evento Showplan, excepto Showplan Text y Showplan Text (Unencoded), que no devuelven ningún Id. de nodo. Los Id. de nodo en las clases de evento Showplan identifican cada operación que realiza el optimizador de consultas cuando genera un plan de ejecución de consultas. Estas operaciones se denominan operadores y cada operador de un Showplan tiene un Id. de nodo. La columna ObjectID para los eventos Hash Warning se corresponde con el Id. de nodo en las clases de evento Showplan para que pueda determinar qué operador u operación está provocando el error. Para obtener más información acerca de las clases de eventos Showplan, vea Mostrar planes de ejecución mediante las clases de eventos del Analizador de SQL Server.

Columnas de datos de la clase de eventos de advertencia de hash

Nombre de la columna de datos Tipo de datos Descripción Column ID Se puede filtrar

ApplicationName

nvarchar

Nombre de la aplicación cliente que ha creado la conexión a una instancia de SQL Server. Esta columna se llena con los valores que pasa la aplicación, en lugar de con el nombre que se muestra del programa.

10

ClientProcessID

int

Identificador que el equipo host asigna al proceso en el que se ejecuta la aplicación cliente. Esta columna de datos se llena si el cliente proporciona el Id. del proceso del cliente.

9

DatabaseID

int

Id. de la base de datos especificada por la instrucción USE database o la base de datos predeterminada si no se emitió ninguna instrucción USE database para una instancia determinada. El Analizador de SQL Server muestra el nombre de la base de datos si se captura la columna de datos ServerName en la traza y el servidor está disponible. El valor para una base de datos se puede determinar mediante la función DB_ID.

3

DatabaseName

nvarchar

Nombre de la base de datos en que se ejecuta la instrucción del usuario.

35

EventClass

int

Tipo de evento = 55.

27

No

EventSequence

int

Secuencia de un evento determinado de la solicitud.

51

No

EventSubClass

int

Tipo de subclase de suceso.

0=Repetición

1=Cese de hash

21

HostName

nvarchar

Nombre del equipo en el que se está ejecutando el cliente. Esta columna de datos se llena si el cliente proporciona el nombre del host. Para determinar el nombre de host, utilice la función HOST_NAME.

8

IntegerData

int

Nivel de recursividad (sólo recursividad hash).

25

IsSystem

int

Indica si el evento se ha producido en un proceso del sistema o de usuario. 1 = sistema, 0 = usuario.

60

LoginName

nvarchar

Nombre del inicio de sesión del usuario (inicio de sesión de seguridad de SQL Server o credenciales de inicio de sesión de Windows con el formato <DOMINIO>\<nombreDeUsuario>).

11

LoginSid

image

SID (número de identificación de seguridad) del usuario que ha iniciado la sesión. Puede encontrar esta información en la tabla syslogins de la base de datos master. Cada SID es exclusivo para cada inicio de sesión en el servidor.

41

NTDomainName

nvarchar

Dominio de Windows al que pertenece el usuario.

7

NTUserName

nvarchar

Nombre de usuario de Windows.

6

ObjectID

int

Id. del nodo de la raíz del equipo de hash implicado en el reparto. Se corresponde con el Id. de nodo en los eventos Showplan.

22

RequestID

int

Id. de la solicitud que contiene la instrucción.

49

ServerName

nvarchar

Nombre de la instancia de SQL Server que se va a trazar.

26

SessionLoginName

nvarchar

Nombre de inicio de sesión del usuario que originó la sesión. Por ejemplo, si se conecta a SQL Server mediante inicioDeSesión1 y ejecuta una instrucción como inicioDeSesión2, SessionLoginName muestra inicioDeSesión1 y LoginName muestra inicioDeSesión2. Esta columna muestra tanto el inicio de sesión de SQL Server como el de Windows.

64

SPID

int

Identificador de la sesión en la que se ha producido el evento.

12

StartTime

datetime

Hora a la que se inició el evento, si está disponible.

14

TransactionID

bigint

Id. de la transacción asignado por el sistema.

4

XactSequence

bigint

Testigo que describe la transacción actual.

50

Vea también

Conceptos

Descripción de las combinaciones hash

Otros recursos

Supervisar eventos
sp_trace_setevent (Transact-SQL)

Ayuda e información

Obtener ayuda sobre SQL Server 2005

Historial de cambios

Versión Historial

5 de diciembre de 2005

Contenido nuevo:
  • Se agregó una nota en la que se recomienda recopilar también las clases de eventos Showplan para determinar qué operadores de optimización de consultas emiten el evento Hash Warning.