SQL Server performansı ile ilgili sorununuz varsa, bunu iyileştirmek için yapabileceğiniz çeşitli şeyler vardır.
Öncelikle darboğaz olan alanı belirlemeniz gerekir. İşlemci mi? Bellek mi? Disk okuma yazmaları mı? Belki de -küçük bir ihtimal- network erişimi mi?
Darboğaz olan alanı bulunca sakın o alanı genişletmeyi düşünmeyin hemen. Öncelikle darboğaza sebep olan sorguları bulmaya odaklanın.
Özellikle kullanıcıların oluşturduğu raporların da çalışabildiği sistemlerde bazen birkaç sorgu sorunun tüm sebebi olabilir. Onları yani kaçak sorguları bulup spotların altına alın. İnceleyin. Bazen bu sorguları tamamen kaldırmak, bazen eksik bir where ifadesini yazmak, bazen bir indeks oluşturmak ya da bir indeksi biraz geliştirmek performanta büyük etkiler yapabilir. Tekil olarak o sorgunun hızı yüz katına bile çıkabilir. Çokça çalışan bir sorguysa sistemin tüm performansında yüzde onlara, yirmilere ulaşan tasarruflar sağlanabilir.
Bir sorgunun neler yapabileceğine basit bir örnek. Biraz karikatür bir sorgu. Tıpkı bir karikatürdeki gibi bazı hatları fazlaca vurgulamış olacağız. Ama sisteminizde böyle bir sorgunun yazılmayacağını kim garanti edebilir? Bakın:
USE Adventureworks
SELECT *
FROM Production.ProductCategory, Production.ProductSubcategory, Production.Product,
Sales.SalesOrderHeader, Sales.SalesOrderDetail
SQL’i şöyle sağdan soldan biraz görmüş ve doğrudan sorgu yazmaya yetki verilmiş bir kullanıcı böyle bir sorgu yazmaya kalkabilir. Bu seviyeden biraz daha derin bir SQL bilginiz varsa, sorgunun bir cinayet olduğunu anlamışsınızdır. Ama önemli olan, olası etkisi.
AdventureWorks örnek veritabanı büyüklüğü 200 MB’ın altında bir veritabanıdır. Bu sorgu, bu veritabanın beş tablosu ile bir cross join’e sebep oluyor. 280 trilyondan fazla satır döndürüyor. Toplam veri büyüklüğü 200 petabyte. Yani 1024 kere 1024 GB. Bir yerlerde YouTube’un bir günde tüm dünyaya yaptığı yayının 2-3 petabyte civarında olduğunu okumuştum. İki satır sorguyla YouTube’un 100 günlük yayını kadar yük oluşturulmuş durumda.
Çalışan bir sistemde bu kadar büyük hatalı sorgular muhtemelen hemen fark edilir. Ama sık çalışan bir sürü sorgunuzda bu kadar vahim olmayan, ama sorgunun iş yükünü gereksiz yere yüzde yirmiler civarında artıran hatalar varsa ne olacak?
Kaçak sorgularınızı yakalayın, ve sorgulayın onları.