INF: SQL Server performansı üzerindeki istemci efektleri

Makale çevirileri Makale çevirileri
Makale numarası: 180775 - Bu makalenin geçerli olduğu ürünleri görün.
Bu makale arşivlenmiştir. "Olduğu gibi" sunulmaktadır ve bundan sonra güncelleştirilmeyecektir.
Hepsini aç | Hepsini kapa

Bu Sayfada

Özet

Performansı etkileyen genel alanlarını değerlendirirken en yaygın özelliklerini işlemci hızı, sunucuda bellek ve disk g/Ç değerlendirilir. Bölümleri sunucusunun performansını uygun performans için önemli olsa da ağ gecikmesi ve istemci işlem zamanı gibi etmenler de, sistemin genel performansını önemli bir etkisi olabilir da düşünmeniz gerekir.

Bu makalede, ikinci alan anlatılır ve sunucu üzerinde sahip olabilir, hangi etkisi'yi değerlendirdiğiniz için yönergeler sağlar.

Daha fazla bilgi

Aşağıdaki örnek, belge kullanılır. Transact-SQL söz dizimini yalnızca küçük bir fark ile güncelleştirme adımları iki bağlantılarda.

<a1>Bağlantı</a1> 1

use pubs
go
select convert(char(30), GetDate(), 9) "Start Time"
go

            Begin transaction

   Go   ==>   Send to SQL Server and process results

            Update authors set au_lname = au_lname

   Go   ==>   Send to SQL Server and process results

Commit / Rollback transaction

   Go   ==>   Send to SQL Server and process results

select convert(char(30), GetDate(), 9) "End Time"
go
				

<a1>Bağlantı</a1> 2

use pubs
go
select convert(char(30), GetDate(), 9) "Start Time"
go
begin transaction
if(0 = @@ERROR)
begin
   update authors set au_lname = au_lname
   if(0 = @@ERROR)
   begin
      commit transaction
   end
   else
   begin
      rollback transaction
   end
end
go    ==>   Send to SQL Server and process results
select convert(char(30), GetDate(), 9) "End Time"
go
				

Yuvarlak Trips ağ

<a1>Bağlantı</a1> 1 SQL sunucu bilgisayarı için üç başvuru gerektirir:
  • Işlem başlar.
  • Güncelleştirme
  • Tamamlama / Rollback işlem
<a1>Bağlantı</a1> 2 Güncelleştirmeyi tamamlamak için tek bir gezi gerektirir.

Sorgu iptali

DB Kitaplığı hem de ODBC Apı, zaman uyumsuz sorgu işlemini destekler. Örneğin, DB Kitaplığı, istemci, sorgu tamamlanma durumunu yoklamak izin vermek için dbdataready fonksiyonunu kullanır.

DB Kitaplığı'nda, dbdataready işlevi DataReadySleep değeri tarafından denetlenir. Lütfen DataReadySleep kayıt defteri anahtarı hakkında ek bilgi için Microsoft Knowledge Base'de aşağıdaki makaleye bakın:
159234: INF: nasıl Dbdataready tarafından kullanılan <a1>uyku</a1> değerini değiştirmek

Bekleme süreleri, zamanlamaları nasıl etkiler

Varsayılan olarak uyku değer 250 milisaniyedir.

<a1>Bağlantı</a1> 1, SQL Server için üç yuvarlak başvuru yapar. Varsayılan olarak, istemci, 750 milisaniye olarak bekleme süresi, en az zaman geçerli ağ aktarım için sayım karşılaşır. Bekleme süresi hesaplanır (250 milisaniyedir * 3) = 750 MS.

<a1>Bağlantı</a1> 2 tek bir geçiş yapar ve en az 250 milisaniyedir, bekleme süresi, geçerli ağ aktarım zamanını sayım karşılaşır.

Bu örnek, üç bir faktörle hızını değiştirebilir, yalnızca Transact-SQL söz dizimini yararlanarak ve kaldırma iki yuvarlak gezilerinde ağ.

Ağ gidiş-dönüş, diğer kullanıcıların nasıl etkiler

<a1>Bağlantı</a1> 1 bir hareket için en az 500 milisaniye açık tutar. Hareketin açık sonra hareket 500 güncelleştirmeyi tamamlamak ve daha sonra tamamlamak için milisaniye olarak geçen veya geri alır. Veritabanı eşzamanlılık, diğer kullanıcıların değiştirdiğiniz kayıtlara erişmesini engeller.

<a1>Bağlantı</a1> 2 hareket yalnızca uzun işlemi tamamlamak için gereken açık tutar. SQL Server'ı ve ISQL/w) çalıştıran bir 133-MHz Pentium tek işlemci bulunan bilgisayarda, aşağıdaki zamanlamaları görülür.

Not: Son ağ g/Ç birinde aşağıdaki örneklerde görünmez. Kaydetme veya geri alma tamamlandıktan sonra kilitlerin serbest bırakılır, ancak son g/Ç değil tallied.
   Begin transaction                5 milliseconds
   Update                          20 milliseconds
   Commit/Rollback transaction      7 milliseconds
      TOTAL                        32 milliseconds
				

Bağlantı 1 daha büyük bir işleme penceresi gerektirir ve büyük ölçüde hareket gecikme süresini uzatır, ancak <a1>Bağlantı</a1> 2 yaklaşık 32 milisaniye cinsinden tamamlayacak.
   Begin transaction                5 milliseconds
   Network I/O                    250 milliseconds
   Update                          20 milliseconds
   Network I/O                    250 milliseconds
   Commit/Rollback transaction      7 milliseconds
      TOTAL                       532 milliseconds
				

Yukarıda gösterildiği gibi ağ saati, üç basit bir etkendir. Ancak, örnek veritabanı diğer kullanıcılar getirir kilitleme etkisi bir 16'ın etkendir (532/32 = ~ 16).

Şimdi bu basit örnek 28.8 modem ile bağlanan uzak bir bilgisayardan taşınabilir olduğunu Diyelim ki. Dbdatareadysleep parametresi tarafından belirlenen 250 milisaniye olarak gecikme ek olarak, gerçekte bu bilgileri yavaş bağlantı üzerinden iletmek üzere appreciable saattir. Öncelikle istemci bilgisayarın hızını etkilenen bağlantı 2 olduğu sürece, <a1>Bağlantı</a1> 1 bile daha büyük bir faktör diğer veritabanı kullanıcılarını etkiler. SQL sunucusunda 32 milisaniye olarak işlenen komutu bir kez gönderilir. Yalnızca yavaşlama deneyimleri sistemin, yavaş bir modemi nedeniyle beklendiği gibi uzak kullanıcı kullanıcıdır.

Istemci öteleme süresi

Istemci gecikme süresini istemcinin aldığı sonuçları işlerken geçecek zamanı dönemdir. Bağlantısı 1'i yeniden bakarsanız, bu işlemin nasıl etkileyebileceği hızlı şekilde görebilirsiniz. Bir ek 10 milisaniyede bir sonuç kümesi'ni işlemek üzere istemci için gerekiyorsa, başka bir 30 milisaniye genel hareket zaman ekleyebilir ve başka bir işlem gecikme süresi için 20 milisaniye.

Diyelim örnekler yeniden geçiş yapın. Bu durumda bir çevrimiçi sistemi bir stok tablosunda yok. Geliştirme ve en hızlı çevrimiçi sipariş işleme sistemi geçmişinde olması gereken yükleme ayları harcadığınız. Kullanıcılar, arama, satın almanız ve diğer seçenekleri arasında bir alışveriş arabası tutabilirsiniz. Bu tablo tbllnventory oluşur:
   tblInventory
      iProductID       int
      strTitle         varchar(50)
      strDescription   varchar(255)
      iSize            int
      iInStock         int
      iOnOrder         int
      iType            int
				

Bazı cereal satın almak istiyorum. Ancak, ne olduğunu görmek istiyorum. Böylece bu uygulama aşağıdaki sorgu sorunları size, 2 olarak cereal tanımlayabilirsiniz. Bu örnekte, 750 veritabanını içeren ilgili cereal-CVE-2006-maddeler.
   Select strTitle, strDescription, iSize, iInStock from tblInventory
   where iType = 2
				

SQL Server derleme ve sorguyu çözümleme ve sonuçları döndüren başlamadan. Paylaşılan kilitlerin uygun sayfalarında alınmış. Kilitlerin bloğu güncelleştirme, ekleme ve silme işlemleri, paylaşılan unutmayın.

Uygulamanız, ülke çapında, kullanıldığı için aynı anda diğer kişiler altı cereal siparişlerinin yerleştirileceği deniyorsunuz.

SQL Server ilk sekmeli veri akışı (TDS) paket doldurur, istemciye gönderir ve sonra sonuçları işlemek istemci için bekler. Süre boyunca istemci (istemci gecikme süresi), sonuçları işleme SQL Server burada işliyordu sayfa üzerindeki bir paylaşılan sayfa kilidi tutulacağı sürdürür. Bu paylaşılan kilit sipariş tamamlamaya çalışırken bir kullanıcı olarak engelleyebilirsiniz.

Bu, basit bir eylem gibi görünmektedir. SQL Server'dan bir sonuç kümesi'ni seçin ve değerleri bir liste kutusuna. 133-MHz Pentium bilgisayar 750 öğeler, yalnızca üzerinde bir saniye içinde bir liste kutusuna ekleyebilirsiniz. Liste kutusunu dosyalama sırasında devre dışı bırakma yalnızca üçte biri alır. Liste kutusunu bırakarak, istemci gecikme süresi önemli ölçüde azaltabilirsiniz.

Kilitleme daha da azaltmak için seçme işlemi değiştirmek eilimli bile olabilir. Sorgu şu şekilde değiştirerek, paylaşılan kilit pozlandırmayı sınırlayın.
   Insert * into #tblSelect from
   Select strTitle, strDescription, iSize, iInStock from tblInventory
				

   Select * from #tblSelect
				

Sorgu, SQL Server'da yalıtılmış ve geçici tabloya taşındı ve tüm paylaşılan kilitler stok tablosunda yayımlanan kadar sonuçları döndürülüyor başlatılmaz. Bu paylaşılan kilitler, SQL Server'ın sonuçları için tempdb taşımak için gereken süre için Stok tablosundaki tutulduğu süreyi sınırlar. Denetim, istemci değil veritabanı ile yeniden bulunur.

Benzer davranışlar gerçekleştirmek için başka bir yolu, "Akıllı" bir istemci kılmaktır. Bir liste kutusunu doldurmak yerine, daha hızlı bir dizi yüklenemiyor olabilir. Ancak, yine de ağ üretilen iş ile ilişkili ilgili endişeleriniz varsa. Geçici tablo, bu gibi durumlarda daha iyi bir çözümdür.

Gördüğünüz gibi istemci, veritabanı üretimi pivotal bir top oynayabilirsiniz. Uzak ve raporlama sistemleri ile çalışırken, özellikle dikkatli olmalıdır. Istemci, kilitli tutarken, sonuçları işlemek için gereken süreyi, veritabanı üretilen iş etkileyen olasılığı vardır. Bu tür sorunlar, zamanlamaları 100 milisaniye olarak gecikme dönemleri olmayacağından görmek sabit ve sp_who saklı yordamını görmek zor olabilir. Yavaş bir bağlantı hızla davranışı görmek için kullanın. Bir RAS bağlantısı uygulamayı çalıştırın ve genel davranış olduğunu görün. Ayrıca tam dikkatle uygulama profil için SQL izleme yardımcı programı yararlanabilirsiniz.

Ek bilgi için lütfen aşağıdaki Microsoft Knowledge Base'deki makaleleri bakın:
165951: BILGI: SQL Server için işlem sonucu

172117: INF: How to saklı yordamları ve Tetikleyicileri profil Transact-SQL kodu

162361: INF: anlamak ve sorunlarını engelleme SQL Server Çözümleme

167610: INF: sorgu performansı performansında azalma değerlendiriliyor

48712: INF: zaman aşımı DB Kitaplığı'nda doğru işleme

117143: INF: zamanı ve dbcancel() veya sqlcancel() nasıl kullanılır

Özellikler

Makale numarası: 180775 - Last Review: 10 Şubat 2014 Pazartesi - Gözden geçirme: 3.0
Bu makaledeki bilginin uygulandığı durum:
  • Microsoft SQL Server 6.5 Standard Edition
Anahtar Kelimeler: 
kbnosurvey kbarchive kbmt kbinfo KB180775 KbMttr
Machine-translated Article
ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.
Makalenin İngilizcesi aşağıdaki gibidir:180775

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com