Compartir a través de


Hash Warning (clase de eventos)

La clase de eventos 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 recursividad (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 recursividad 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 las salidas de hash, también se utilizan los términos combinación hash aplazada y combinación hash de repetición.

Nota importanteImportante

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 también la clase de eventos Showplan en el seguimiento. Puede elegir cualquiera de las clases de eventos Showplan, excepto Showplan Text y Showplan Text (Unencoded), que no devuelven ningún identificador de nodo. Los identificadores de nodo en las clases de evento Showplans 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 identificador de nodo. La columna ObjectID para los eventos Hash Warning se corresponde con el identificador de nodo en las clases de evento Showplan para que pueda determinar qué operador u operación está provocando el error.

Columnas de datos de la clase de eventos Hash Warning

Nombre de columna de datos

Tipo de datos

Descripción

Identificador de columna

Filtrable

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

Identificador de la base de datos especificada mediante la instrucción USE database o la base de datos predeterminada si no se emite la instrucción USE database para una determinada instancia. SQL Server Profiler muestra el nombre de la base de datos si se captura la columna de datos ServerName en el seguimiento y el servidor está disponible. Determina el valor de una base de datos mediante la función DB_ID.

3

DatabaseName

nvarchar

Nombre de la base de datos en la 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 la subclase de eventos.

0=Repetición

1=Cese de hash

21

GroupID

int

Id. del grupo de carga de trabajo donde se activa el evento de Seguimiento de SQL.

66

HostName

nvarchar

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

8

IntegerData

int

Nivel de recursividad (solo recursividad hash).

25

IsSystem

int

Indica si el evento ha ocurrido en un proceso del sistema o en un proceso 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 <DOMAIN>\<username>).

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 vista de catálogo sys.server_principals. Cada SID es único para cada inicio de sesión en el servidor.

41

NTDomainName

nvarchar

Dominio de Windows al que pertenece el usuario.

7

NTUserName

nvarchar

Nombre del usuario de Windows.

6

ObjectID

int

Identificador del nodo de la raíz del equipo de hash implicado en la nueva creación de particiones. 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 cuyo seguimiento se realiza.

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 mostrará inicioDeSesión1 y LoginName mostrará inicioDeSesión2. En esta columna se muestran los inicios de sesión de SQL Server y de Windows.

64

SPID

int

Identificador de la sesión en la que se produjo 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

Token que describe la transacción actual.

50

Vea también

Referencia

sp_trace_setevent (Transact-SQL)