İkinci seminerde
Türkiye'de SQL Serverın en büyük gurularından birisi olan Yiğit AKTAN hocanın
Troubleshooting: How to understand if the storage is a problem on the database
server? Adlı seminerine katıldım. Şimdiye kadar teknik açıdan olsun
sürükleyicilik açısından olsun en iyi
seminerlerden birisiydi.
Seminerde Sql
Serverda yaşanabilecek IO problemleri ve bunların çözüm yöntemleri üzerine
konuşuldu. Bir işlem bir kayıt üzerinde
değişlik yapacağı zaman ilk olarak kaydın olduğu page'i bulmak için memorye
bakar. Burda yoksa diskten okuyarak
memory'e alır. SQL Server kayıtları direk diskten okumaz. Öncelikle memory'e
alır. Burdan okur. Okuma devam ederken bir başka işlem bu page erişmek isterse
ilk işlemin okuma işlemini bitirmesini bekler. Buna PageIOLatch_EX denir. Aynı anda iki işlem aynı page'e erişip
memory'e alamaz.
Bu PageIOLatch_EX
problemlerinin nasıl tespit edileceği ve nasıl çözümler bulunacağı üzerine çok
güzel bir seminer oldu.
I/O problemlerinde
DBAler öncelikli olarak çözümü storage yöneticileri ile konuşarak bulmak
isterler. Ancak genellikle çözüm bulunamaz. Çünkü storage yöneticileri
hatalarını genellikle kabul etmezler. Bu gibi durumlarda problemin ne olduğu ve
çözümün ne olacağı konusunda demo yapıldı.
Çözüm Örnekleri
- IO hızınızı artırmak ve hızı yüksek bir altyapıya sistemimizi taşımak. Disk yapımızı SSD ile değiştirmek.(Bu ilk etapta pek kolay gözükmüyor.)
- Eksik Indexleri yeniden oluşturmak
- Kullanılmayan Indexleri silmek
- İstatiktikleri Update Etmek
- MDF ve LDF disklerini ayrı diskler üzerine koymak ve TempDB veritabanını hızlı disklere taşımak.
Seminerde sp_WhoIsActive stored prosedürü üzerine bilgi verildi. Bu
prosedür Adam Machanic tarafından
yazılmış. Sistemde o anda çalışan activiteleri görüntülüyor.