St.AnGeR
Document Visor..
10.1. Performansı Etkileyen Faktörler
10.2. Performans Darlığını Ortaya Çıkarma
10.3. MS Event Viewer'ı Kullanma
10.4. SQL Server Current Activity Window'u Kullanma
10.5. SQL Server'ı Yönetmek için Transact-SQL'ş Kullanma
10.6. SQL Server Profiler'ı Kullanma
10.7. SQL Server Query Analyzer'ı Kullanma
10.8. Database Maintenance plan Task'larını Otomatikleştirme
10.9. Tavsiye edilen uygulamalar
SQL Server’I Denetlemek ve Korumak (Maintaining)
SQL Server Niçin Denetlenir
SQL Server’ın iyi çalışıp çalışmadığını belirlemek için, denetlenmeli.
SQL Server’I Denetlemenin Nedenleri
Veritabanı aktivitesini ve server performansını denetlemek için birincil hedefler, aşağıdakiler yapılarak sağlanır:
Düşük Performans Nedenini Belirleme
Performans, bir işlemi, CPU zamanlama miktarını, sistem yanıtlama zamanınını yürüten I/O miktarı kullanılarak ölçülebilir. Performans, belirli ortamlara uygun olan uyumu ve donanım konfigürasyonuna, yazılım ayarlarına, ve bireylerin SQL Server’I kullanımına olan bağlılığı değiştirebilir.
Yanıt zamanı, sonucun ilk row’unu döndürmek için gerekli olan zaman uzunluğudur.
Tüm Kullanıcılar için Bütün İşlemlerin ThroughPut’unu İnceleme
Throughput, client’a gönderilen row’ların boyutu ve sayısı ile birlikte verilen zaman periyodu sırasında, server tarafından tutulan sorguların sayısını ölçer.
Veri Uyumluluğunu İnceleme
Gerçek veri sayfaları ve indexleri gibi veritabanı yapıları da, zaman zararına uğrayabilir. Veritabanının mantıksal ve fiziksel uyumluluğunu kontrol etmek için Database Consistency Checker (DBCC) ifadesi kullanılabilir.
Performansı Etkileyen Faktörler
6 grupta incelenirler.
1. Server Donanımı
Server performansını etkileyen faktörler aşağıdakileri içerir.
· İşlemciler - işlemcilerin sayısı, performans hızını etkiler.
· Disk I/O – disklerin sayısı, kontrolörlerin tipi ve sayısı performansı etkiler.
· Bellek – tüm server işlemleri için yeterli RAM çok önemlidir.
2. İşletim Sistemi
İşletim sistemi performansını etkileyen faktörler aşağıdakileri içerir.
· Uyuşan WinNT servisleri ve aktiviteleri – Uyuşan servisler ve aktiviteler, SQL Server olarak aynı resource’lar için yarışırlar.
· Paging dosyaları – paging dosyalarının boyutu, sayısı, yeri sistem performansı üzerinde güçlü etkiye sahiptir.
· Disk yönetimi – çeşitli RAID seviyeleri, performans üzerinde pozitif veya negatif bir etkiye sahiptir.
3. Network
Network bağlantı hızı ve aktivitesi – uyuşan network aktivitesi, veri transfer oranı, performansı etkiler.
4. SQL Server
SQL Server’ın performansını etkileyen faktörler aşağıdakileri içerir.
· Konfigurasyon – bir çok kritik ayar, bellek yönetimini ve kullanıcı bağlantılarını içererek, SQL Server tarafından dinamik olarak yönetilir. Bu ayarları değiştirmek için bir sebep olmadıkça, SQL Server’ın kaynakları dinamik olarak yönetmesine izin verilir.
· Locking – veritabanı kaynakları için işlemleri bloke eder ve SQL Server performansını zıt olarak etkiler.
· Logging – Bilginin büyük bir kısmını transaction log’ yazma, performansı etkileyebilir.
· Uyuşan SQL Server aktiviteleri – veritabanını yedekleme, açma, DBCC işlemlerini çalıştırma, indexleri build etme, gibi aktiviteler, kaynakları kullanır ve SQL Server performansının yavaşlatır.
5. Veritabanı Application’ı
Veritabanı uygulamasının performansını etkileyen faktörler aşağıdakileri içerir.
· Mantıksal ve Fiziksel Dizayn – veritabanının normalizasyon seviyesi, sorgu perfoormansını etkileyebilir.
· İşlem kontrolü – bir uygulamanın kullandığı işlem kontrolünün seviyesi, lock’ların sayısını ve süresini belirler. Throughput’u etkiler.
· Uyuşmazlıklar – tekrar eden uyuşmazlıklar, bir uygulamayı yavaşlatabilir.
· Sorgular – sorgunun nasıl yazıldığı ve stored procedure’de bulunup bulunmadığı, çalışma zamanını etkileyebilir. Stored procedure’de bulunan sorgular, performansı daha da arttırırlar.
6. Client Application’ı
Client uygulamasının performansını etkileyen faktörler aşağıdakileri içerir.
· Kullanıcı istekleri – uyuşan kullanıcı sayısı ve bağlantısı, bağlantı kesme stratejileri SQL Server’ın belleği kullanmasını etkiler.
· İşlem kontrolü – locking uyuşmazlıklarını minimize etmek için performansı geliştirir.
· Uyuşmazlıkları kilitleyen Client yanıtı– çakışmaların oluşumu performansı etkilediği zaman, client’ın önerilen sorgularla ve veri değişikliği ifadeleriyle nasıl paylaştırdığını gösterir.
· Cursorlar – ne kadar verinin geri alındığı ve verinin nerede tutulduğu, kullanım ve yanıtlama zamanını etkiler.
Performans Darlığını Ortaya Çıkarma
Darlık (Bottleneck), performansı sınırlayan herhangi bir bileşen veya aktivitedir. Herbir sistemin bottleneckleri vardır, ama server denetiminin amaçlarından biri, performansı umulanın altına düşüren bottlenecklerin yerini öğrenmektir.
Neyin İnceleneceğine Karar Vermek
Client ve sorgu seviyesindeki issue’ları incelemeden önce, bottleneck kaynağını belirlemek için ilk olarak sistem seviyesindeki işlere bak. Örnek; disk ve bellek kullanımından dolayı oluşan sistem seviyesindeki bottleneckler, tüm uygulamaların çalışmasını etkiler. Temel bir sorgunun performansını incelemeden önce, disk thrashing gibi çözümler, yaralıdır.
Uygun Sırayı Bilme
Düzeltme tekniği olarak; Uygun sırayı bilme, problem alanlarını tanımlamada yardımcı olur. Düşük numaralar yüksek numaralar kadar anlamlı olabilir. Bir sayı, umulandan daha düşük veya daha yüksekse, bir problem var demektir. Örneğin;
¨ Bir bileşen, yüklemenin diğer bileşene ulaşmasını engeller.
¨ Network tıkanıklığı, client isteklerini server’a ulaşmadan engeller.
¨ Client’ların, server’a erişimlerini engelleyen bottleneck’leri vardır.
SQL Server Denetimi için Araçlar
SQL Server, server performansını denetleyen farklı araçlar içerir.
Ortak Denetleme Taskları
SQL server, performansı incelemek için farklı tool’lar sağlar. Bu tool’lar, kullanıcyı problemlerden uzak tutmak için gerekli olan detayları gösterir.
Amaç, performans üzerinde güçlü etkiye sahip faktörleri belirlemektir. Bu sınırlanmış faktör bottleneck olarak adlandırılır. Bottleneck’I izole etme, denetim işlemlerinin farklı adımlarını içerir.
Sistem Seviyesinde Denetleme
Çalıştırılması gerekli oloan task’ları, ele alabilen yeterli donanıma sahip olunduğundan emin olmak için, ilk olarak yüksek seviyeye bakmak gerekir.
Bu denetleme seviyesi için, Microsoft Event Viewer veya SQL Server Performance Monitor kullanılır.
SQL Server – Belirli Denetleme
q SQL Server aktivitesi. Locking miktarını, kullanıcı bağlantılarını, ve tempdb kullanımını denetle. Denetlemenin bu seviyesi için, SQL Server profiler’ı, SQL Server Current Activity penceresi, sistem stored procedure’leri, ve Transact-SQL ifadeleri kullanılır.
q Veri uyumluluğu. İç veri yapısının doğruluğundan emin olmak için DBCC ifadelerini kullan.
Belirli Sorgu Performansı
Sorguların performansını denetlemek için, belirli sorguları incele. Item’lar, index kullanımını, bir sorgu için CPU zamanını, ve gerçek I/O’yu içerir. Denetlemenin bu seviyesi için, SQL Server profiler, SQL Server Query Analyzer ve Index Query Wizard kullanılır.
Microsoft Event Viewer’I Kullanma
Performans bottleneck’lerine neden olan event’leri saptamak için, Microsoft Event Viewer kullanılır. Bu bilgi, incelenmesi istenen event’ları veya performans alanını belirlemek için kullanılabilir. Microsoft Event Viewer, aşağıdaki tabloda tanımlanmış hata, uyarı ve bilgi mesajları içeren event log’lara bakmaya izin verir.
Tip
Tanım
WinNT Application Log
SQL Server log’u gibi uygulamaları kaydeder. Örneğin; bir veritabanı uygulaması, application log’a bir dosya hatası kaydeder.
WinNT System Log
WinNT sistem bileşenlerinin log ettiği event’leri kaydeder. Örneğin; sürücü başarısızlığı veya diğer sistem bileşenleri, sistem loguna kaydedilir.
WinNT Security Log
Güvenlik event’lerini kaydeder. Örneğin; sisteme log olma girişimleri.
Event’ler, bu loglara yazılarak sistem performansının akışını keserler. Log dosyasının dolu olduğuna dair bir kaç log mesajı oluşabilir.
WinNT application log’u ayrıca, alert’ler, kapatmalar, başlatmalar, event’lar, düzeltmeler hakkında bilgi mesajlarını tutar.
Hata mesajaları tipe göre filtrelenerek, uygun bilginin yerini öğrenmede yardımcı olur.
Not: SQL Server mesajları için, SQL Server Enterprise Manager’daki SQl Server Error Log incelenebilir.
SQL Server Performance Monitor’u Kullanma
Aktivite bilgisi ve server’ın performans istatistiği denetleneceği zaman, SQL Server Performans Monitor kullanılır.
SQL Server Performansı Monitor, server aktivitelerini incelemek için kullanılır.
WinNT Performans Monitor’ündeki SQL Server Specific Counters
SQL Server Performans Monitor’ü, SQL Server’a özgü olan predefined counter’ları gösteren WinNT Performans Monitor’üdür. Bu counter’lar .pmc uzantılı bir dosyaya kaydedilir. SQL Server kurulduğu zaman, SQL Server Setup, SQL Server için otomatik olarak performans nesneleri sağlar.
Uygun Güvenlik
Server WinNT authentication’ı kullanırsa, system administrators (sysadmin) rol üyesinden sadece biri, SQL Server Performance Monitor’u kullanabilir.
Denetlemek için Kullanılan Counter’lar
WinNT counter’ları kadar iyi olan, SQL Server counter’larından istatistikleri, göstermek için SQL Server Performance Monitor konfigüre edilebilir.
Predefined Counters
SQL Server Performance Monitor başlatıldığı zaman, bu (SQL Server Performance Monitor) predefined SQL Server counter’larını denetler.
SQL Server Counters
Aşağıdaki tabloda, server’ı denetlemek için kullanılan SQL Server Counters gösterilmiştir.
Counter
Tanım
SQL Server:Buffer Manager\Cache
Hit Ratio
Bir isteğin (diskten okumak yerine) cache’de bulunmasının yüzdelik zamanı
SQL Server: Database Manager\Active
Transactions
Veritabanı için aktif işlemlerin sayısı
SQL Server: Database Manager\Percent
Log Used\database
Kullanımda olan log’un alan yüzdesi
SQL Server: Block IO\Page Reads
Yayınlanan veritabanı sayfalarının sayısı
SQL Server:Access Methods\Full Scans
Sınırlanmamış full scan’lerin sayısı. Bunlar temel tablolar veya dolu index scan’leri olabilir.
SQL Server: Access Methods\Index Searches
İndex search’lerinin sayısı. İndex scan’ler, bir index’teki range scan’leri, fetch single record’ları ve reposition node’ları başlatmak için kullanılır.
SQL Server: Lock Manager\Lock Blocks
Server’da kullanılan lock’ların sayısı
SQL Server: Locks\Number of Deadlocks
Çözümsüzlükle sonuçlanan lock isteklerinin sayısı
WinNT Counters
Aşağıdaki tabloda, denetlemek için kullanılan WinNT Counters gösterilmiştir.
Counter
Tanım
Memory/Pages Per second
Diskten okunacak yada diske yazılacak sayfaların sayısı; çünkü bellekte veri yok
Memory/Page faults Per second
İşlemcideki sayfa hatalarının sayısı
Memory/Page input Per second
Bellekte veri olmamasından dolayı diskten okunan sayfaların sayısı
Process/Page faults Per second /SQL Server
SQL Server tarafından oluşturulan sayfa hatalarının oranı
Processor/%processor time
Yararlı bir thread’i çalıştırmakla meşgul olduğu yüzdelik zaman
Processor/%processor time/SQL Server
SQL Server işlemlerinin işlemciyi kullanma zamanı
Kullanıcı Tanımlı Counter’lar
Ayrıca 10 countera kadar yaratılabilir. SQL Server Kullanıcı tanımlı counterlar nesnesi, SQL User Counter1’den 10’a kadar içerir. Kullanıcılar, bu counter’lara değerler tanımlayabilir. Bir counter, SQL Server tarafından döndürülen her hangi bir bilgiyi veya, SQL Server’ın yaptığı herhangi bir işlemi stored procedure’ları çalıştırma gibi denetleyebilir.
SQL Server Current Activity Window’u Kullanma
SQL Server Current Activity Window, genel kullanıcı bağlantıları ve kilitlenmeleri hakkındaki grafiksel bilgileri incelemek için kullanılır. Bu incelemeyi yaparken işlem numarasını, durumunu, kilitlerini ve aktif kullanıcıların çalıştırdığı ifadeleri görür. Kilitlenmiş nesneleri ve kilitlerin çeşitlerini belirlemek için kullanılır.
SQL Server Active Processes
SQL Server Current Activity Window, geçerli açık bağlantılar hakkındaki bilgiyi gösterir. Şu anda kimin bağlandığı görülebilir ve çalıştırdıkları son ifade incelenebilir.
Locks, Blocking ve Deadlocks
Eş zamanlı işlemleri engellemek için, SQL Server, lock’ları veri sayfalarına veya konu ile ilgili tablolara yerleştirir. Lockların tipi, değişim tipine veya belirli konuma bağlıdır.
Paylaşılmayan (Exclusive) lock’lar, UPDATE, INSERT, DELETE veri değiştirme işlemleri için kullanılır. Paylaşılmayan lock’lar, ek kullanıcıların veriye erişimini engelleyerek, işlem sonuna kadar tutulur. Paylaşılan (Shared) lock’lar, okuma işlemleri için kullanılır. HOLDLOCK anahtar kelimesi, paylaşılan lock’u işlem sonuna kadar tutar.
İki işlemin farklı nesneler üzerinde bir lock’u varsa ve herbir işlem, başka işlemdeki nesneye erişmek istiyorsa, Deadlock meydana gelir. SQL Server, bu durumları ortaya çıkarır ve işlemlerden birini kurban olarak seçer. Seçilen işlem, bir hata mesajı alır ve yok edilir. Veritabanı değişiklikleri geri döndürülür.
İşlemleri ve Lock’ları Yönetme
Bir sistem yöneticisi, seçilen işlemler hakkındaki ek bilgileri inceleyebilir, seçilen kullanıcıya mesaj gönderebilir veya seçilen işlemi sona erdirebilir.
SQL Server’ı Yönetmek için Transact-SQL’i Kullanma
SQL Server’ı yönetmek için farklı Transact-SQL ifadeleri kullanılabilir.
Sistem Stored procedure
Veritabanı veya server hakkındaki istatistikleri veya bilgiyi görebilmek için kullanılan stored procedure’lar aşağıda tanımlanmıştır.
Sistem Stored Procedure
Raporlama
Sp_who
Geçerli SQL Server kullanıcıları ve işlemleri hakkındaki bilgiyi raporlar
Sp_lock
Aktif lock’lar hakkındaki bilgiyi raporlar
Sp_spaceused
Bir tablo veya veritabanının kullandığı disk miktarı hakkındaki bilgiyi raporlar
Sp_helpdb
Veritabanları ve nesneleri hakkındaki bilgiyi raporlar
Sp_monitor
SQL Server istatistikleri hakkındaki tüm bilgiyi raporlar
Sp_helpindex
Tablodaki indexler hakkındaki bilgiyi raporlar
Sp_statistics
Belirli bir tablo üzerindeki tüm indexler hakkındaki bilgiyi raporlar
Global Variables
Sorgulanan bilgiyi veya istatistikleri elde etmek için kullanılır.
Global Variable
Amaç
@@connections
Loginlerin veya SQL Server en son başlatıldığından beri yapılan loginlerin sayısını içerir.
@@error
Çalıştırılan son Transact-SQL ifadesi için hata numarası içerir.
@@options
Sp_configure kullanılarak değiştirilen SET seçenekleri hakkında bilgi içerir.
@@spid
Kullanıcı işleminin server process ID’sini içerir. Bu ID kullanıcı işlemini tanımlamak için kullanılır.
@@procid
Geçerli Procedure’ün stored procedure ID’sini içerir.
Transact-SQL İfadeleri
Text tabanlı sorgu yürütme planını göstermek için veya istatistikleri göstermek için aşağıdaki Transact-SQL İfadeleri kullanılır.
Statement
Tanım
Set statistics IO
Transact-SQL ifadelerinin oluşturduğu disk aktivite miktarı ile ilgili bilgiyi gösterir.
Set statistics time
Bir ifadeyi derlemek ve çalıştırmak için gerekli olan milisaniyelerin sayısını gösterir.
Set showplan_text on/off
SQL Server’ın sorguyu çalıştıramamasına neden olur.
DBCC İfadeleri
Aktivite ve performansı kontrol etmek için DBCC ifadeleri kullanılır.
Aşağıdaki DBCC ifadeleri kullanılarak performans denetlenebilir.
DBCC Statement
Raporlar
MEMUSAGE
Bellek kullanımı hakkındaki bilgiyi raporlar. Buffer ve procedure cache’lerindeki nesneler tarafından kullanılan bellek miktarını sağlar.
SQLPERF
Server son başlatıldığından beri istatistikler hakkındaki bilgiyi raporlar. Tüm veritabanlarındaki (LOGSPACE), disk I/O’daki (IOSTATS), bellek ve cache kullanımındaki (LRUSTATS), ve network aktivitelerindeki (NETSTATS), transaction log alanın kullanımı üzerine bilgi elde etmek için bu ayar yapılmalı.
PERFMON
Server üzerindeki performans istatistikleri hakkındaki bilgiyi raporlar
OPENTRAN
En eski aktif işlem hakkındaki bilgiyi raporlar. Aktif bir işlem varsa veya veritabanı kopyalama bilgisi içeriyorsa, sonuçlar gösterilir.
SHOW_STATISTICS
Seçilmiş bir index hakkındaki bilgiyi raporlar.
CHECKDB
Veritabanındaki tüm nesnelerin allocation’I ve yapısal uyumu hakkındaki bilgiyi raporlar.
Checkfilegroup
Filegrup’taki tüm tabloların allocation’I ve yapısal uyumu hakkındaki bilgiyi raporlar.
Newalloc
Her bir tablo için veri ve index sayfalarının allocation’I hakkında bilgi raporlar.
Checktable
Belirlenmiş tablo için veri, index, text, ntext, ve image sayfalarının uyumu hakkındaki bilgiyi raporlar.
Trace Flags
Belirli server karakteristiklerini ayarlamak için kullanılır, ama ayrıca performans issue’larını teşhis etmek için ve sorguları ve sistem stored procedure’leri debug etmek için kullanılır. DBCC TRACEON ifadesiyle trace flag’ler ayarlanabilir ve DBCC TRACEOFF ifadesiyle etkisiz hale getirilebilir.
SQL Server Profiler’ı Kullanma
SQL Server Profiler, login, kullanıcı, ve uygulama aktivitesi içeren, server ve veritabanı aktivitesinin denetlenmesini sağlar. Ayrıca veri, bir tabloda, dosyada veya SQL script’te tutulabilir.
Geçerli Server Aktivitesini Denetleme
SQL Server Profiler’ı kullanmak için, ilk olarak niçin denetleme yapılacağına karar verilmesi ve daha sonra denetleme kriterinin seçilmesi gerekir. Trace’ler, public (tüm bilgisayar kullanıcılarına uygun) veya özel (trace’i tanımlayan kullanıcıya uygun) olabilir.
Event’lar hakkında bilgi tutulabilir ve daha sonra bilgi anlamlı olarak filtrelenir ve gruplanır. Zaten sadece anlamlı veri tutulabilir. Denetlenmesi istenen birkaç event, aşağıdakileri içerir:
· İcra edilen sorguları
· Table scan’lere neden olan sorguları
· Kullanıcıların veya uygulamaların aktivitelerini
· Deadlock problemleri
· Login girişimlerini, başarısızlıklarını, bağlantılarını, bağlantı kopukluklarını
· Mantıksal diski okuma ve yazmayı
· Statement seviyesindeki CPU kullanımını
· Hata severity level’ları
· Tüm çalışan event’lar için bekleme zamanını
Real-Time Sonucunu Tutma
Server aktivitelerinin sonuçları denetlenebilir.
Veriyi Bir Dosyada Tutmak
Trace bilgisini kaydetme aşağıdakileri yapmaya izin verir.
¨ Server’a karşı aktiviteyi tekrarlamaya
¨ Event aktivitesinin ek filtrelemelerini analiz etmeye ve icra etmeye
¨ Index Tuning Wizard ile kullanmak için bir yükleme (load) dosyası sağlamaya
¨ SQL batch’lerini, stored procedure’leri ve bir uygulamayı denetlemek için remote procedure call’leri (RPCs) çalıştırmaya
SQL Server Query Analyzer’ı Kullanma
SQL Server Query Analyzer, belirli bir sorgu üzerindeki bilgyi toplayan denetleme aracı olarak kullanılır.
Grafiksel Çalışma Planını Gösterme
SQL Server Query Analyzer’daki, Display Execution Plan click’lendiği zaman, sorguyu çalıştırmadan, plan panosundaki çalışma planını sanal olarak gösterir. Herbir icon, sorgu planındaki bir step’I temsil eder. Çalışma planı aşağıdakileri içerir.
q Hangi indexlerin kullanıldığını
q Yapılan erişim metodlarının tipini (table scan gibi)
q I/O work
q Sorguyu tamamlaması için gerekli olan CPU zamanını
Run Query Analysis aracı, index’leri yaratmak için Transact-SQL ifadelerini oluşturur.
Flight Recorder’I Kullanma
SQL Server Flight Recorder isimli bir araç içerir. Flight Recorder, bir SQL Server başarısızlığını düzeltmek için kullanılır. Flight Recorder, son 100 performans işlemlerini depolayan bir buffer’dır.
Hataların Nedenini Belirleme
En yeni 100 performans işlemleri, blackbox.trc trace dosyasına kaydedilir. Flight Recorder’ın trace dosyasındaki bilgi kullanılarak, event’ler yoluyla server crash’e ulaşılabilir ve hatalar yüzünden oluşan event’ler incelenebilir.
Xp_trace_setqueryhistory ile Çalıştırma
Flight Recorder’I açmak için, xp_trace_setqueryhistory extended stored procedure’I çalıştırmak gerekir.
Syntax EXECUTE xp_trace_setqueryhistory (0 | 1)
Örnek: Aşağıdaki örnek Flight Recorder’I açar.
EXECUTE xp_trace_setqueryhistory 1
SQL Server Profiler ile Dosyayı İnceleme
SQL Server Profiler ile blackbox.trc dosyası açılabilir. Trace dosyası, event (event class’I içererek), çalıştırılan Transact-SQL, event’tan sorumlu client, kullanıcı ve server ismi hakkındaki bilgiyi gösterir. Ayrıca konu ile ilgili hata mesajlarını gösterir. SQL Server’ın, SQL ServerProfiler’daki dosyayı incelemek için, SQL Server’ın çalışma zorunluluğu yoktur.
Note: Flight Recorder’ın SQL Server performansı üzerinde çok az bir etkisi vardır yada hiç bir etkisi yoktur.
SQL Server’I Denetleme
Veritabanını dentlemek için, elle yada otomatik olarak farklı task’ları yerine getirmek gerekir. Bu task’ler, database maintenance plan’I oluşturur. Task’ler aşağıdakileri içerir:
v Veri optimizasyonu hakkındaki bilgiyi güncelleme
v Veri uyumluluğunu doğrulama
v Yedekleri alma
v Veritabanı maintenance history’yi ve raporlarını yaratma
Bu task’ler elle yapılabilir veya Database Maintenance Plan Wizard ile database maintenance planı kurulabilir ve tasarlanabilir.
Database Maintenance Planı Geliştirme
Farklı task’ler, veritabanını denetlemede yardımcı olur. Bu task’ler düzenli olarak çalıştırılmak için tasarlanmıştır.
Veri optimizasyonu hakkındaki bilgiyi güncelleme
Veri ve index sayfaları doldurulduğunda, güncelleme işlemi, uzun zamanda gerçekleşir ve sayfalar parçalanabilir. Veriyi ve index sayfalarını yeniden düzenleme, performansı geliştirebilir.
Fillfactor seçeneği kullanılarak index’leri denetleme
Uygun boş alanın (fillfactor) yüzdesi index ve veri sayfalarındaki belirtilebilir. Fillfactor yüzdesi, sadece, index ilk yaratıldığı zaman kullanılır. Bir yüzde belirtilebilir veya SQL Server’ın otomatik olarak en uygun değeri seçmesine izin verilebilir.
Sorgu Optimizer’I tarafından kullanılan istatistikleri güncelleme
Bir tablodaki bir yada daha fazla index için, anahtar değer hakkındaki bilgiyi güncellemek için UPDATE STATISTICS çalıştırılabilir.
Veritabanı dosyalarından kullanılmayan alanı kaldırma
Veritabanı tablolarındaki kullanılmayan disk alanını geri almak için DBCC SHRINKDATABASE çalıştırılabilir. Ayrıca veritabanı dosyalarındaki autoshrink seçeneği etkin hale getirilebilir.
Veri Uyumunu doğrulama
Veri uyumu testleri, donanım ve yazılım hatalarına neden olan veritabanındaki uyumsuzluğu ortaya çıkarır.
İçsel veri uyumu testlerini icra etme
Herbir tablo için veri ve index sayfalarının tahsisini denetlemek için DBCC CHECKALLOC çalıştırılır.
Veri uyumluluk testlerini icra etme
Veritabanındaki nesnelerin allocation’I ve yapısal uyumluluğunu kontrol etmek için DBCC CHECKDB çalıştırılır. Bir tablo için veri, index, ve text, index sayfalarının uyumluluğunu kontrol etmek için DBCC CHECKTABLE çalıştırılır. DBCC bir hata bulursa, hatayı otomatik olarak onarır.
Yedekleri Alma
Veri kaybına karşı düzenli olarak yedekler alınmalı. Full veritabanı yedekleri arasındaki değişiklikleri tutmak için transaction log’lar yedeklenmeli.
Maintenance History’yi Denetleme
Maintenance task’larının history’sini denetler. Bu history, hangi işlemlerin yapıldığını içerir.
Database Maintenance Plan Task’larını Otomatikleştirme
Database Maintenance Plan Wizard veya sqlmaint utility’si kullanılarak, düzenli olarak çalışan database maintenance planı otomatikleştirilebilir.
Database Maintenance Plan Wizard
Database Maintenance Plan Wizard, veritabanının iyi çalıştığını garanti altına almak için gerekli olan, maintenance task’lerini kurmaya yardımcı olabilir. Ayrıca sistem başarısızlıklarında düzenli olarak yedeklenir ve uyumsuzluklar için kontrol edilir. Wizard çalıştırıldığı zaman, aşağıdakiler belirtilmeli:
Maintain’ları Planlayan Veritabanları
Tüm veritabanları için, tek bir maintenance planı veya bir yada daha fazla veritabanları için maintenance planları tanımlanabilir.
Veri Doğrulama Testleri
Wizard, veriyi bozmayan sistem ve yazılım problemlerini sağlama almak için veri ve veri sayfalarının içsel uyum kontrollerini yerine getirir.
Veri Optimizasyon Bilgisi
Wizard, sorgu optimizer’ının tablolardaki veri genişliğine ilişkin, geçerli bilgiye sahip olduğunu garanti altına almak için, index istatistiklerini günceller. Wizard, ayrıca boş veritabanı sayfalarını kaldırarak, veri dosyalarını sıkıştırabilir.
Yedeklerin Sıklığı ve Gideceği Yer
Veritabanı ve transaction log yedekleri tasarlanabilir ve belirlenmiş bir zamana göre yedek dosyaları saklanabilir.
History Dosyalarının Konumu
Maintenance task’ların oluşturduğu sonuçlar, text dosyasına, HTML dosyasına veya history tablolarına bir rapor olarak yazılabilir veya e-mail mesajı olarak gönderilebilir.
Sqlmaint Utility
Sqlmaint utility’si, DBCC ifadelerini çalıştırmak için, veritabanını ve transaction log’ları dump etmek için, istatistikleri güncellemek için, ve indexleri rebuild etmek için kullanılır. Bu command-prompt utility, Database Maintenance Plan Wizard ile aynı işlemleri yapar.
Tavsiye Edilen Uygulamalar
Aşağıdaki tavsiye edilen uyugulamalar, server’I denetlemede yardımcı olur:
Bir performans baseline’I kurma. Sistem trafiği ağırlaştığında ve performans düşüklüğü saptandığında, sistemi denetlemek için bir zaman periyodu belirlenebilir.
Asıl performansı denetleme. Sistemi denetlemek için uygun bir araç seç. Baseline istatistikleri ile server performansını karşılaştır.
Performans bottleneck’lerini saptama. İlk olarak yüksek seviyeli (donanım ve işletim sistemi sınırlamaları gibi) işlere bakan, denetleme stratejisini kullan ve sonra SQL Server – specific issue’lardan, spesifik query performansa daralt.
10.2. Performans Darlığını Ortaya Çıkarma
10.3. MS Event Viewer'ı Kullanma
10.4. SQL Server Current Activity Window'u Kullanma
10.5. SQL Server'ı Yönetmek için Transact-SQL'ş Kullanma
10.6. SQL Server Profiler'ı Kullanma
10.7. SQL Server Query Analyzer'ı Kullanma
10.8. Database Maintenance plan Task'larını Otomatikleştirme
10.9. Tavsiye edilen uygulamalar
SQL Server’I Denetlemek ve Korumak (Maintaining)
SQL Server Niçin Denetlenir
SQL Server’ın iyi çalışıp çalışmadığını belirlemek için, denetlenmeli.
SQL Server’I Denetlemenin Nedenleri
Veritabanı aktivitesini ve server performansını denetlemek için birincil hedefler, aşağıdakiler yapılarak sağlanır:
Düşük Performans Nedenini Belirleme
Performans, bir işlemi, CPU zamanlama miktarını, sistem yanıtlama zamanınını yürüten I/O miktarı kullanılarak ölçülebilir. Performans, belirli ortamlara uygun olan uyumu ve donanım konfigürasyonuna, yazılım ayarlarına, ve bireylerin SQL Server’I kullanımına olan bağlılığı değiştirebilir.
Yanıt zamanı, sonucun ilk row’unu döndürmek için gerekli olan zaman uzunluğudur.
Tüm Kullanıcılar için Bütün İşlemlerin ThroughPut’unu İnceleme
Throughput, client’a gönderilen row’ların boyutu ve sayısı ile birlikte verilen zaman periyodu sırasında, server tarafından tutulan sorguların sayısını ölçer.
Veri Uyumluluğunu İnceleme
Gerçek veri sayfaları ve indexleri gibi veritabanı yapıları da, zaman zararına uğrayabilir. Veritabanının mantıksal ve fiziksel uyumluluğunu kontrol etmek için Database Consistency Checker (DBCC) ifadesi kullanılabilir.
Performansı Etkileyen Faktörler
6 grupta incelenirler.
1. Server Donanımı
Server performansını etkileyen faktörler aşağıdakileri içerir.
· İşlemciler - işlemcilerin sayısı, performans hızını etkiler.
· Disk I/O – disklerin sayısı, kontrolörlerin tipi ve sayısı performansı etkiler.
· Bellek – tüm server işlemleri için yeterli RAM çok önemlidir.
2. İşletim Sistemi
İşletim sistemi performansını etkileyen faktörler aşağıdakileri içerir.
· Uyuşan WinNT servisleri ve aktiviteleri – Uyuşan servisler ve aktiviteler, SQL Server olarak aynı resource’lar için yarışırlar.
· Paging dosyaları – paging dosyalarının boyutu, sayısı, yeri sistem performansı üzerinde güçlü etkiye sahiptir.
· Disk yönetimi – çeşitli RAID seviyeleri, performans üzerinde pozitif veya negatif bir etkiye sahiptir.
3. Network
Network bağlantı hızı ve aktivitesi – uyuşan network aktivitesi, veri transfer oranı, performansı etkiler.
4. SQL Server
SQL Server’ın performansını etkileyen faktörler aşağıdakileri içerir.
· Konfigurasyon – bir çok kritik ayar, bellek yönetimini ve kullanıcı bağlantılarını içererek, SQL Server tarafından dinamik olarak yönetilir. Bu ayarları değiştirmek için bir sebep olmadıkça, SQL Server’ın kaynakları dinamik olarak yönetmesine izin verilir.
· Locking – veritabanı kaynakları için işlemleri bloke eder ve SQL Server performansını zıt olarak etkiler.
· Logging – Bilginin büyük bir kısmını transaction log’ yazma, performansı etkileyebilir.
· Uyuşan SQL Server aktiviteleri – veritabanını yedekleme, açma, DBCC işlemlerini çalıştırma, indexleri build etme, gibi aktiviteler, kaynakları kullanır ve SQL Server performansının yavaşlatır.
5. Veritabanı Application’ı
Veritabanı uygulamasının performansını etkileyen faktörler aşağıdakileri içerir.
· Mantıksal ve Fiziksel Dizayn – veritabanının normalizasyon seviyesi, sorgu perfoormansını etkileyebilir.
· İşlem kontrolü – bir uygulamanın kullandığı işlem kontrolünün seviyesi, lock’ların sayısını ve süresini belirler. Throughput’u etkiler.
· Uyuşmazlıklar – tekrar eden uyuşmazlıklar, bir uygulamayı yavaşlatabilir.
· Sorgular – sorgunun nasıl yazıldığı ve stored procedure’de bulunup bulunmadığı, çalışma zamanını etkileyebilir. Stored procedure’de bulunan sorgular, performansı daha da arttırırlar.
6. Client Application’ı
Client uygulamasının performansını etkileyen faktörler aşağıdakileri içerir.
· Kullanıcı istekleri – uyuşan kullanıcı sayısı ve bağlantısı, bağlantı kesme stratejileri SQL Server’ın belleği kullanmasını etkiler.
· İşlem kontrolü – locking uyuşmazlıklarını minimize etmek için performansı geliştirir.
· Uyuşmazlıkları kilitleyen Client yanıtı– çakışmaların oluşumu performansı etkilediği zaman, client’ın önerilen sorgularla ve veri değişikliği ifadeleriyle nasıl paylaştırdığını gösterir.
· Cursorlar – ne kadar verinin geri alındığı ve verinin nerede tutulduğu, kullanım ve yanıtlama zamanını etkiler.
Performans Darlığını Ortaya Çıkarma
Darlık (Bottleneck), performansı sınırlayan herhangi bir bileşen veya aktivitedir. Herbir sistemin bottleneckleri vardır, ama server denetiminin amaçlarından biri, performansı umulanın altına düşüren bottlenecklerin yerini öğrenmektir.
Neyin İnceleneceğine Karar Vermek
Client ve sorgu seviyesindeki issue’ları incelemeden önce, bottleneck kaynağını belirlemek için ilk olarak sistem seviyesindeki işlere bak. Örnek; disk ve bellek kullanımından dolayı oluşan sistem seviyesindeki bottleneckler, tüm uygulamaların çalışmasını etkiler. Temel bir sorgunun performansını incelemeden önce, disk thrashing gibi çözümler, yaralıdır.
Uygun Sırayı Bilme
Düzeltme tekniği olarak; Uygun sırayı bilme, problem alanlarını tanımlamada yardımcı olur. Düşük numaralar yüksek numaralar kadar anlamlı olabilir. Bir sayı, umulandan daha düşük veya daha yüksekse, bir problem var demektir. Örneğin;
¨ Bir bileşen, yüklemenin diğer bileşene ulaşmasını engeller.
¨ Network tıkanıklığı, client isteklerini server’a ulaşmadan engeller.
¨ Client’ların, server’a erişimlerini engelleyen bottleneck’leri vardır.
SQL Server Denetimi için Araçlar
SQL Server, server performansını denetleyen farklı araçlar içerir.
Ortak Denetleme Taskları
SQL server, performansı incelemek için farklı tool’lar sağlar. Bu tool’lar, kullanıcyı problemlerden uzak tutmak için gerekli olan detayları gösterir.
Amaç, performans üzerinde güçlü etkiye sahip faktörleri belirlemektir. Bu sınırlanmış faktör bottleneck olarak adlandırılır. Bottleneck’I izole etme, denetim işlemlerinin farklı adımlarını içerir.
Sistem Seviyesinde Denetleme
Çalıştırılması gerekli oloan task’ları, ele alabilen yeterli donanıma sahip olunduğundan emin olmak için, ilk olarak yüksek seviyeye bakmak gerekir.
Bu denetleme seviyesi için, Microsoft Event Viewer veya SQL Server Performance Monitor kullanılır.
SQL Server – Belirli Denetleme
q SQL Server aktivitesi. Locking miktarını, kullanıcı bağlantılarını, ve tempdb kullanımını denetle. Denetlemenin bu seviyesi için, SQL Server profiler’ı, SQL Server Current Activity penceresi, sistem stored procedure’leri, ve Transact-SQL ifadeleri kullanılır.
q Veri uyumluluğu. İç veri yapısının doğruluğundan emin olmak için DBCC ifadelerini kullan.
Belirli Sorgu Performansı
Sorguların performansını denetlemek için, belirli sorguları incele. Item’lar, index kullanımını, bir sorgu için CPU zamanını, ve gerçek I/O’yu içerir. Denetlemenin bu seviyesi için, SQL Server profiler, SQL Server Query Analyzer ve Index Query Wizard kullanılır.
Microsoft Event Viewer’I Kullanma
Performans bottleneck’lerine neden olan event’leri saptamak için, Microsoft Event Viewer kullanılır. Bu bilgi, incelenmesi istenen event’ları veya performans alanını belirlemek için kullanılabilir. Microsoft Event Viewer, aşağıdaki tabloda tanımlanmış hata, uyarı ve bilgi mesajları içeren event log’lara bakmaya izin verir.
Tip
Tanım
WinNT Application Log
SQL Server log’u gibi uygulamaları kaydeder. Örneğin; bir veritabanı uygulaması, application log’a bir dosya hatası kaydeder.
WinNT System Log
WinNT sistem bileşenlerinin log ettiği event’leri kaydeder. Örneğin; sürücü başarısızlığı veya diğer sistem bileşenleri, sistem loguna kaydedilir.
WinNT Security Log
Güvenlik event’lerini kaydeder. Örneğin; sisteme log olma girişimleri.
Event’ler, bu loglara yazılarak sistem performansının akışını keserler. Log dosyasının dolu olduğuna dair bir kaç log mesajı oluşabilir.
WinNT application log’u ayrıca, alert’ler, kapatmalar, başlatmalar, event’lar, düzeltmeler hakkında bilgi mesajlarını tutar.
Hata mesajaları tipe göre filtrelenerek, uygun bilginin yerini öğrenmede yardımcı olur.
Not: SQL Server mesajları için, SQL Server Enterprise Manager’daki SQl Server Error Log incelenebilir.
SQL Server Performance Monitor’u Kullanma
Aktivite bilgisi ve server’ın performans istatistiği denetleneceği zaman, SQL Server Performans Monitor kullanılır.
SQL Server Performansı Monitor, server aktivitelerini incelemek için kullanılır.
WinNT Performans Monitor’ündeki SQL Server Specific Counters
SQL Server Performans Monitor’ü, SQL Server’a özgü olan predefined counter’ları gösteren WinNT Performans Monitor’üdür. Bu counter’lar .pmc uzantılı bir dosyaya kaydedilir. SQL Server kurulduğu zaman, SQL Server Setup, SQL Server için otomatik olarak performans nesneleri sağlar.
Uygun Güvenlik
Server WinNT authentication’ı kullanırsa, system administrators (sysadmin) rol üyesinden sadece biri, SQL Server Performance Monitor’u kullanabilir.
Denetlemek için Kullanılan Counter’lar
WinNT counter’ları kadar iyi olan, SQL Server counter’larından istatistikleri, göstermek için SQL Server Performance Monitor konfigüre edilebilir.
Predefined Counters
SQL Server Performance Monitor başlatıldığı zaman, bu (SQL Server Performance Monitor) predefined SQL Server counter’larını denetler.
SQL Server Counters
Aşağıdaki tabloda, server’ı denetlemek için kullanılan SQL Server Counters gösterilmiştir.
Counter
Tanım
SQL Server:Buffer Manager\Cache
Hit Ratio
Bir isteğin (diskten okumak yerine) cache’de bulunmasının yüzdelik zamanı
SQL Server: Database Manager\Active
Transactions
Veritabanı için aktif işlemlerin sayısı
SQL Server: Database Manager\Percent
Log Used\database
Kullanımda olan log’un alan yüzdesi
SQL Server: Block IO\Page Reads
Yayınlanan veritabanı sayfalarının sayısı
SQL Server:Access Methods\Full Scans
Sınırlanmamış full scan’lerin sayısı. Bunlar temel tablolar veya dolu index scan’leri olabilir.
SQL Server: Access Methods\Index Searches
İndex search’lerinin sayısı. İndex scan’ler, bir index’teki range scan’leri, fetch single record’ları ve reposition node’ları başlatmak için kullanılır.
SQL Server: Lock Manager\Lock Blocks
Server’da kullanılan lock’ların sayısı
SQL Server: Locks\Number of Deadlocks
Çözümsüzlükle sonuçlanan lock isteklerinin sayısı
WinNT Counters
Aşağıdaki tabloda, denetlemek için kullanılan WinNT Counters gösterilmiştir.
Counter
Tanım
Memory/Pages Per second
Diskten okunacak yada diske yazılacak sayfaların sayısı; çünkü bellekte veri yok
Memory/Page faults Per second
İşlemcideki sayfa hatalarının sayısı
Memory/Page input Per second
Bellekte veri olmamasından dolayı diskten okunan sayfaların sayısı
Process/Page faults Per second /SQL Server
SQL Server tarafından oluşturulan sayfa hatalarının oranı
Processor/%processor time
Yararlı bir thread’i çalıştırmakla meşgul olduğu yüzdelik zaman
Processor/%processor time/SQL Server
SQL Server işlemlerinin işlemciyi kullanma zamanı
Kullanıcı Tanımlı Counter’lar
Ayrıca 10 countera kadar yaratılabilir. SQL Server Kullanıcı tanımlı counterlar nesnesi, SQL User Counter1’den 10’a kadar içerir. Kullanıcılar, bu counter’lara değerler tanımlayabilir. Bir counter, SQL Server tarafından döndürülen her hangi bir bilgiyi veya, SQL Server’ın yaptığı herhangi bir işlemi stored procedure’ları çalıştırma gibi denetleyebilir.
SQL Server Current Activity Window’u Kullanma
SQL Server Current Activity Window, genel kullanıcı bağlantıları ve kilitlenmeleri hakkındaki grafiksel bilgileri incelemek için kullanılır. Bu incelemeyi yaparken işlem numarasını, durumunu, kilitlerini ve aktif kullanıcıların çalıştırdığı ifadeleri görür. Kilitlenmiş nesneleri ve kilitlerin çeşitlerini belirlemek için kullanılır.
SQL Server Active Processes
SQL Server Current Activity Window, geçerli açık bağlantılar hakkındaki bilgiyi gösterir. Şu anda kimin bağlandığı görülebilir ve çalıştırdıkları son ifade incelenebilir.
Locks, Blocking ve Deadlocks
Eş zamanlı işlemleri engellemek için, SQL Server, lock’ları veri sayfalarına veya konu ile ilgili tablolara yerleştirir. Lockların tipi, değişim tipine veya belirli konuma bağlıdır.
Paylaşılmayan (Exclusive) lock’lar, UPDATE, INSERT, DELETE veri değiştirme işlemleri için kullanılır. Paylaşılmayan lock’lar, ek kullanıcıların veriye erişimini engelleyerek, işlem sonuna kadar tutulur. Paylaşılan (Shared) lock’lar, okuma işlemleri için kullanılır. HOLDLOCK anahtar kelimesi, paylaşılan lock’u işlem sonuna kadar tutar.
İki işlemin farklı nesneler üzerinde bir lock’u varsa ve herbir işlem, başka işlemdeki nesneye erişmek istiyorsa, Deadlock meydana gelir. SQL Server, bu durumları ortaya çıkarır ve işlemlerden birini kurban olarak seçer. Seçilen işlem, bir hata mesajı alır ve yok edilir. Veritabanı değişiklikleri geri döndürülür.
İşlemleri ve Lock’ları Yönetme
Bir sistem yöneticisi, seçilen işlemler hakkındaki ek bilgileri inceleyebilir, seçilen kullanıcıya mesaj gönderebilir veya seçilen işlemi sona erdirebilir.
SQL Server’ı Yönetmek için Transact-SQL’i Kullanma
SQL Server’ı yönetmek için farklı Transact-SQL ifadeleri kullanılabilir.
Sistem Stored procedure
Veritabanı veya server hakkındaki istatistikleri veya bilgiyi görebilmek için kullanılan stored procedure’lar aşağıda tanımlanmıştır.
Sistem Stored Procedure
Raporlama
Sp_who
Geçerli SQL Server kullanıcıları ve işlemleri hakkındaki bilgiyi raporlar
Sp_lock
Aktif lock’lar hakkındaki bilgiyi raporlar
Sp_spaceused
Bir tablo veya veritabanının kullandığı disk miktarı hakkındaki bilgiyi raporlar
Sp_helpdb
Veritabanları ve nesneleri hakkındaki bilgiyi raporlar
Sp_monitor
SQL Server istatistikleri hakkındaki tüm bilgiyi raporlar
Sp_helpindex
Tablodaki indexler hakkındaki bilgiyi raporlar
Sp_statistics
Belirli bir tablo üzerindeki tüm indexler hakkındaki bilgiyi raporlar
Global Variables
Sorgulanan bilgiyi veya istatistikleri elde etmek için kullanılır.
Global Variable
Amaç
@@connections
Loginlerin veya SQL Server en son başlatıldığından beri yapılan loginlerin sayısını içerir.
@@error
Çalıştırılan son Transact-SQL ifadesi için hata numarası içerir.
@@options
Sp_configure kullanılarak değiştirilen SET seçenekleri hakkında bilgi içerir.
@@spid
Kullanıcı işleminin server process ID’sini içerir. Bu ID kullanıcı işlemini tanımlamak için kullanılır.
@@procid
Geçerli Procedure’ün stored procedure ID’sini içerir.
Transact-SQL İfadeleri
Text tabanlı sorgu yürütme planını göstermek için veya istatistikleri göstermek için aşağıdaki Transact-SQL İfadeleri kullanılır.
Statement
Tanım
Set statistics IO
Transact-SQL ifadelerinin oluşturduğu disk aktivite miktarı ile ilgili bilgiyi gösterir.
Set statistics time
Bir ifadeyi derlemek ve çalıştırmak için gerekli olan milisaniyelerin sayısını gösterir.
Set showplan_text on/off
SQL Server’ın sorguyu çalıştıramamasına neden olur.
DBCC İfadeleri
Aktivite ve performansı kontrol etmek için DBCC ifadeleri kullanılır.
Aşağıdaki DBCC ifadeleri kullanılarak performans denetlenebilir.
DBCC Statement
Raporlar
MEMUSAGE
Bellek kullanımı hakkındaki bilgiyi raporlar. Buffer ve procedure cache’lerindeki nesneler tarafından kullanılan bellek miktarını sağlar.
SQLPERF
Server son başlatıldığından beri istatistikler hakkındaki bilgiyi raporlar. Tüm veritabanlarındaki (LOGSPACE), disk I/O’daki (IOSTATS), bellek ve cache kullanımındaki (LRUSTATS), ve network aktivitelerindeki (NETSTATS), transaction log alanın kullanımı üzerine bilgi elde etmek için bu ayar yapılmalı.
PERFMON
Server üzerindeki performans istatistikleri hakkındaki bilgiyi raporlar
OPENTRAN
En eski aktif işlem hakkındaki bilgiyi raporlar. Aktif bir işlem varsa veya veritabanı kopyalama bilgisi içeriyorsa, sonuçlar gösterilir.
SHOW_STATISTICS
Seçilmiş bir index hakkındaki bilgiyi raporlar.
CHECKDB
Veritabanındaki tüm nesnelerin allocation’I ve yapısal uyumu hakkındaki bilgiyi raporlar.
Checkfilegroup
Filegrup’taki tüm tabloların allocation’I ve yapısal uyumu hakkındaki bilgiyi raporlar.
Newalloc
Her bir tablo için veri ve index sayfalarının allocation’I hakkında bilgi raporlar.
Checktable
Belirlenmiş tablo için veri, index, text, ntext, ve image sayfalarının uyumu hakkındaki bilgiyi raporlar.
Trace Flags
Belirli server karakteristiklerini ayarlamak için kullanılır, ama ayrıca performans issue’larını teşhis etmek için ve sorguları ve sistem stored procedure’leri debug etmek için kullanılır. DBCC TRACEON ifadesiyle trace flag’ler ayarlanabilir ve DBCC TRACEOFF ifadesiyle etkisiz hale getirilebilir.
SQL Server Profiler’ı Kullanma
SQL Server Profiler, login, kullanıcı, ve uygulama aktivitesi içeren, server ve veritabanı aktivitesinin denetlenmesini sağlar. Ayrıca veri, bir tabloda, dosyada veya SQL script’te tutulabilir.
Geçerli Server Aktivitesini Denetleme
SQL Server Profiler’ı kullanmak için, ilk olarak niçin denetleme yapılacağına karar verilmesi ve daha sonra denetleme kriterinin seçilmesi gerekir. Trace’ler, public (tüm bilgisayar kullanıcılarına uygun) veya özel (trace’i tanımlayan kullanıcıya uygun) olabilir.
Event’lar hakkında bilgi tutulabilir ve daha sonra bilgi anlamlı olarak filtrelenir ve gruplanır. Zaten sadece anlamlı veri tutulabilir. Denetlenmesi istenen birkaç event, aşağıdakileri içerir:
· İcra edilen sorguları
· Table scan’lere neden olan sorguları
· Kullanıcıların veya uygulamaların aktivitelerini
· Deadlock problemleri
· Login girişimlerini, başarısızlıklarını, bağlantılarını, bağlantı kopukluklarını
· Mantıksal diski okuma ve yazmayı
· Statement seviyesindeki CPU kullanımını
· Hata severity level’ları
· Tüm çalışan event’lar için bekleme zamanını
Real-Time Sonucunu Tutma
Server aktivitelerinin sonuçları denetlenebilir.
Veriyi Bir Dosyada Tutmak
Trace bilgisini kaydetme aşağıdakileri yapmaya izin verir.
¨ Server’a karşı aktiviteyi tekrarlamaya
¨ Event aktivitesinin ek filtrelemelerini analiz etmeye ve icra etmeye
¨ Index Tuning Wizard ile kullanmak için bir yükleme (load) dosyası sağlamaya
¨ SQL batch’lerini, stored procedure’leri ve bir uygulamayı denetlemek için remote procedure call’leri (RPCs) çalıştırmaya
SQL Server Query Analyzer’ı Kullanma
SQL Server Query Analyzer, belirli bir sorgu üzerindeki bilgyi toplayan denetleme aracı olarak kullanılır.
Grafiksel Çalışma Planını Gösterme
SQL Server Query Analyzer’daki, Display Execution Plan click’lendiği zaman, sorguyu çalıştırmadan, plan panosundaki çalışma planını sanal olarak gösterir. Herbir icon, sorgu planındaki bir step’I temsil eder. Çalışma planı aşağıdakileri içerir.
q Hangi indexlerin kullanıldığını
q Yapılan erişim metodlarının tipini (table scan gibi)
q I/O work
q Sorguyu tamamlaması için gerekli olan CPU zamanını
Run Query Analysis aracı, index’leri yaratmak için Transact-SQL ifadelerini oluşturur.
Flight Recorder’I Kullanma
SQL Server Flight Recorder isimli bir araç içerir. Flight Recorder, bir SQL Server başarısızlığını düzeltmek için kullanılır. Flight Recorder, son 100 performans işlemlerini depolayan bir buffer’dır.
Hataların Nedenini Belirleme
En yeni 100 performans işlemleri, blackbox.trc trace dosyasına kaydedilir. Flight Recorder’ın trace dosyasındaki bilgi kullanılarak, event’ler yoluyla server crash’e ulaşılabilir ve hatalar yüzünden oluşan event’ler incelenebilir.
Xp_trace_setqueryhistory ile Çalıştırma
Flight Recorder’I açmak için, xp_trace_setqueryhistory extended stored procedure’I çalıştırmak gerekir.
Syntax EXECUTE xp_trace_setqueryhistory (0 | 1)
Örnek: Aşağıdaki örnek Flight Recorder’I açar.
EXECUTE xp_trace_setqueryhistory 1
SQL Server Profiler ile Dosyayı İnceleme
SQL Server Profiler ile blackbox.trc dosyası açılabilir. Trace dosyası, event (event class’I içererek), çalıştırılan Transact-SQL, event’tan sorumlu client, kullanıcı ve server ismi hakkındaki bilgiyi gösterir. Ayrıca konu ile ilgili hata mesajlarını gösterir. SQL Server’ın, SQL ServerProfiler’daki dosyayı incelemek için, SQL Server’ın çalışma zorunluluğu yoktur.
Note: Flight Recorder’ın SQL Server performansı üzerinde çok az bir etkisi vardır yada hiç bir etkisi yoktur.
SQL Server’I Denetleme
Veritabanını dentlemek için, elle yada otomatik olarak farklı task’ları yerine getirmek gerekir. Bu task’ler, database maintenance plan’I oluşturur. Task’ler aşağıdakileri içerir:
v Veri optimizasyonu hakkındaki bilgiyi güncelleme
v Veri uyumluluğunu doğrulama
v Yedekleri alma
v Veritabanı maintenance history’yi ve raporlarını yaratma
Bu task’ler elle yapılabilir veya Database Maintenance Plan Wizard ile database maintenance planı kurulabilir ve tasarlanabilir.
Database Maintenance Planı Geliştirme
Farklı task’ler, veritabanını denetlemede yardımcı olur. Bu task’ler düzenli olarak çalıştırılmak için tasarlanmıştır.
Veri optimizasyonu hakkındaki bilgiyi güncelleme
Veri ve index sayfaları doldurulduğunda, güncelleme işlemi, uzun zamanda gerçekleşir ve sayfalar parçalanabilir. Veriyi ve index sayfalarını yeniden düzenleme, performansı geliştirebilir.
Fillfactor seçeneği kullanılarak index’leri denetleme
Uygun boş alanın (fillfactor) yüzdesi index ve veri sayfalarındaki belirtilebilir. Fillfactor yüzdesi, sadece, index ilk yaratıldığı zaman kullanılır. Bir yüzde belirtilebilir veya SQL Server’ın otomatik olarak en uygun değeri seçmesine izin verilebilir.
Sorgu Optimizer’I tarafından kullanılan istatistikleri güncelleme
Bir tablodaki bir yada daha fazla index için, anahtar değer hakkındaki bilgiyi güncellemek için UPDATE STATISTICS çalıştırılabilir.
Veritabanı dosyalarından kullanılmayan alanı kaldırma
Veritabanı tablolarındaki kullanılmayan disk alanını geri almak için DBCC SHRINKDATABASE çalıştırılabilir. Ayrıca veritabanı dosyalarındaki autoshrink seçeneği etkin hale getirilebilir.
Veri Uyumunu doğrulama
Veri uyumu testleri, donanım ve yazılım hatalarına neden olan veritabanındaki uyumsuzluğu ortaya çıkarır.
İçsel veri uyumu testlerini icra etme
Herbir tablo için veri ve index sayfalarının tahsisini denetlemek için DBCC CHECKALLOC çalıştırılır.
Veri uyumluluk testlerini icra etme
Veritabanındaki nesnelerin allocation’I ve yapısal uyumluluğunu kontrol etmek için DBCC CHECKDB çalıştırılır. Bir tablo için veri, index, ve text, index sayfalarının uyumluluğunu kontrol etmek için DBCC CHECKTABLE çalıştırılır. DBCC bir hata bulursa, hatayı otomatik olarak onarır.
Yedekleri Alma
Veri kaybına karşı düzenli olarak yedekler alınmalı. Full veritabanı yedekleri arasındaki değişiklikleri tutmak için transaction log’lar yedeklenmeli.
Maintenance History’yi Denetleme
Maintenance task’larının history’sini denetler. Bu history, hangi işlemlerin yapıldığını içerir.
Database Maintenance Plan Task’larını Otomatikleştirme
Database Maintenance Plan Wizard veya sqlmaint utility’si kullanılarak, düzenli olarak çalışan database maintenance planı otomatikleştirilebilir.
Database Maintenance Plan Wizard
Database Maintenance Plan Wizard, veritabanının iyi çalıştığını garanti altına almak için gerekli olan, maintenance task’lerini kurmaya yardımcı olabilir. Ayrıca sistem başarısızlıklarında düzenli olarak yedeklenir ve uyumsuzluklar için kontrol edilir. Wizard çalıştırıldığı zaman, aşağıdakiler belirtilmeli:
Maintain’ları Planlayan Veritabanları
Tüm veritabanları için, tek bir maintenance planı veya bir yada daha fazla veritabanları için maintenance planları tanımlanabilir.
Veri Doğrulama Testleri
Wizard, veriyi bozmayan sistem ve yazılım problemlerini sağlama almak için veri ve veri sayfalarının içsel uyum kontrollerini yerine getirir.
Veri Optimizasyon Bilgisi
Wizard, sorgu optimizer’ının tablolardaki veri genişliğine ilişkin, geçerli bilgiye sahip olduğunu garanti altına almak için, index istatistiklerini günceller. Wizard, ayrıca boş veritabanı sayfalarını kaldırarak, veri dosyalarını sıkıştırabilir.
Yedeklerin Sıklığı ve Gideceği Yer
Veritabanı ve transaction log yedekleri tasarlanabilir ve belirlenmiş bir zamana göre yedek dosyaları saklanabilir.
History Dosyalarının Konumu
Maintenance task’ların oluşturduğu sonuçlar, text dosyasına, HTML dosyasına veya history tablolarına bir rapor olarak yazılabilir veya e-mail mesajı olarak gönderilebilir.
Sqlmaint Utility
Sqlmaint utility’si, DBCC ifadelerini çalıştırmak için, veritabanını ve transaction log’ları dump etmek için, istatistikleri güncellemek için, ve indexleri rebuild etmek için kullanılır. Bu command-prompt utility, Database Maintenance Plan Wizard ile aynı işlemleri yapar.
Tavsiye Edilen Uygulamalar
Aşağıdaki tavsiye edilen uyugulamalar, server’I denetlemede yardımcı olur:
Bir performans baseline’I kurma. Sistem trafiği ağırlaştığında ve performans düşüklüğü saptandığında, sistemi denetlemek için bir zaman periyodu belirlenebilir.
Asıl performansı denetleme. Sistemi denetlemek için uygun bir araç seç. Baseline istatistikleri ile server performansını karşılaştır.
Performans bottleneck’lerini saptama. İlk olarak yüksek seviyeli (donanım ve işletim sistemi sınırlamaları gibi) işlere bakan, denetleme stratejisini kullan ve sonra SQL Server – specific issue’lardan, spesifik query performansa daralt.