Aracılığıyla paylaş


Döviz Taşkın Olayı Sınıfı

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

Exchange Spill olay sınıfı, paralel bir sorgu planındaki iletişim tamponlarının geçici olarak tempdb veritabanına yazıldığını gösterir. Bu durum nadiren ve sadece bir sorgu planında birden fazla aralık taraması olduğunda gerçekleşir.

Genellikle, bu tür aralık taramalarını üreten Transact-SQL sorgu, her biri bir tablodan veya bir indeksten satır aralığını seçen birçok BETWEEN operatörüne sahiptir. Alternatif olarak, (T.a > 10 VE T.a < 20) VEYA (T.a > 100 VE T.a < 120) gibi ifadelerle birden fazla aralık elde edebilirsiniz. Ayrıca, sorgu planları bu aralıkların sırayla taranmasını gerektirmelidir; ya T.a'da bir ORDER BY maddesi olduğu için ya da plan içindeki bir yineleme tuples'ları sıralanmış sırayla tüketmesini gerektirdiği için.

Böyle bir sorgu için bir sorgu planında birden fazla Paralellik operatörü bulunduğunda, Paralellik operatörlerinin kullandığı bellek iletişim tamponları dolur ve sorgu yürütme ilerlemesinin durması durumunda ortaya çıkabilir. Bu durumda, Paralellik operatörlerinden biri çıkış tamponunu tempdb'ye yazar ( bu işlem değişim dökülmesi olarak adlandırılır) böylece giriş tamponlarından satır tüketebilir. Sonunda, dökülen sıralar tüketici onları tüketmeye hazır olduğunda tüketiciye geri verilir.

Çok nadiren, aynı yürütme planı içinde birden fazla değişim sızıntısı gerçekleşebilir ve sorgu yavaş yürütür. Aynı talep planının yürütülmesinde beşten fazla sızıntı fark ederseniz, destek uzmanınızla iletişime geçin.

Borsa sızıntıları bazen geçici olabilir ve veri dağılımı değiştikçe ortadan kaybolabilir.

Değişim dökülmesi olaylarını önlemenin birkaç yolu vardır:

  • Sonuç setinin sıralanması için ihtiyacınız yoksa ORDER BY maddesini çıkarın.

  • Eğer ORDER BY gereklidirse, çoklu aralık taramalarına katılan sütunu (yukarıdaki örnekte T.a) ORDER BY maddesinden çıkarın.

  • Bir indeks ipucu kullanarak, optimizörü ilgili tabloda farklı bir erişim yolu kullanmaya zorlayın.

  • Sorguyu farklı bir sorgu yürütme planı oluşturmak için yeniden yaz.

  • Sorgu veya indeks işleminin sonuna MAXDOP = 1 seçeneğini ekleyerek sorguyu seri çalıştırmayı zorunlu kılın. Daha fazla bilgi için, Maksimum Paralellik derecesini Yapılandırma Sunucu Yapılandırma Seçeneği ve Paralel Indeks İşlemlerini Yapılandır bölümlerine bakınız.

Önemli

Sorgu optimizatoru yürütme planı oluştururken Exchange Spill olayının nerede gerçekleştiğini belirlemek için, trace'de 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 bir Showplan'daki her operatörün bir Node ID'si vardır. Exchange Spill olayları için ObjectID sütunu, Showplans'taki Node ID'ye karşılık gelir, böylece hataya hangi operatör veya işlemin sebep olduğunu belirleyebilirsiniz.

Exchange Spill Event Class Data Columns

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örüntülenen adı yerine uygulama tarafından geçirilen 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 süreç kimliğini 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 izde yakalandığında ve sunucu müsaitse veritabanının adını gösterir. 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 Olay türü = 127. 27 Hayı
Olay Dizisi int İstek içindeki belirli bir olayın sırası. 51 Hayı
EventSubClass int Etkinlik alt sınıfı türü.

1=Dökülme başladı

2=Dökülme sonu
21 Yes
GroupID int SQL İzleme olayının tetiklendiği iş yükü grubunun kimliği. 66 Yes
Ana Bilgisayar 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
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
LoginName 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 ana veritabanının syslogins tablosunda 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 Nesnenin sistem tarafından atanan kimliği. Showplans'taki düğüm kimliğiyle karşılık gelir. 22 Yes
RequestID int deyimini içeren isteğin kimliği. 49 Yes
SunucuAdı nvarchar İzlenen SQL Server örneğinin adı. 26 Hayı
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
İşlem Kimliği 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)
Dizin Seçeneklerini Ayarla
alter index (Transact-SQL)