INF: SQL Server performansı üzerindeki istemci efektleri

Ö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.

180775
Bu makale arşivlenmiştir. "Olduğu gibi" sunulmaktadır ve bundan sonra güncelleştirilmeyecektir.
Ö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 pubsgoselect 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 resultsCommit / Rollback transaction   Go   ==>   Send to SQL Server and process resultsselect convert(char(30), GetDate(), 9) "End Time"go				

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

use pubsgoselect convert(char(30), GetDate(), 9) "Start Time"gobegin transactionif(0 = @@ERROR)begin   update authors set au_lname = au_lname   if(0 = @@ERROR)   begin      commit transaction   end   else   begin      rollback transaction   endendgo    ==>   Send to SQL Server and process resultsselect 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
Performans kbit/sn WAN

Uyarı: Bu makalenin çevirisi otomatik olarak yapılmıştır

Özellikler

Makale No: 180775 - Son İnceleme: 02/10/2014 05:37:37 - Düzeltme: 3.0

  • Microsoft SQL Server 6.5 Standard Edition
  • kbnosurvey kbarchive kbmt kbinfo KB180775 KbMttr
Geri bildirim