• Sonuç bulunamadı

Tablo 3.8. SQL Server görevler kontrol listesi

SQL Server Görev Doğrulama Listesi Cevaplar

Çalışan ama gereksiz olan bir görev var mı? Görevler üretim hareketsizliği süresince çalışmaları için zamanlanmışlar mıdır?

Aynı Server’daki görevler çakışmaktadırlar mı? SQL Server görevi olmayan ve çakışan herhangi bir görev var mı?

T-SQL çalıştıran görevler Optimize Edilmişler midir?

Görevlerin ne kadar çalıştıkları kontrol edildi mi?

Mevcut görevlerin alternatifleri var mıdır?

Her SQL Server sanal olarak bir veya daha fazla görevi günlük ve birçok görevi de haftalık olarak çalıştırabilir.

Herhangi bir uygulamanın SQL Server’ın optimizasyonunu olumsuz etkileyebileceği gibi, aynı durum görevler için de geçerlidir. Zayıf tasarlanmış kodları çalıştıran veya kötü zamanlarda çalıştırılan görevler SQL Server’a önemli bir engel koyabilirler. Bu yüzden, SQL Server’ın görevlerini optimizasyon denetimi olarak dâhil etmek önemlidir.

SQL Server optimizasyon denetiminin bu bölümünde, olası görevle ilgili optimizasyon konularının nasıl belirlenmesi ve düzeltilmesi üzerine odaklanılmıştır.

3.8.1. Çalışan görevlerin önem derecelerinin belirlenmesi

Görevler ilk defa çalıştırılıp zamanlandıktan sonra bir süreliğine takip edilirler. Eğer doğru çalışıyorlarsa bir süre sonra unutulurlar. Örneğin, rapor oluşturmak için geceleri çalışmak üzere bir görev oluşturulabilir ve birçok tablodan başka bir tabloya veri taşır. Fakat bu rapor daha fazla kullanılmayacaksa, bu görevin de daha fazla çalıştırılmasına gerek yoktur ve ek yükü azaltmak için kaldırılmalıdır. Problem ise, görev ve rapor arasında direkt olarak bir bağlantı yoktur, böylece rapor daha fazla kullanılmıyorsa görevin kaldırılması da kolayca unutulabilir.

Denetiminizin parçası olarak, her bir Server’da çalışan her bir görevi tekrar gözden geçirmek ve görevin gerçekten yararlı olup olmadığını belirlemek gerekir.

3.8.2. Görevlerin zamanlamalarının gözden geçirilmesi

SQL Server’da çalışan her bir görevi tekrar gözden geçirirken, ne zaman çalıştıklarını da yakından incelenmeli. Bir görevin özel bir zamanda çalışmasının gerekmediği varsayılarak, görevleri zamanlarken SQL Server’ın daha az yoğun olduğu zamanlar, duruma göre hafta sonları veya geceleri seçilmelidir.Yani genel olarak görevlerin çalışmaları için üretim ortamındaki SQL Serverın en hareketsiz olduğu zamanlar belirlenip o zamanlarda çalıştırılmalıdır.

3.8.3. Çakışan görevin olup olmadığının kontrol edilmesi

SQL Server’daki birçok aktiviteler için, görevlerin bir kerede tamamlanması yerine, olabildiğince zamana yayılması idealdir. Örneğin, SQL Server’da 10 veritabanı varsa ve

her biri için yedekleme görevleri oluşturulmuşsa, hepsini aynı zamanda çalıştırmak yerine, her birinin birer zamanda çalışmak üzere zamanlanması daha iyidir.

Enterprise Manager’dan bir görevin ne kadar çalışacağı görülebilse de, görevleri çakışmayacak şekilde biri diğerinden sonra çalışacak şekilde (her bir göreve tamamlanması için yeterli zamanı vererek) el ile zamanlamanın kolay bir yolu yoktur. Bu yapılabilir, fakat birçok görevli serverlar için hepsini görüntülemek için bir elektronik çizelge gerekebilir. Bir seçenek olarak, tüm görevlerin görsel olarak görülebilmesini ve yönetmesini sağlayan ve kritik görevlerin örtüşmeyeceğini garanti eden bir 3.parti program kullanılabilir. Örnek vermek gerekirse kullanımı kolay ve güvenilir olan SQL Sentry programı kullanılabilir.

3.8.4. SQL Server görevleri dışındaki zamanlanmış görevlerin incelenmesi

Server’daki SQL Server görevlerinin yanı sıra, SQL Server olmayan görevler de olabilir. Bunlara örnek olarak birleştirme içeren veya SQL Server zamanlayıcısını kullanmayan disk yedekleme görevleri verilebilir. Bunlar SQL Server zamanlayıcısını kullanmadıkları için, kolayca unutulabilir ve bu görevlerin bazılarının aynı zamanda çalışmasını durdurabilir. SQL Server görevleri için, bu görevler SQL Server görevlerinin çalışmadığı zamanlarda çalışmak üzere zamanlanabilirse ideal olur .

3.8.5. T-SQL çalıştıran görevlerin optimizasyonu

Uygulamalarda ve script’lerdeki kod gibi, bir görevin parçası olarak çalışan T-SQL’de optimum olmalıdır. Görev kodunun olabildiğince etkin çalışabilmesi için ilgili indeksleri de eklenmelidir.

Böylece T-SQL kodu içeren her görev için, çalışma planını görmek, olası problemlere bakabilmek için sorgu analizcisinde çalıştırmak gerekir . Ayrıca indeks sihirbazı ile optimizasyonu artırmak için olası yararlı indekslere bakılabilir.

3.8.6. Görevlerin çalışma sürelerinin belirlenmesi

Her bir ayrı görevin ne kadar çalıştığını gözlemlemek için Enterprise Manager kullanılabilir. Fakat farkında olunması gereken husus bir görevin farklı zamanlardaki çalışma sürelerinin farklı olabileceğidir. Örneğin, özel bir görevin çalışması normalde 2 dakika sürer, fakat haftada bir kez Pazar günleri aynı görevin çalışmasının 15 dakika sürebilir. Bir görevin çalıştırılmasında, zaman miktarındaki önemli değişiklikler bu görevle ve SQL Server’da çalışan diğer bir işlemle ilgili çakışma olduğunun bir işaretidir.

3.8.7. Görevlerin alternatiflerinin belirlenmesi

Sadece çalışan bir görevin olması, görevi başarıyla tamamlamanın en iyi yolu olduğu anlamına gelmez. Her bir görev ele alınıp aynı işi yapmanın daha iyi bir yolu olup olmadığı belirlenmelidir. Örneğin, T-SQL kodu yazmak, muhtemelen mevcut DTS paketini kullanmaktan daha etkin olacaktır. Bir diğer örnek, SQL Server tarafından çalıştırılan bir görev, onun yerine bir başka zamanlayıcı program tarafından yapılabilir. Hatırlanması gereken önemli nokta, mevcut görevlerin tek çözüm olmadıkları ve server ek yükünü azaltan daha iyi çözümlerin mevcut olabileceğidir [7]