Exchange sıvı dökülmesine olay sınıfı
The Exchange Spill event class indicates that communication buffers in a parallel query plan have been temporarily written to the tempdb database.Bu nadiren ve sorgu planı birden çok aralık taramaları olduğunda oluşur.
Normal olarak, Transact-SQL Bu tür aralık taramalar üreten sorgusu var çoğu her biri bir dizi satırları seçer, operatörler arasında bir tablo veya bir dizini.Alternatif olarak, birden çok aralığı gibi ifadeler kullanarak elde edebilirsiniz (T.a > 10 ve T.a < 20) veya (T.a > 100 ve T.a < 120).Ayrıca, sorgu planları bu aralıklar T.a order by yan tümce tümce tümce olduğundan veya sıralı düzende dizilerini tüketen bir yineleyici planı içinde gerektirdiği için sırayla taranması istemelidir.
Ne zaman böyle bir sorgu için sorgu planına sahip birden çok Parallelism işleçleri tarafından kullanılan arabellekleri iletişim Parallelism İşletmenleri tam olur ve sorgu yürütme ilerleme durur whereby bir durum ortaya çıkabilir.Bu durumda, biri Parallelism işleçleri kendi çıktı arabelleği için yazar tempdb (bir işlem olarak adlandırılan bir exchange spill) böylece bazı kendi giriş arabellekleri satırları kullanılmasına neden olabilir.Sonuçta, tüketici bunları tüketmek hazır olduğunda spilled satırları tüketiciye döndürülür.
Çok nadiren yavaş yürütmek sorgu neden aynı yürütme planı içinde birden çok exchange dökülme oluşabilir.Beşten fazla dökülme içinde aynı sorgu planın yürütülmesine dikkat edin, destek uzmanına başvurun.
Exchange dökülme, bazen geçici ve veri dağıtım değişiklikleri kaybolabilir.
Exchange sıvı dökülmesine olayları önlemenin birkaç yolu vardır:
Gerekirse, order by yan tümce tümce tümce kullanmazsanız sonuç küme sipariş için.
order by gerekirse, ortadan sütun birden çok aralık taramaları (T.a Yukarıdaki örnekte) order by yan tümce tümce tümcende yer almaktadır.
Dizin ipucu kullanarak, söz konusu tablo farklı erişim yol kullanmak için en iyi duruma getiricisi zorlamak.
Sorguyu farklı sorgu yürütme planı üretmek için yeniden yazın.
maxdop ekleyerek sorguyu seri yürütülmesini zorlamak = sorgu veya dizin işlemi sonuna 1 seçenek.Daha fazla bilgi için bkz: en büyük ölçüde parallelism seçeneği ve Paralel dizin işlemleri yapılandırma.
![]() |
---|
Yerini belirlemek için Exchange Spill olayı oluştuğu zaman sorgu iyileştiricisi yürütme planı oluşturur Showplan olay sınıfı bir izleme toplamanız gerekir.Showplan olay sınıflarının dışında seçebilirsiniz Showplan metin ve Showplan metin (Unencoded) bir düğüm kimliği dönmek olay sınıflarıNode ID'leri Showplans içinde her işlemi tanımlamak sorgu iyileştiricisi sorgu yürütme planı oluşturduğunda gerçekleştirir.Bu işlemler işleçler denir ve bir düğüm kimliği her içinde bir Showplan işleç vardır.The ObjectID column for Exchange Spill events corresponds to the Node ID in Showplans so you can determine which operator, or operation, is causing the error.Showplan olay sınıfları hakkında daha fazla bilgi için bkz: SQL Server Profiler olay sınıfları kullanarak planları yürütme görüntüleme |
Exchange sıvı dökülmesine olay sınıfı veri sütunları
Veri sütun adı |
Veri türü |
Açıklama |
Sütun kimliği |
Süzgeçlenebilir |
---|---|---|---|---|
ApplicationName |
nvarchar |
Bağlantı oluşturulan istemci uygulamanın adını bir örnek , SQL Server.Bu sütun görüntülenen programın adı yerine uygulama tarafından geçirilen değerleri ile doldurulur. |
10 |
Evet |
ClientProcessID |
Int |
istemci uygulamasının çalıştığı işlemin ana bilgisayarı tarafından atanan kimliği.Bu verileri sütun istemci istemci sağlıyorsa, doldurulan işlem kimliği. |
9 |
Evet |
DatabaseID |
Int |
ID of the database specified by the USE database statement or the default database if no USE database statement has been issued for a given instance.SQL Server Profiler displays the name of the database if the ServerName data column is captured in the trace and the server is available.DB_ID kullanarak bir veritabanı için bir değer belirlemek işlev. |
3 |
Evet |
Veritabanı adı |
nvarchar |
Kullanıcı deyim çalıştıran veritabanının adı. |
35 |
Evet |
EventClass |
Int |
Olay türü = 127. |
27 |
Hayır |
EventSequence |
Int |
İstek içinde belirli bir olay sırası. |
51 |
Hayır |
EventSubClass |
Int |
Olay alt sınıf türü. 1 = Sıvı dökülmesine başlamak 2 = Sıvı dökülmesine son |
21 |
Evet |
Grup Kimliği |
Int |
Kimliği iş yükü grubu burada sql izleme olay tetikler. |
66 |
Evet |
Ana bilgisayar adı |
nvarchar |
istemci üzerinde çalıştığı bilgisayarın adı.Bu verileri sütun istemci ana bilgisayar adı girerse doldurulur.Ana bilgisayar adını belirlemek için host_name kullanın işlev. |
8 |
Evet |
IsSystem |
Int |
Olay Sistem işlemi veya kullanıcı işlemi oluştu gösterir.1 = sistem, 0 = kullanıcı. |
60 |
Evet |
LoginName |
nvarchar |
Kullanıcının oturum açma adı (ya da SQL Server güvenlik oturumu veya Windows oturum açma kimlik bilgileri şeklindeki <etki alanı>\<kullanıcı adı>). |
11 |
Evet |
LoginSid |
resim |
Oturum açmış kullanıcının güvenlik kimlik numarası (SID).Bu bilgileri de bulabilirsiniz syslogins tablo , ana veritabanı.Her SID sunucudaki her oturumu için benzersizdir. |
41 |
Evet |
NTDomainName |
nvarchar |
Kullanıcının ait olduğu Windows etki alanı. |
7 |
Evet |
NTUserName |
nvarchar |
Windows kullanıcı adı. |
6 |
Evet |
ObjectID |
Int |
Nesnenin sistem atanan kimliği.Showplans içinde düğüm kimliği ile karşılık gelir. |
22 |
Evet |
RequestId |
Int |
deyim içeren istek kimliği. |
49 |
Evet |
Sunucuadı |
nvarchar |
Adı örnek , SQL Server izlenen. |
26 |
Hayır |
SessionLoginName |
nvarchar |
Oturum kaynaklı kullanıcı oturum açma adı.Örneğin, bağlandığınız, SQL Server kullanarak Login1 ve yürütmek bir deyim olarak Login2, SessionLoginName Login1 gösterir ve LoginName Login2 gösterir.Bu sütun, her ikisini de görüntüler SQL Server ve Windows oturumu açma. |
64 |
Evet |
SPID |
Int |
Kimliği oturum olay oluştuğu üzerinde. |
12 |
Evet |
StartTime |
datetime |
Saat, olay, varsa başladı. |
14 |
Evet |
TransactionID |
bigint |
Hareketin sistem tarafından atanan kimliği. |
4 |
Evet |
XactSequence |
bigint |
Geçerli hareket açıklar belirteci. |
50 |
Evet |
Ayrıca bkz.