SQL Server 7.0 veya 2000 Engelleme Sorunlarını Anlama ve Giderme:::

Mysql SQL Server 7.0 veya 2000 Engelleme Sorunlarını Anlama ve Giderme::: Veritabanı programcılığı hakkında bilgi paylaş; SQL Server 7.0 veya 2000 Engelleme Sorunlarını Anlama ve Giderme::: Engelleme, kilit tabanlı eşzamanlama kullanan her iliş...
Cevapla
WebMasTer SiTeSi
 
Seçenekler
  #1  
Arama 02-01-2008, 01:13
kadınca
Guest
Mesajlar: n/a
 
     WS-Ticareti: ()

SQL Server 7.0 veya 2000 Engelleme Sorunlarını Anlama ve Giderme:::

SQL Server 7.0 veya 2000 Engelleme Sorunlarını Anlama ve Giderme:::


Engelleme, kilit tabanlı eşzamanlama kullanan her ilişkisel veritabanı yönetim sisteminin (RDBMS) kaçınılmaz özelliğidir. SQL Server'da engelleme durumu, bir SPID belirli bir kaynağı kilitli tutarken ikinci bir SPID'nin aynı kaynağı çakışan bir kilit türüyle kilitli tutmaya çalışması sonucu oluşur. Genellikle, ilk SPID'nin kaynağı kilitleme süresi çok kısadır. İlk SPID kilidi serbest bıraktığında, ikinci bağlantı, kaynağı kilitleyerek işlemine devam edebilir. Bu normal davranıştır ve sistem performansı üzerinde fark edilebilir bir etkisi olmaksızın gün içinde birçok kez oluşabilir.

Bir sorgunun süresi ve hareket bağlamı, kaynağı kilitli tutma süresini ve bunun diğer sorgular üzerindeki etkilerini belirler. Sorgu bir hareket içinden yürütülmemişse (ve kilit ipuçları kullanılmamışsa), SELECT deyimlerinin kilitleri kaynağı sorgu süresince değil yalnızca kaynak okunurken tutulur. INSERT, UPDATE ve DELETE deyimlerinde hem veri tutarlılığı hem de gerekirse sorgunun geri alınmasına olanak tanımak için kaynak sorgu süresince kilitli tutulur.

Hareket içinden yürüten sorgularda kilitli tutma süresi sorgu türüne, hareket yalıtım düzeyine ve sorguda kilit ipuçlarının kullanılıp kullanılmadığına göre belirlenir. Kilitleme, kilit ipuçları ve hareket yalıtım düzeylerinin açıklaması için, SQL Server 7.0 Çevrimiçi Kitapları'nda aşağıdaki konulara bakın: • "Understanding Locking in SQL Server" (SQL Server'da Kilitlemeyi Anlama)
• "Locking Architecture" (Kilitleme Mimarisi)
• "Lock Compatibility" (Kilit Uyumluluğu)
• "Locking Hints" (Kilitleme İpuçları)
• "Changing Default Locking Behavior in Oracle and SQL Server" (Oracle ve SQL Server'da Varsayılan Kilitleme Davranışını Değiştirme)
Kilitleme ve engelleme sistem performansına zarar verecek düzeye ulaştığında, nedeni genellikle aşağıdakilerden birisidir:

• Bir SPID bir kaynak kümesini serbest bırakmadan önce uzun bir süre kilitli tutar. Bu tür engelleme zaman içinde kendi kendine giderilir, ancak performans azalmasına neden olur.
• Bir SPID bir kaynak kümesini kilitli tutar ve serbest bırakmaz. Bu tür engelleme kendi kendine çözümlenmez ve etkilenen kaynaklara erişimi süresiz olarak önler.
Yukarıdaki ilk senaryoda, SPID zaman içinde kilitleri serbest bıraktıkça engelleme sorunu kendi kendine giderilir. Ancak, zaman içinde farklı SPID'ler farklı kaynaklar üzerinde engellemeye neden olduğundan hareketli hedef oluşturur ve sürekli bir durum değişkenliği söz konusu olabilir. Bu nedenle, bu tür durumlarda SQL Server Enterprise Manager veya ayrı SQL sorguları kullanarak sorun gidermek zor olabilir. İkinci durum, tanılanması daha kolay olan tutarlı bir duruma neden olur.
Engelleme Bilgilerini Toplama
Engelleme sorunlarını giderme konusundaki güçlüklere yönelik olarak, veritabanı yöneticisi SQL Server üzerindeki kilitleme ve engelleme durumunu sürekli olarak izleyen SQL komut dosyaları kullanabilir. Bu komut dosyaları zaman içinde belirli örneklerin anlık görüntülerini sağlayabilir ve böylece soruna yönelik bir genel bakış elde edilebilir. SQL komut dosyalarıyla engelleme durumunun nasıl izleneceği hakkında açıklama için, aşağıdaki Microsoft Knowledge Base makalelerine bakın:
251004 () BİLGİ: SQL Server 7.0 Engelleme Durumu Nasıl İzlenir (Bu bağlantı, bir kısmı veya tamamı İngilizce olan içeriğe işaret edebilir.)
271509 () BİLGİ: SQL Server 2000 Engelleme Durumu Nasıl İzlenir (Bu bağlantı, bir kısmı veya tamamı İngilizce olan içeriğe işaret edebilir.)
Bu makaledeki komut dosyaları aşağıdaki görevleri gerçekleştirir. Mümkün olduğunda, Enterprise Manager'dan veya belirli bir SQL sorgusundan bu bilgileri edinme yöntemi verilir. 1. Engelleme zincirinin başındaki SPID'yi belirleyin.
Yukarıdaki makalede bulunan komut dosyalarını kullanmanın yanı sıra, engelleme zincirinin başlangıcını SQL Enterprise Manager'ı aşağıdaki gibi kullanarak belirleyebilirsiniz:

a. Sunucu grubunu ve sonra sunucuyu genişletin.
b. Management'ı (Yönetim) ve sonra Current Activity'yi (Geçerli Etkinlik) genişletin.
c. Locks / Process ID'yi (Kilitler / İşlem Kimliği) genişletin. SPID'ler engelleme bilgileriyle birlikte ayrıntılar bölmesinde görüntülenir. Diğerlerini engelleyen SPID'ler "(Blocking)" [Engelleyen] olarak görünür.
Ancak, bazı geçici veritabanı (tempdb) engelleme sorunu türleri, geçici tablo işlemlerini kullanan sorguları çalıştırmanızı önleyebildiğinden Enterprise Manager'ın yerine sorguların kullanılması gerektiğine dikkat edin. Doğrudan sorguların kullanılması bu sorunu önlemek için gerekli denetimi sağlar.
2. Engelleyen SPID'nin çalıştırdığı sorguyu bulun.
Komut dosyası yöntemi belirli bir SPID tarafından verilen komutu belirlemek için aşağıdaki sorguyu kullanır:

DBCC INPUTBUFFER (<spid>)

Diğer bir yol olarak, SQL Enterprise Manager'ı aşağıdaki gibi kullanabilirsiniz:

a. Sunucu grubunu ve sonra sunucuyu genişletin.
b. Management'ı (Yönetim) ve sonra Current Activity'yi (Geçerli Etkinlik) genişletin.
c. Process Info'yu (İşlem Bilgisi) tıklatın. SPID'ler ayrıntılar bölmesinde görüntülenir.
d. SPID'nin yürüttüğü son Transact-SQL komutu toplu işlemini görmek için engelleyen SPID'yi çift tıklatın.

3. Engelleyen SPID'nin uyguladığı kilitlerin türünü bulun.
sp_lock sistem saklı yordamını yürüterek bu bilgileri belirleyebilirsiniz. Diğer bir yol olarak, Enterprise Manager'ı aşağıdaki gibi kullanabilirsiniz:

a. Sunucu grubunu ve sonra sunucuyu genişletin.
b. Management'ı (Yönetim) ve sonra Current Activity'yi (Geçerli Etkinlik) genişletin.
c. Locks / Process ID'yi (Kilitler / İşlem Kimliği) genişletin. SPID'ler, uyguladıkları kilitlerle ilgili bilgilerle birlikte ayrıntılar bölmesinde görüntülenir.

4. Engelleyen SPID'nin iç içe geçmiş hareket düzeyini ve işlem durumunu bulun.
SPID'nin iç içe geçmiş hareket düzeyi @@TRANCOUNT genel değişkeninde bulunur. Ancak bu, sysprocesses tablosunu aşağıdaki gibi sorgulayarak SPID dışından da belirlenebilir:

SELECT open_tran FROM SYSPROCESSES WHERE SPID=<engelleyen SPID numarası>
go

Döndürülen değer SPID'nin @@TRANCOUNT değeridir. Bu, engelleyen SPID'nin iç içe geçmiş hareket düzeyini gösterir ve bu da kilitleri tutma nedenini açıklayabilir. Örneğin, değer sıfırdan büyükse SPID bir hareketin ortasındadır (bu durumda, hareket yalıtım düzeyine bağlı olarak, hareketin edindiği bazı kilitleri tutması beklenir).

Ayrıca, veritabanında uzun süredir açık hareket olup olmadığını görmek için denetlemek amacıyla DBCC OPENTRAN veritabanı_adı da kullanılabilir.
Alıntı ile Cevapla
Cevapla
Arama Etiketleri: , , , , , ,



Seçenekler


Benzer Konular
Konu Konu Açanlar Forum Cevaplar Güncel Mesajlar
messenger Bağlantı sorunlarını giderme nedir kadınca Webmaster Sözlügü 0 26-02-2008 10:58
QL Server'da Uygulama Performansı Sorunlarını Giderme kadınca Mysql 0 02-01-2008 01:16
Sık Karşılaşılan Engelleme Senaryolarını Belirleme ve Giderme kadınca Mysql 0 02-01-2008 01:15
Bir kablo modem, DSL veya LAN İnternet bağlantısı aksaklıklarını giderme kadınca İşletim Sistemleri 0 26-12-2007 02:31
CD veya DVD'den Mac OS X yüklemedeki aksaklıkları giderme kadınca İşletim Sistemleri 0 26-12-2007 02:27


Webmaster web tasarım online reviews ~ Kadınlar blogu ~ Apple iPhone, iPod Touch ( iTouch ) Forum ~ iPhone