Sql Server Sistem Veritabanları


Bu yazımda, son zamanlarda çevremdeki yazılımcı arkadaşlardan aldığım sorular üzerine SQL Server’da sistem veritabanlarının neler olduğunu ve ne için kullanıldıklarını detaylarıyla anlatmaya çalıştım.

Sql Server ilk kurulduğunda default olarak bazı sistem veritabanları kurulur. Bu sistem veritabanlarına baktığımızda;

  • master
  • model
  • msdb
  • tempdb

default olarak kurulu gözükür.
Bunlar haricinde kurulu olarak gelen fakat gözükmeyen resource isminde bir veritabanı ve Sql Server’da replikasyon kurulduğunda kurulan bir distribution veritabanı daha sistem veritabanları içerisindedir.

Sistem veritabanlarını sorgulamak için genelde aşağıdaki script kullanılır.

select * from sys.databases where database_id < 5

Sistem veritabanları Sql Server ilk kurulduğunda otomatik olarak create edildiği için ilk 4 sıra her zaman sistem veritabanları için ayrılır. distribution veritabanı, replikasyon default olarak kurulu gelmediği için bulunmaz. Bundan dolayı replikasyon kurulu sistemlerde, sistem veritabanlarını sorgularken distribution veritabanını da göz önünde bulundurmak gerekir.

Şimdi bu veritabanlarının ne işe yaradığına bakalım;

master Veritabanı

master veritabanında bütün sistem seviyesindeki bilgiler tutulur. Kullanıcı hesapları, linkserverlar, sistem konfigürasyonları ve endpoint gibi sistem seviyesindeki metadataların bilgileri bu veritabanı altında tutulur. Ayrıca diğer veritabanlarının tutulduğu lokasyon bilgileri, sql server’ın initial bilgileri de bu veritabanında tutulur. Bu nedenle master veritabanının erişilemez olması durumunda sql server başlatılamayacaktır. Bu yüzden sistem veritabanlarının düzenli olarak backuplarının alınması çok önemlidir.

model Veritabanı

model veritabanı sql server üzerinde oluşturulacak her bir veritabanı için template görevi görür. Yeni bir veritabanı oluşturulmak istenildiğinde veritabanı büyüklüğü, dil ayaları ve recovery model gibi bilgileri değiştirilerek diğer bilgilerin model veritabanında altından alınarak oluşturulmasını sağlar. Ayrıca Sql Server her restart edildiğinde tempdb yeniden oluşturulduğundan dolayı yine bu veritabanı bilgilerini model veritabanından alarak tempdb’yi oluşturur. Bu nedenle bütün sunucularda model veritabanı bulunur.

msdb veritabanı

msdb, sql server agent tarafından kullanılan uyarıları ve jobları schedule etmek için ve Service Broker, Database Mail gibi Sql Server’ın diğer özellikleri için kullanılır. Jobların bilgileri, çalışma geçmişleri, zamanları gibi metadatalar bu veritabanı üzerinde saklanır.

tempdb Veritabanı

tempdb, veritabanı yöneticilerinin ve yazılımla uğraşan hemen hemen herkesin direk olarak kullandığı veritabanlarından biridir. tempdb geçici user object ve database engine tarafından oluşturulan internal object gibi yapılarda kullanılır;

  • Geçici user objects: local ve global temp tablolar, temp stored procedure’ler, temp variable’lar ve temp olarak oluşturulan indexler
  • Internal Objects:
    • Query planda gördüğümüz spool, cursor, sort ve temporary large objects(LOB) leri tutmak için oluşturulan work tablelar,
    • hash join ve hash aggregate operasyonları için work filelar
    • index create ve rebuild işlemlerinde SORT_IN_TEMPDB on olarak şeçilmişse veya querylerde kullanılan GROUB BY, ORDER BY, UNOIN gibi işlemlerde kullanılır.

Ayrıca veri güncellemeleri işlemlerinde, online index operasyonları, AFTER trigger kullanımları gibi operasyonlarda da tempdb kullanılmaktadır.

tempdb,  yoğun kullanılan sistemlerde hem çok kritik, hem de sağlıklı ve performanslı olarak çalışması için çok önemli bir yere sahiptir. Doğru konfigüre edilmediğinde ciddi anlamda performans problemlerine sebep olabilmektedir. Bu yüzden tempdb’nin konfigüre edilmesi önemli konulardan birisidir. Başka bir makelede tempdb’nin nasıl konfigüre edileceğini paylaşacağım.

Resource veritabanı

Resource veritabanı, bütün sql server system objelerini içeren read-only bir veritabanıdır. Sql server system objeleri fiziksel olarak resource veritabanıda tutulur fakat mantıklsal olarak her veritabanı altında sys şeması altında gözükür. resource veritabanını Sql Server Management Studio’da veya sys.databases tablosunda gözükmese de
C:\Program Files\Microsoft SQL Server\MSSQL<version>.<instance_name>\MSSQL\Binn\ klasörü altında mssqlsystemresource.mdf ve mssqlsystemresource.ldf isimli fiziksel dosyaları görebilirsiniz.

distribution Veritabanı

Daha önce de belirttiğim gibi distribution veritabanı Sql Server’ın default olarak kurulu olduğunda sunucuda bulunmaz. Replikasyon kurulumu yapmak istediğinizde ve ayarlarını tamamladıktan sonra bu database sistem veritabanları altında gözükmektedir. Bu veritabanı, bütün replikasyon tiplerine ait metadata ve historik data ile beraber, transactional replikasyona ait transactionları tutmaktadır.

 

Umarım faydalı bir yazı olmuştur.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

This site uses Akismet to reduce spam. Learn how your comment data is processed.