ÇözümPark'a hoş geldiniz. Oturum Aç | Üye Ol
 
Ana Sayfa Makale Video Forum Resimler Dosyalar Etkinlik Hizmetlerimiz Biz Kimiz

SQL Server

SQL Server – Data Dosyasını Shrink Yapmalı mıyız?

SQL Server’ da shrink işlemi data ve log dosyaları üzerinde bulunan boş alanları geri alarak dosya sisteminde kullanıma dahil etmek için yapılan işlemdir. Genellikle kısıtlı disk alanı yüzünden data veya log dosyalarındaki boş alanları küçülterek diskte yer açmak için tercih edilir.  Birde küçük data dosyaları (mdf,ndf) daha performanslıdır diye bir efsane de vardır J

Gerçekten data dosyalarını shrink etmeli miyiz? Veri dosyalarını küçültmek avantajlı mıdır? Yoksa dezavantajları da var mı?

Öncelikle SQL Server’ da Data dosyalarımızı küçültmek istediğimizde shrink işlemi yapılırken sistemde çok fazla kilitlenme meydana getirecektir. Çünkü küçültme işlemi için sayfalardaki veriler taşınacaktır. Taşıma yapılırken kilitlenmeler meydana gelecek olup işlem yapılan her satır bilgi de günlük dosyasına (Log File) kaydedilecektir. Data file shrink işlemi yapılırken çok büyük oranda log dosyamızda büyüme olacaktır. ( I/O maliyeti)

Shrink yapılırken işlem yapılacak page arabellek havuzuna (buffer cache) yüklenecek olup, arabellek havuzunu da ihtiyacımız olmayan sayfalarda dolduracaktır. Buffer cache ihtiyaç olmayan sayfaları bellekten temizlese de sistem kaynağı maliyeti meydana gelecektir.

Data file shrink işleminden sonra yine yüksek bir I/O maliyeti ile karşı karşıya kalacağız. Bu maliyet dizin parçalanması ( Index Fragmentation) ’dır. İstenmeyen bir durum olan index fragmentasyonu meydana geldiğinde veriye ulaşmak için daha fazla time ve i/o maliyeti ortaya çıkacak. Shrink işleminden sonra index fragmentasyonunu ortadan kaldırmak için yüksek CPU ve I/O maliyeti olan Index Rebuild veya Index Reorganize işlemi yapmamız kaçınılmaz olacaktır.

Görüldüğü gibi avantajından daha çok dezavantajları bulunan shrink işlemini kesinlikle düzenli olarak ( Auto shrink ) yapmanızı önermiyorum. Eğer bir seferlik büyük bir oranda küçülme ihtiyacınız varsa tavsiye olarak yeni bir data dosyası (.ndf) oluşturmanızı, tablolarınızı ve indexlerinizi yeni oluşturduğunuz data dosyasına taşıdıktan sonra kaynak data dosyanızı silmenizi tavsiye edebilirim. Tabiki kullanmış olduğunuz sisteminize ve altyapınıza göre olarak size en uygun çözümü tercih etmelisiniz.

Shrink işleminin Index parçalanmasına nasıl sebep olduğunu incelemek için aşağıdaki örneği hazırladım.  Özetle örneğimde ;

·         Yeni bir veri tabanı oluşturuyorum.

·         2 tane tablo oluşturup birini boş alan meydana getirmek için siliyorum.

·         Shrink işlemi yaptıktan sonra tablomda tanımlı olan Index’in parçalanma oranına bakıyorum.

clip_image002

Shrink işlemi öncesi Index Fragmentation oranımızı kontrol edelim.

clip_image004

Yukarıdaki resimde de görüldüğü gibi Index’imize parçalanma oranı neredeyse %0

Artık “TempDemoTable” tablomuzu silebiliriz. Tablomuzu sildikten sonra veri tabanımızı kaç mb’ta kadar küçültebiliriz kontrol edelim. Bunun için ShrinkDemo veri tabanına sağ tıklayıp > Tasks > Shrink > Files menüsünü seçiyorum.

clip_image006

Ekranda 4 MB’ta kadar data dosyamın küçültülebileceği bilgisi mevcut. Data dosyamı 4 MB ‘ta shrink ediyorum.

clip_image007

Shrink işlemi sonrası tekrar Index parçalanma durumunu sorguluyorum.

clip_image009

Yukarıdaki resimde de görüldüğü gibi shrink işlemi sonrası dizin parçalanma durumu %77 ‘ye ulaştı. Demo’da da test etmiş olduğumuz gibi Data File Shrink yapmadan önce birkaç kez daha düşünmekte fayda var.

 

Yararlı olmasını dilerim.

 

 

 

Tarih : 11 Kasım 2018 Pazar 21:55 Yayınlayan: Mesut GÜNEŞ

Yorumlar

 

Hakan UZUNER

Eline sağlık

Kasım 11, 2018 23:06
 

Mesut GÜNEŞ

Teşekkür ederim Hakan bey.

Kasım 12, 2018 09:54
Kimliksiz yorumlar seçilemez kılınmış durumdadır.

Yazar: Mesut GÜNEŞ

Selçuk Üniversitesi Bilgisayar programcılığı bölümünden mezun olduktan sonra birçok firmada Yazılım, İş zekası ve Veritabanı Uzmanı olarak çalıştım. Şuan Türkiye’nin en büyük şirketlerinden biri olan Doğan Online’da Veritabanı Yöneticisi olarak çalışıyorum. Kişisel blog sayfam ve Bt Kulübü isminde kurmuş olduğumuz toplulukta paylaşımlarda bulunuyorum.

Hızlı aktarma

Etiketler