Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op:SQL Server
Azure SQL Database
Azure SQL Managed Instance
SQL-database in Microsoft Fabric
De Hash Warning gebeurtenisklasse kan worden gebruikt om te monitoren wanneer een hashrecursie of het stoppen van hashing (hash bailout) heeft plaatsgevonden tijdens een hashbewerking.
Hash-recursie treedt op wanneer de build-invoer niet in het beschikbare geheugen past, wat resulteert in de splitsing van input in meerdere partities die afzonderlijk worden verwerkt. Als een van deze partities nog steeds niet in het beschikbare geheugen past, wordt deze opgesplitst in subpartities, die ook afzonderlijk worden verwerkt. Dit splitsingsproces gaat door totdat elke partitie in het beschikbare geheugen past of totdat het maximale recursieniveau is bereikt (weergegeven in de kolom IntegerData-gegevens).
Hash-borging treedt op wanneer een hash-bewerking het maximale recursieniveau bereikt en naar een alternatief plan wordt verplaatst om de resterende gepartitioneerde gegevens te verwerken. Hash-bailout vindt meestal plaats door scheve data.
Hash-recursie en hash-bailout zorgen voor verminderde prestaties in je server. Om de frequentie van hashrecursie en bailouts te elimineren of te verminderen, doe een van de volgende dingen:
Zorg ervoor dat er statistieken bestaan over de kolommen die worden gekoppeld of gegroepeerd.
Als er statistieken op de kolommen bestaan, werk ze dan bij.
Gebruik een ander type join. Gebruik bijvoorbeeld een MERGE of LOOP join, indien van toepassing.
Verhoog het beschikbare geheugen op de computer. Hash-recursie of bailout treedt op wanneer er niet genoeg geheugen is om queries te verwerken en ze naar de schijf moeten overspoelen.
Het aanmaken of bijwerken van de statistieken op de kolom die betrokken is bij de join is de meest effectieve manier om het aantal hash-recursie of bailouts dat plaatsvindt te verminderen.
Opmerking
De termen grace hash join en recursieve hash join worden ook gebruikt om hash bailout te beschrijven.
Belangrijk
Om te bepalen waar het Hash Warning-event plaatsvindt wanneer de query-optimizer een uitvoeringsplan genereert, moet je ook een Showplan-gebeurtenisklasse in de trace verzamelen. Je kunt kiezen voor elk van de Showplan-eventklassen, behalve de Showplan Text- en Showplan Text (Unencoded) eventklassen, die geen Node-ID teruggeven. Node-ID's in Showplans identificeren elke bewerking die de queryoptimizer uitvoert wanneer hij een query-uitvoeringsplan genereert. Deze bewerkingen worden operatoren genoemd, en elke operator in een Showplan heeft een Node-ID. De ObjectID-kolom voor Hash Warning-gebeurtenissen komt overeen met de Node-ID in Showplans, zodat je kunt bepalen welke operator of bewerking de fout veroorzaakt.
Hashwaarschuwingsgebeurtenis Klasse Datakolommen
| Naam van gegevenskolom | Gegevenstype | Description | Kolom-id | Filterbaar |
|---|---|---|---|---|
| ApplicationName | nvarchar | Naam van de clienttoepassing die de verbinding met een exemplaar van SQL Server heeft gemaakt. Deze kolom wordt gevuld met de waarden die door de applicatie zijn doorgegeven, in plaats van met de weergegeven naam van het programma. | 10 | Yes |
| ClientProcessID | int | De id die door de hostcomputer is toegewezen aan het proces waarop de clienttoepassing wordt uitgevoerd. Deze datakolom wordt ingevuld als de client een clientproces-ID oplevert. | 9 | Yes |
| DatabaseID | int | ID van de database die door de USE-database-instructie wordt gespecificeerd, of de standaarddatabase, als er voor een bepaalde instantie geen USE-database-instructie is uitgegeven. SQL Server Profiler geeft de naam van de database weer als de kolom ServerName-gegevens wordt vastgelegd in de tracering en de server beschikbaar is. Bepaal de waarde voor een database met behulp van de functie DB_ID. | 3 | Yes |
| DatabaseName | nvarchar | Naam van de database waarin de gebruikersinstructie wordt uitgevoerd. | 35 | Yes |
| EventClass | int | Type evenement = 55. | 27 | Nee. |
| GebeurtenisVolgorde | int | Volgorde van een bepaalde gebeurtenis binnen de aanvraag. | 51 | Nee. |
| EventSubClass | int | Type gebeurtenis-subklasse. 0=Recursie 1=Redding |
21 | Yes |
| GroupID | int | Id van de workloadgroep waarin de SQL Trace-gebeurtenis wordt geactiveerd. | 66 | Yes |
| Hostnaam | nvarchar | Naam van de computer waarop de client wordt uitgevoerd. Deze datakolom wordt ingevuld als de client de hostnaam opgeeft. Om de hostnaam te bepalen, gebruik je de functie HOST_NAME. | 8 | Yes |
| IntegerData | int | Recursieniveau (alleen hash-recursie). | vijfentwintig | Yes |
| IsSysteem | int | Geeft aan of de gebeurtenis heeft plaatsgevonden in een systeemproces of een gebruikersproces. 1 = systeem, 0 = gebruiker. | 60 | Yes |
| Gebruikersnaam | nvarchar | Naam van de inloggegevens van de gebruiker (ofwel SQL Server beveiligingslogin of de Windows-inloggegevens in de vorm van< DOMAIN\><gebruikersnaam>). | 11 | Yes |
| LoginSid | image | Beveiligingsidentificatienummer (SID) van de aangemelde gebruiker. Je kunt deze informatie vinden in de catalogusweergave van sys.server_principals. Elke SID is uniek voor elke aanmelding op de server. | 41 | Yes |
| NTDomainName | nvarchar | Windows-domein waartoe de gebruiker behoort. | 7 | Yes |
| NTUserName | nvarchar | Windows-gebruikersnaam. | 6 | Yes |
| ObjectID | int | Node-ID van de wortel van het hashteam dat betrokken is bij de herpartition. Komt overeen met de Node-ID in Showplans. | 22 | Yes |
| RequestID | int | ID van het verzoek dat de verklaring bevat. | 49 | Yes |
| Servernaam | nvarchar | De naam van de instantie van SQL Server die wordt getraceerd. | 26 | |
| SessionLoginName | nvarchar | Aanmeldingsnaam van de gebruiker die de sessie heeft gestart. Als je bijvoorbeeld verbinding maakt met SQL Server via Login1 en een instructie uitvoert als Login2, toont SessionLoginName Login1 en LoginName Login2. In deze kolom worden zowel SQL Server- als Windows-aanmeldingen weergegeven. | 64 | Yes |
| SPID | int | Id van de sessie waarop de gebeurtenis heeft plaatsgevonden. | 12 | Yes |
| StartTime | datetime | Tijdstip waarop de gebeurtenis is gestart, indien beschikbaar. | 14 | Yes |
| TransactionID | bigint | Door het systeem toegewezen id van de transactie. | 4 | Yes |
| XactSequence | bigint | Token dat de huidige transactie beschrijft. | 50 | Yes |