Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir:SQL Server
Azure SQL Veritabanı
Azure SQL Yönetilen Örneği
Microsoft 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)