6 Ekim 2014 Pazartesi

VERİ TABANI

VERİ TABANI

VERİ YAPISINA BAKIŞ?


Bir veri tabanı oluşturduğumuz zaman, verilerin tutulacağı alanlar için gerekli ayarlamaları yapmamız gerekmektedir. Bu yapıda en az bir veri dosyası(Data File) ve bir geçiş dosyası(Transaction Log File) olmalıdır.


VERİ NASIL ve NEREDE DEPOLANIR?


Bir Veri tabanını doğru olarak planlamak için, verilerin SQL Server içinde Inasıl ve nerede depolandığını bilmemiz gerekir.


Tüm veri tabanları bir Primary Data File (birincil veri dosyası), bir veya daha fazla Transaction Log File (geçiş dosyası) içerir. Primary Data dosyalarının tavsiye edilen uzantıları .mdf ve Transaction Log dosyalarının uzantıları .Idfdir.


Ayrıca bir veri tabanı içinde; opsiyonel olarak Secondary Data File lkrc! veri dosyası) olabilir. Bu dosyaların uzantıları da .ndf’dir. Tüm veri dosyaları ve transaction log dosyaları C:\Program Files\Microsoft SQL Server\MSSQL\Data yolunda tutulur.


Bu SQL Server için Default kurulum yoludur. Ancak şekilde görüldüğü gibi raşka bir sürücü içine de kurulabilir.


Veri tabanı oluşturma işlemini; SQL Server Enterprise Manager ile veya SQL Query Analyzer içindeki Transact- SQL komutlarından CREATE DATABASE ile gerçekleştirebiliriz.


Bir veri tabanı oluşturduktan sonra, sırası ile şu işlemler meydana gelir:


Bir Primary Data File (.mdf) ve Transaction Log File (.Idf), veri tabanı için oluşur.


Yeni veri tabanının sahibi (owner) ve oluşturucusu (creator), Master veri tabanını kullanma hakkına sahip olması gerekmektedir.


Veri tabanı oluştururken; veri tabanının adını, özelliklerini ve kaydedileceği yeri belirleme hakkına sahip olunur.


Yeni bir veri tabanı oluştururken, model veri tabanının sistem dosyalarının bir kopyalanırsa, içinde bulunan ayar ve seçenekler geçerli olur.


SQL Server; veri tabanının geri kalan kısımlarını boş sayfalar ile doldurur. SQL Server içinde bir sayfalama yapısı vardır. Disk üzerinde 8 KB’lık bloklarda depolanır ve buna sayfa (page) adı verilir. Diğer bir anlamı da her 1 MB için 128 sayfa tutar (128*8 KB=1024 KB*1 MB). Eğer birden fazla sütun varsa, toplam satır boyutunu hesaplarken bir 9 byte’lık ilave yapalım (row-overhead). Satırlar (rows) sürekli bölünemeyen yapıdadır tek bir satırdaki en fazla miktar 8094 byte’dır.


Bir örnek ile açıklayalım:


iki int, dört char (30) ve bir datetime sütun olsun. Yaklaşık 250.000 kayıdın ne kadarlık yer kaplayacağını hesaplayalım.


1) Toplam satır boyutu=2*4+4*30+1 *8+9 *147 byte


2) Her sayfadaki satır sayısı=8094/147 *55 satır


3) Tablo içindeki sayfa sayısı=250000/55 *4545 sayfa


4) Tablonun boyutu=4545*8 KB=36363 KB veya 36 MB


Bu rakam, indexleme yapılmadan hesaplanmıştır. Aynı veri miktarı için; char(30) veya int türü bir indexlemeye göre %25- %50 oranında bir ilave alan gerekir. Bu yine index türüne göre değişiklik gösterebilir.


Tüm bu hesaplamalar oluşturacağınız veri tabanı için; ayıracağınız alanı planlamak açısından yararlı olacaktır.

Bunlar varsayılan ayarlardır, istenirse değiştirilebilir. Dosyanın boyutu model veri tabanının boyutundan ve 512 KB’ dan daha küçük bir değer getirilemez. Ama istenirse, arttırılabilir. PRIMARY dışında başka bir grup için o grubun, SQL Server içinde tanımlı olması gerekir. Ancak ilkinin PRIMARY içinde olması gerekir. Burada ilk oluşturulan dosya Primary File olarak adlandırılır. Zaten ilk dosyanın mutlak suretle Primary File olması gerekir. Çünkü; okumaya buradan başlar. Her bir veri tabanı; bir Primary Filegroup ve bir Primary File içerir. Primary Filegroup, veri tabanındaki tüm sistem tablolarını içerir.


Veri tabanının büyüklüğüne göre istenirse, File Name kısmından ikino bir veri tabanı yolu tanımlanabilir. Buna Secondary File denir Secondary File yolunun, performans açısından genellikle ikinci bir fizikse| disk üzerinde olması gerekir.


Yine alttaki kısımda bulunan Autogrowth seçeneğinin yanındaki üç noktaya tıkladığımızda bize otomatik olarak ne kadar size’da büyümesi gerektiği ekranı gelir.


Dosya boyutunun ihtiyaç olduğu zaman otomatik olarak genişlemesini istiyorsak, Enable Autogrowth kutusunun doldurulması gerekir ki bu, varsayılan olarak doludur.


File Growth kısmında ise, ihtiyaç olduğunda bu büyümenin nasıl olacağı belirtilir. Eğer MB mertebesinde olmasını istiyorsak, In Megabytes seçeneğinin işaretli olması gerekir. Yüzde(%) mertebesinde olması istenirse, o zaman In Percent seçilmesi gerekir. Örneğin: Initial size 2 MB ve In Megabytes 1 olarak ayarlanabilir. Bunun anlamı; veri tabanı dolduğu zaman, otomatik olarak Initial size 1 MB olarak artacaktır. İlk artışta 2 MB değeri 3 MB olacaktır. Sonra ihtiyaç ja bu artış devam edecektir.


Peki artış nereye kadar devam eder? Bunun ayarı ise Maximum File Size kısmından yapılır. Büyümeyi; disk alanının ayarı ile sınırlamayı istiyorsak, Unrestricted File Growth seçeneği işaretlenir. Böylece büyüme, disk alanı dolana kadar devam eder. Eğer büyüme miktarına bir koymak istersek, o zaman Restricted File Growth (MB) seçerek maksimum limit belirlenebilir.


Aynı ayarlar Transaction Log dosyası için de yapılabilir. Tavsiye Wen dosya boyuutu; esas dosyanın %10- %15 arasında olmasıdır. Bu dosyasıdır. Özellikle Transaction işlemlerinde çok büyük önems taşır.


İşlemi tamamlamak için OK butonuna basılır. Bunun sonucunda ases klasörü altında veri tabanımız oluşur.


VERİ TABANI ÖZELLİKLERİ ve DEĞİŞİKLİK:

Bir Veri tabanı oluşturduktan sonra, veri tabanı seçeneklerinde değişiklik yapabiliriz. Bu değişikliği SQL Server Management Studio, Transact Komutlarından ALTER DATABASE veya sp dboption stored Jure’ü ile yapabiliriz. ALTER DATABASE komutunu.kullanırken. Master veri tabanı aktif olmalıdır.


Bir Veri tabanındaki özellikleri öğrenmek için sp_helpdb stored procedure’ünü kullanabiliriz. Bu, tüm veri tabanları hakkında bilgi edinmek içindir. Eğer sadece, belli bir veri tabanı hakkında bilgi edinmek istersek o zaman, o veri tabanının adını da belirtmemiz gerekir. Ayrıca tabanında kullanılan alan ve boş alan miktarlarını öğrenmek için, spaceused_stored procedure’ünü kullanabiliriz.


SQL Server Query Editor içinden DBCC SQLPERF(LOGSPACE) kullanılarak, Transaction Log dosyasının boyutu ve nekadarının kullanıldığını öğrenebiliriz.


dbcc sglperf(logspace)


_



VERİ TABANI

Hiç yorum yok:

Yorum Gönder