Ana içeriğe geç
Kesit SQL
İleri · Veritabanı Yönetimi (DBA)

Bakım: indeks parçalanması, istatistikler, DBCC ve Agent işleri

Veritabanını sağlıklı tutan düzenli işler ve zamanlanması.

Uygulamada aç, 4 alıştırmayı çözÜcretsiz, hesap gerekmez, kurulum yok.

Bu sayfa dersin okuma sürümüdür. Metin bir kutuyu çalıştırmanı ya da adıma geçmeni söylüyorsa dersi uygulamada aç.

Düzenli bakım işleri

İşNeden?Sıklık (tipik)
İndeks bakımıEkleme ve silmelerle sayfalar parçalanır, okuma artarHaftalık
İstatistik güncellemeOptimizer satır sayısını doğru tahmin etsinGünlük / haftalık
Bütünlük kontrolü (DBCC CHECKDB)Disk kaynaklı bozulmaları erken yakalaHaftalık
YedeklerÖnceki dersStratejiye göre
Geçmiş temizliğimsdb'deki eski yedek/iş geçmişiAylık

İndeks parçalanması

SELECT OBJECT_NAME(ps.object_id) AS tablo,
       i.name AS indeks,
       ps.avg_fragmentation_in_percent AS parcalanma,
       ps.page_count
FROM sys.dm_db_index_physical_stats(DB_ID(), NULL, NULL, NULL, 'LIMITED') ps
JOIN sys.indexes i ON i.object_id = ps.object_id AND i.index_id = ps.index_id
WHERE ps.page_count > 1000
ORDER BY parcalanma DESC;
ParçalanmaÖnerilen işlem (genel kural)
%5–30ALTER INDEX ... REORGANIZE (çevrimiçi, hafif)
%30 üzeriALTER INDEX ... REBUILD (Enterprise'da ONLINE = ON)
1000 sayfadan küçükUğraşmaya değmez
Modern görüşSSD disklerde parçalanmanın etkisi azaldı; birçok uzman artık sık REBUILD yerine düzenli istatistik güncellemesini daha önemli buluyor. Kararı ölçerek ver.
ALTER INDEX ix_orders_date ON dbo.orders REORGANIZE;
ALTER INDEX ALL ON dbo.order_items REBUILD WITH (ONLINE = ON);
UPDATE STATISTICS dbo.orders WITH FULLSCAN;
DBCC CHECKDB (anadolu) WITH NO_INFOMSGS;

Zamanlama: SQL Server Agent

Bakım işleri SQL Server Agent işleri (job) olarak zamanlanır: adımlar, zamanlama ve hata durumunda operatöre e-posta. Topluluğun yaygın kullandığı hazır çözüm Ola Hallengren'in bakım betikleridir. Azure SQL Database'de Agent yoktur; Elastic Jobs veya Azure Automation kullanılır.

SQL türüKarşılık
PostgreSQLVACUUM (ölü satırları temizler, MVCC gereği), ANALYZE (istatistik), autovacuum; zamanlama için pg_cron
MySQLOPTIMIZE TABLE, ANALYZE TABLE; zamanlama için Event Scheduler
OracleOtomatik istatistik toplama (DBMS_STATS), DBMS_SCHEDULER
Alıştırmalara geç (4)