SQL Server’da AUTO_CLOSE Özelliği Nedir

SQL Server dünyasında bazen “küçük bir ayar” gibi görünen ama veritabanı performansını ve kaynak yönetimini derinden etkileyen özellikler vardır. Bunlardan biri de AUTO_CLOSE özelliğidir.

İşte bu özelliğin ne olduğuna ve neden genellikle “kapalı” kalması gerektiğine dair detaylı bir inceleme:

AUTO_CLOSE, veritabanı düzeyinde ayarlanan bir yapılandırmadır. Bu özellik ON konumuna getirildiğinde, SQL Server ilgili veritabanına bağlı son kullanıcı da bağlantısını kestiğinde veritabanını otomatik olarak kapatır ve kullandığı kaynakları işletim sistemine geri verir. Bir sonraki bağlantı isteği geldiğinde ise veritabanı yeniden “açılır”.

Genellikle SQL Server Express sürümlerinde varsayılan olarak açık gelirken, Enterprise ve Standard sürümlerde varsayılan olarak kapalıdır.

Bu özellik, sistem kaynaklarının çok kısıtlı olduğu senaryolar için tasarlanmıştır.

Avantajlar:

  • Veritabanı kullanılmadığında belleği (RAM) boşaltır.
  • Veritabanı kapalıyken .mdf ve .ldf dosyaları SQL Server tarafından kilitlenmez, bu da dosya taşıma veya yedekleme işlemlerini (SQL dışı araçlarla) kolaylaştırabilir.

Dezavantajlar:

  • Her yeni bağlantı isteğinde SQL Server veritabanını yeniden başlatmak, dosyaları kontrol etmek ve kurtarma (recovery) sürecini çalıştırmak zorundadır. Bu, kullanıcı için ciddi bir “ilk bağlantı gecikmesi” demektir.
  • Veritabanı her kapandığında, bellekteki sorgu planları (query plans) silinir. Bu da her sorgunun tekrar derlenmesine neden olarak CPU kullanımını artırır.
  • Sık açılıp kapanma, dosya sistemi düzeyinde parçalanmalara yol açabilir.

Modern veritabanı yönetimi standartlarında önerilen OFF ayarıdır.

Avantajlar:

  • Veritabanı her zaman “hazır” bekler. Bağlantı kurulduğu anda işlemler başlar.
  • SQL Server, veritabanı verilerini ve sorgu planlarını bellekte tutarak disk I/O işlemlerini minimize eder.
  • Sunucu düzeyindeki bakım işlemleri ve monitoring araçları kesintisiz veri alabilir.

Dezavantajlar:

  • Sürekli Kaynak Kullanımı: Veritabanı aktif olmasa bile belirli bir miktar RAM ve sistem kaynağını işgal etmeye devam eder.
ÖzellikAUTO_CLOSE ON (Açık)AUTO_CLOSE OFF (Kapalı)
Kullanım AmacıMasaüstü uygulamaları, Express sürümlerKurumsal uygulamalar, Web siteleri
PerformansDüşük (Her seferinde ısınma süresi)Yüksek (Her an hazır)
Bellek YönetimiKullanılmadığında RAM’i bırakırRAM’i rezerve eder
Önerilen SenaryoÇok nadir kullanılan küçük araçlarProduction (Canlı) sistemlerin tamamı

SQL Server topluluğunda ve Microsoft dokümantasyonlarında genel kabul görmüş kural şudur: AUTO_CLOSE özelliğini kapatın (OFF).

Eğer bir sunucu üzerinde SQL Server koşturuyorsanız, amacınız zaten veriye en hızlı şekilde erişmektir. Veritabanının her bağlantıda “uyuyup uyanması”, özellikle web uygulamaları ve yoğun veri trafiği olan sistemlerde ciddi darboğazlar yaratır. Sadece kişisel bilgisayarınızda geliştirmede kullandığınız ve haftada bir açtığınız çok küçük veritabanları için “Açık” bırakmayı düşünebilirsiniz.

Aşağıdaki sorgu ile veritabanlarınızın durumunu kontrol edebilirsiniz:

SELECT name, is_auto_close_on FROM sys.databases;

Kapatmak için:

ALTER DATABASE [VeritabanıAdınız] SET AUTO_CLOSE OFF;

Başka makalede görüşmek üzere..

 “Allah’tan kulları içinde ancak ilim sahibi olanlar korkar.” Fâtır sûresi – 28

Author: Yunus YÜCEL

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir