SQL Server’a üzerinde çalıştırılan bir SELECT sorgu hangi aşamalardan geçip, sonuca nasıl ulaşıldığına göz atalım. SQL Server Database Engine üzerinde bulunan bileşenler Query Optimizer: Mantıksal sorgu gereksinimi için verimli fiziksel bir execution plan bulmaktan sorumlu bileşendir. Language Processing: Sorgunun syntax olarak doğruluğunu kontrol eder, sorguda geçen tabloları ve varsa GROUP BY ‘ı ya da gerekliliğini… Okumaya devam et SQL Server SELECT Nasıl Çalışır?
Kategori: Query Optimization
SQL Server sorgu optimizasyonu ile ilgili deneyimlerim, demolar ve daha fazlası
Implicit Conversion nedir? #QueryOptimization
Implicit Conversion yine execution planlarda sık karşılaşılan ancak genelde umursanmayan ya da performansa olan etkisi bilinmeyen bir uyarıdır. Ne zaman oluşur? Tip dönüşümleri yapıldığında ya da SQL Engine’in tip dönüşümü yapmaya zorlandığı durumlarda ortaya çıkar. Karşılaşmak istemediğimiz, kolay çözülebilen ancak frequency query’lerde olduğu zaman SQL Server’ın CPU’suna büyük yük getirebilecek bir uyarıdır kendileri. StackOverFlow veritabanı… Okumaya devam et Implicit Conversion nedir? #QueryOptimization
SQL Server Index Tuning – Part 1
Non-clustered index Datanın tutuluş şeklini gösteren query; CREATE INDEX IX_LastAccessDate_Id_Age ON dbo.Users (LastAccessDate,Id,Age) SELECT LastAccessDate,Id,Age FROM dbo.Users ORDER BY LastAccessDate,Id,Age Missing Index Önerisi Genelde sadece WHERE clause’a odaklanır, çünkü bu işlemi micro saniyeler içinde gerçekleştirip query’nin süresine etki etmemesi gerekiyor. WHERE Clause – Index for Equality Queries Aşağıdaki sorgu için index en iyi index nedir? SELECT… Okumaya devam et SQL Server Index Tuning – Part 1
optimize for ad hoc workloads nedir?
optimize for ad hoc workloads plan : ad hoc diye adlandırılan tek kullanımlık sql query’lerinin, plan önbelleğindeki verimliliğini arttırmak için kullanılır. Ayar “açık” (1) olarak yapılandırıldığında Database Engine ad hoc query’lerin plan’larını tam derlenmiş plan (compiled plan) yerine, küçük derlenmiş plan taslağı (compiled plan stub) olarak tutmaktadır. Demo Öncelikle bu özelliği kullanmadığımızda durumun ne olduğunu… Okumaya devam et optimize for ad hoc workloads nedir?
SQL Read-ahead reads nedir? #QueryOptimization
Database engine’in desteklediği optimizasyon araçlarından biri olan read-ahead reads, önden okuma olarak tanımlanmaktadır. Bir sorguyu çalıştırmak için gereken veri ve dizin sayfalarını tahmin eder ve sayfaları sorgu tarafından kullanılmadan önce buffer cache’e getirir. SQL Server fiziksel okumalar sırasında 8KB’lik page’ler yada extend page’ler okur ancak diskten daha fazla data okumak gerektiği sırada read-ahead reads devreye… Okumaya devam et SQL Read-ahead reads nedir? #QueryOptimization