Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik:SQL Server
Azure SQL Database
Felügyelt Azure SQL-példány
SQL-adatbázis a Microsoft Fabricben
A Hash Warning eseményosztály használható annak megfigyelésére, hogy mikor történt hash rekurziója vagy a hashing megszűnése (hash mentő) egy hash-művelet során.
A hash rekurzió akkor fordul elő, amikor a build input nem fér be a rendelkezésre álló memóriába, ami a bemenet több különálló partícióra való fellépéséhez vezet. Ha ezek közül bármelyik partíció még mindig nem fér be a rendelkezésre álló memóriába, az részrészekre oszlik, amelyeket szintén külön feldolgoznak. Ez a felosztási folyamat addig folytatódik, amíg minden partíció be nem fér a rendelkezésre álló memóriába, vagy amíg el nem éri a maximális rekurziós szintet (ami az IntegerData adatoszlopban látható).
A kivonatos mentés akkor fordul elő, ha egy kivonatolási művelet eléri a maximális rekurziós szintet, és egy másik tervre vált a fennmaradó particionált adatok feldolgozásához. A hash mentőcsomag általában torz adatok miatt történik.
A hash rekurszió és a hash mentés csökkenti a szervered teljesítményét. A hash rekurziójának és mentések gyakoriságának megszüntetése vagy csökkentése érdekében a következők egyikét végezzük:
Győződj meg róla, hogy a csatlakozó vagy csoportosított oszlopok statisztikái vannak.
Ha vannak statisztikák az oszlopokon, frissítsd őket.
Használj egy másik típusú csatlakozót. Például, ha megfelelő, használj helyette MERGE vagy LOOP csatlakozást.
Növeld a számítógépen rendelkezésre álló memóriát. A hash rekurzió vagy mentés akkor történik, amikor nincs elég memória a lekérdezések feldolgozásához, és azok át kell jutni a lemezre.
A csatlakozáshoz kapcsolódó oszlop statisztikai adatainak létrehozása vagy frissítése a leghatékonyabb módja a hash rekursziók vagy mentések számának csökkentésének.
Megjegyzés:
A grace hash csatlakozás és a rekurzív hash join kifejezéseket is használják a hash mentőcsomag leírására.
Fontos
Annak meghatározására, hogy hol történik a Hash Warning esemény, amikor a lekérdezésoptimalizáló végrehajtó tervet generál, gyűjtsünk egy Showplan eseményosztályt is a trace-ben. Bármelyik Showplan eseményosztályt választhatod, kivéve a Showplan szöveget és a Showplan szöveg (kódolatlan) eseményosztályokat, amelyek nem adnak vissza Node ID-t. A Showplans csomópontazonosítói minden műveletet azonosítanak, amit a lekérdezésoptimalizáló végez, amikor lekérdezés végrehajtási tervet generál. Ezeket a műveleteket operátoroknak nevezik, és a Showplan minden operátorának van Node ID-je. A Hash Warning eseményekhez tartozó ObjectID oszlop megfelel a Showplans csomóponti azonosítójának, így meg tudod állapítani, melyik operátor vagy művelet okozza a hibát.
Hash figyelmeztető eseményosztály adatoszlopai
| Adatoszlop neve | Adattípus | Description | Oszlopazonosító | Szűrhető |
|---|---|---|---|---|
| ApplicationName | nvarchar | Annak az ügyfélalkalmazásnak a neve, amely létrehozta a kapcsolatot az SQL Server egy példányával. Ez az oszlop az alkalmazás által továbbított értékekkel van töltve, nem pedig a program megjelenített nevével. | 10 | Igen |
| ClientProcessID | int | A gazdaszámítógép által hozzárendelt azonosító ahhoz a folyamathoz, amelyben az ügyfélalkalmazás fut. Ez az adatoszlop akkor van feltöltve, ha az ügyfél megadja az ügyfél folyamatazonosítóját. | 9 | Igen |
| DatabaseID | int | Az adatbázis azonosítója, amelyet az USE adatbázis utasítás vagy az alapértelmezett adatbázis jelöl, ha egy adott példányra nem adott USE adatbázis utasítást adtak ki. Az SQL Server Profiler megjeleníti az adatbázis nevét, ha a ServerName adatoszlop rögzítve van a nyomkövetésben, és a kiszolgáló elérhető. Határozza meg az adatbázis értékét a DB_ID függvénnyel. | 3 | Igen |
| DatabaseName | nvarchar | Annak az adatbázisnak a neve, amelyben a felhasználói utasítás fut. | 35 | Igen |
| EventClass | int | Az esemény típusa = 55. | 27 | Nem |
| Eseménysorozat | int | Egy adott esemény sorrendje a kérelemben. | 51 | Nem |
| EventSubClass | int | Az esemény alosztály típusa. 0=Rekurzió 1=Mentés |
21 | Igen |
| GroupID | int | Annak a számítási feladatcsoportnak az azonosítója, amelyben az SQL Trace esemény aktiválódik. | 66 | Igen |
| Kiszolgálónév | nvarchar | Annak a számítógépnek a neve, amelyen az ügyfél fut. Ez az adatoszlop akkor van feltöltve, ha a kliens megadja a hosztnevet. A gazdanév meghatározásához használja az HOST_NAME függvényt. | 8 | Igen |
| IntegerData | int | Rekurziós szint (csak hash rekurzió). | 25 | Igen |
| IsSystem | int | Azt jelzi, hogy az esemény rendszerfolyamaton vagy felhasználói folyamaton történt-e. 1 = rendszer, 0 = felhasználó. | 60 | Igen |
| bejelentkezési név | nvarchar | A felhasználó bejelentkezésének neve (akár SQL Server biztonsági bejelentkezés, akár Windows bejelentkezési adatai DOMAIN<\username>< formájában>). | 11 | Igen |
| LoginSid | image | A bejelentkezett felhasználó biztonsági azonosítója (SID). Ezt az információt a sys.server_principals katalógus nézetben találhatod. Minden sid egyedi a kiszolgálón található minden bejelentkezéshez. | 41 | Igen |
| NTDomainName | nvarchar | Windows-tartomány, amelyhez a felhasználó tartozik. | 7 | Igen |
| NTUserName | nvarchar | Windows-felhasználónév. | 6 | Igen |
| Objektumazonosító | int | A repartícióban részt vevő hash csapat gyökérének csomópontazonosítója. Egyezik a Showplans csomópont azonosítójával. | 22 | Igen |
| RequestID | int | Az utasítást tartalmazó kérés azonosítója. | 49 | Igen |
| Kiszolgálónév | nvarchar | Az SQL Server példányának neve, amelyet nyomon követnek. | 26 | |
| SessionLoginName | nvarchar | A munkamenetet létrehozó felhasználó bejelentkezési neve. Például, ha Login1-vel csatlakozol az SQL Serverhez, és egy utasítást futtatsz Login2-ként, akkor a SessionLoginName a Login1-et, a LoginName pedig Login2-t mutatja. Ez az oszlop az SQL Server- és a Windows-bejelentkezéseket is megjeleníti. | 64 | Igen |
| SPID | int | Annak a munkamenetnek az azonosítója, amelyen az esemény történt. | 12 | Igen |
| StartTime | datetime | Az esemény indításának időpontja, ha elérhető. | 14 | Igen |
| Tranzakcióazonosító | bigint | A tranzakció rendszer által hozzárendelt azonosítója. | 4 | Igen |
| XactSequence | bigint | Az aktuális tranzakciót leíró jogkivonat. | 50 | Igen |