Aracılığıyla paylaş


Hash Uyarı Etkinliği Sınıfı

Şunlar için geçerlidir:SQL ServerAzure SQL VeritabanıAzure SQL Yönetilen ÖrneğiMicrosoft Fabric'te SQL veritabanı

Hash Warning olay sınıfı, bir hash işlemi sırasında hash özyinelemesi veya hashing durdurulması (hash kurtarma) gerçekleştiğinde izlenebilir.

Hash özyinelemesi, derleme girdisinin mevcut belleğe sığmaması durumunda gerçekleşir ve bu da girdinin ayrı ayrı işlenen birden fazla bölüme bölünmesine yol açar. Eğer bu bölümlerden herhangi biri mevcut belleğe sığmazsa, alt bölümlere ayrılır ve bunlar da ayrı ayrı işlenir. Bu bölme süreci, her bölüm mevcut belleğe sığana veya maksimum özyineleme seviyesine ulaşana kadar devam eder (IntegerData veri sütununda gösterilir).

Karma kurtarma, bir karma oluşturma işlemi en yüksek özyineleme düzeyine ulaştığında ve kalan bölümlenmiş verileri işlemek için alternatif bir plana geçmeye karar verdiğinde gerçekleşen bir mekanizmadır. Hash kurtarma genellikle çarpık veriler nedeniyle gerçekleşir.

Hash özyinelemesi ve hash kurtarma paketi, sunucunuzda performansın düşmesine neden olur. Hash özyineleme ve kurtarma sıklığını ortadan kaldırmak veya azaltmak için aşağıdakilerden birini yapın:

  • Birleştirilen veya gruplanan sütunlarda istatistiklerin olduğundan emin olun.

  • Sütunlarda istatistikler varsa, güncelleyin.

  • Farklı bir birleştirme türü kullanın. Örneğin, uygunsa MERGE veya LOOP birleşimi kullanın.

  • Bilgisayarda kullanılabilir belleği artırın. Hash recursion veya kurtarma, sorguları işlemek için yeterli bellek olmadığında ve sorguların diske aktarılması gerektiğinde ortaya çıkar.

Birleştirmeye dahil olan sütundaki istatistikleri oluşturmak veya güncellemek, gerçekleşen hash özyineleme veya kurtarma sayısını azaltmanın en etkili yoludur.

Uyarı

Grace hash join ve recursive hash join terimleri de hash kurtarma paketini tanımlamak için kullanılır.

Önemli

Sorgu optimizatoru bir yürütme planı oluştururken Hash Warning olayının nerede gerçekleştiğini belirlemek için, izde bir Showplan olay sınıfı da toplamalısınız. Showplan etkinlik sınıflarından herhangi birini seçebilirsiniz, ancak Node ID döndürmeyen Showplan Metni ve Showplan Metni (Kodlanmamış) etkinlik sınıfları hariç. Showplans'taki düğüm kimlikleri, sorgu optimizatorunun bir sorgu yürütme planı oluşturduğunda gerçekleştirdiği her işlemi tanımlar. Bu işlemlere operatörler denir ve Showplan'daki her operatörün bir Düğüm Kimliği vardır. Hash Warning olayları için ObjectID sütunu, Showplans'taki Node ID'ye karşılık gelir, böylece hataya neden olan operatör veya işlemin belirlendiğini belirleyebilirsiniz.

Hash Uyarısı Olay Sınıfı Veri Sütunları

Veri sütunu adı Veri türü Description Sütun Kimliği Filtrelenebilir
ApplicationName nvarchar SQL Server örneğine bağlantıyı oluşturan istemci uygulamasının adı. Bu sütun, programın gösterilen adıyla değil, uygulama tarafından iletilen değerlerle doldurulur. 10 Yes
ClientProcessID int ana bilgisayar tarafından istemci uygulamasının çalıştığı işleme atanan kimlik. Bu veri sütunu istemci bir süreç kimliği sağlarsa doldurulur. 9 Yes
Database ID int USE veritabanı ifadesi veya belirli bir örnek için USE veritabanı ifadesi verilmediyse varsayılan veritabanı tarafından belirtilen veritabanının kimliği. SQL Server Profiler, ServerName veri sütunu izlemede yakalanırsa ve sunucu kullanılabilir durumdaysa veritabanının adını görüntüler. DB_ID işlevini kullanarak veritabanının değerini belirleyin. 3 Yes
DatabaseName nvarchar Kullanıcı deyiminin çalıştığı veritabanının adı. 35 Yes
EventClass int Etkinlik türü = 55. 27 Hayı
Etkinlik Dizisi int İstek içindeki belirli bir olayın sırası. 51 Hayı
EventSubClass int Etkinlik alt sınıfı türü.

0=Özyineleme

1=Kurtarma
21 Yes
GroupID int SQL İzleme olayının tetiklendiği iş yükü grubunun kimliği. 66 Yes
Sunucu Adı nvarchar İstemcinin üzerinde çalıştığı bilgisayarın adı. Bu veri sütunu istemci ana adı verirse doldurulur. Ana bilgisayar adını belirlemek için HOST_NAME fonksiyonunu kullanın. 8 Yes
IntegerData int Özyineleme seviyesi (sadece hash recursiyon). Yirmi beş Yes
IsSystem int Olayın bir sistem işleminde mi yoksa kullanıcı işleminde mi gerçekleştiğini gösterir. 1 = sistem, 0 = kullanıcı. 60 Yes
Kullanıcı Adı nvarchar Kullanıcının giriş adıdır (SQL Server güvenlik girişi veya Windows giriş kimlik bilgileri DOMAIN>\<kullanıcı> adı şeklinde<). 11 Yes
LoginSid image Oturum açmış kullanıcının güvenlik kimlik numarası (SID). Bu bilgiyi sys.server_principals katalog görünümünde bulabilirsiniz. Her SID, sunucudaki her oturum açma için benzersizdir. 41 Yes
NTDomainName nvarchar Kullanıcının ait olduğu Windows etki alanı. 7 Yes
NTUserName nvarchar Windows kullanıcı adı. 6 Yes
ObjectID int Yeniden bölünmeye katılan hash ekibinin kök noktasının düğüm kimliği. Showplans'taki düğüm kimliğiyle karşılık gelir. 22 Yes
İstek Kimliği int Ifadeyi içeren talebin kimliği. 49 Yes
SunucuAdı nvarchar İzlenen SQL Server örneğinin adı. 26
SessionLoginName nvarchar Oturumu oluşturan kullanıcının oturum açma adı. Örneğin, Login1 ile SQL Server'a bağlanıp bir ifadeyi Login2 olarak çalıştırırsanız, SessionLoginName Login1 ve LoginName Login2 gösterir. Bu sütun hem SQL Server hem de Windows oturum açma bilgilerini görüntüler. 64 Yes
SPID int Olayın gerçekleştiği oturumun kimliği. 12 Yes
StartTime datetime Varsa olayın başlatıldığı saat. 14 Yes
TransactionID bigint İşlemin sistem tarafından atanan kimliği. 4 Yes
XactSequence bigint Geçerli işlemi açıklayan belirteç. 50 Yes

Ayrıca Bkz.

sp_trace_setevent (Transact-SQL)
Katıldı