SORU
27 EYLÜL 2009, Pazar


SET kullanımı NOCOUNT

Konusunda farklı görüşler var this question esinlenerek SET NOCOUNT...

SET NOCOUNT SQL Server için kullanın. Değil, neden değil?

Ne işe yaradığını biliyorum6, 2011 Jul 22 düzenleyin

"Xx satır" herhangi bir VİD sonra mesaj. etkilenen bastırır Bu bir seviyesinde bağımsız ve gönderdiğinde, istemci işlem gerekir. Küçük, ama (cevaplar aşağıda) ölçülebilir

Tetikleyiciler vb, müşteri "xx etkilenen Satırların" ve bu bazı ORMs, MS Access, JPA vb hataları (bkz düzenlemeler aşağıda) her türlü neden olur . birden fazla alacak için

Arka plan:

Genel kabul görmüş en iyi uygulama (bu soru kadar düşündüm) SQL Server Tetikleyicileri ve saklı yordamları SET NOCOUNT ON kullanmaktır. Her yerde kullanıyoruz ve hızlı bir google SQL Server MVP bol da kabul gösterir.

MSDN bu .net SQLDataAdapter bir mola olabilir diyor.

Şimdi, Örneğin beklediği için son derece basit CRUD işleme sınırlı olduğunu bana bu demektir "n etkilenen satırların" maç için mesaj. Yani kullanamam:

  • EĞER çiftleri (hiçbir satır etkilenen mesaj) önlemek için VARNot: dikkatli kullanın
  • (Az satır sonra bekleniyor . BULUNDUĞU
  • Önemsiz güncellemeleri (örn: veri yok aslında değişiklik) filtre
  • Herhangi bir tablo erişmek için önce (günlük gibi)
  • Karmaşıklık veya denormlisation gizle
  • vb

Soru marc_s SQL işini biliyor (kim) kullanmayın diyor. Bu düşündüğüm için (ve SQL konusunda biraz yetkili olarak kendimi de görüyorum) farklıdır.

Bir şey (belli olan bir şeyi çekinmeyin) ama sence orada millet nedir? eksik olma ihtimalim var

Not: Örneğin bugünlerde. kullanmıyorum çünkü bu hata görmeyeli yıllar oldu

Soru ve yorumlarınız sonrası düzenlemeler:

Edit: Daha fazla düşünceler...

# SQLDataAdaptor " C " kullanabilir, başka bir Java arabiriminin kullanabilir. birden fazla müşterimiz var: Bu SET NOCOUNT ON farklı şekillerde etkilenebilir.

Eğer yöntem olarak saklı yordamlara ele alırsanız, o zaman kötü form (anti-pattern) bazı iç işlem kendi amaçları için belli bir şekilde çalıştığını varsayalım.

Edit 2: *2 set* olamaz trigger breaking nHibernate question,

(ve, this yinelenen değil)

Edit 3: MVP meslektaşım için daha fazla bilgi, Henüz teşekkürler

Edit 4: Mayıs 2011 13

Breaks Linq 2 SQL too when not specified?

Edit 5: 14 Haziran 2011

Tatili JPA, proc tablo değişkenleri ile saklı: Does JPA 2.0 support SQL Server table variables?

Edit 6: 15 Ağustos 2011

Bu SSMS "satır" veri ızgara gerektirir SET NOCOUNT ON: 16**. Düzenle

Edit 7: 07 Mar 2013

Daha derin ayrıntılar @RemusRusanu:
Does SET NOCOUNT ON really make that much of a performance difference

CEVAP
10 EKİM 2009, CUMARTESİ


Tamam şimdi araştırma yaptım, işte anlaşma:

SET NOCOUNT ON'eğer maliyeti başka bir teknolojiye geçiş küçükse s. ile sopa olabilir yani bence Yine de hala bir sonraki karşılaşma olacak bilmiyorum ne zamandan beri Örneğin terk düşünün.

EDİT: @racingsnail ağ gidiş dönüş gecikme, paket boyutu, daha büyük bir performans katil olduğuna dikkat çekti. Haklı olduğu bir nokta var ama ikinci bir ağ paket paket tandem gönderilecek çünkü gidiş dönüş gecikme aynı gecikmeye sebep olmaz ve tanınması gerekir. Gerçek ağ gidiş dönüş gecikmesi çok daha az gecikmeye neden olabilir.

EDİT 2: Burada SET NOCOUNT ayarı önemsiz yükü hakkında çok detaylı bir analiz: http://daleburnett.com/2014/01/everything-ever-wanted-know-set-nocount/

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • bethliebert

    bethliebert

    23 EKİM 2008
  • Jason Parker

    Jason Parker

    14 Aralık 2009
  • wowchick16

    wowchick16

    17 Mart 2007