MS SQL SERVER DATABASE MODLARININ INSERT İŞLEMLERİNDE PERFORMANSI

  Bu yazımızda Microsoft SQL Server’da veritabanı modellerinin Integration Services Package yoluyla insert işleminde performanslarını ele alacağız. Microsoft SQL Server’da veritabanı modları, verilerin nasıl saklandığı ve yönetildiği konusunda belirli davranışları belirler. 1- Full Recovery Model Bu mod, veri kaybını en aza indirmek için ayrıntılı bir geri yükleme stratejisi sunar.Tam geri yükleme modeli, yedekleme, günlük dosyaları ve işlem günlüğü kayıtları arasında ayrıntılı bir ilişki oluşturur.Bu mod, tam yedekleme (full backup), fark yedekleme (differential backup) ve işlem günlüğü yedeklemesi (transaction log backup) gibi yedekleme türlerini destekler. 2- Simple Recovery Model Bu mod yedekleme ve geri yükleme sürecini basit tutar.Basit geri yükleme modeli, tam yedekleme (full backup) dışında herhangi bir fark yedekleme veya işlem günlüğü yedeklemesi türünü desteklemez.İşlem günlüğü, dolması tamamlandığında otomatik olarak temizlenir. 3- Bulk-Logged Recovery Model Bu mod, büyük hacimli veri ekleme ve değiştirme işlemlerini hızlandırır. Tam geri yükleme modeline kıyasla daha az işlem günlüğü kaydedilir, bu da yedekleme ve geri […]

MS SQL SERVER DATABASE MODLARININ INSERT İŞLEMLERİNDE PERFORMANSI

 

Bu yazımızda Microsoft SQL Server’da veritabanı modellerinin Integration Services Package yoluyla insert işleminde performanslarını ele alacağız.

Microsoft SQL Server’da veritabanı modları, verilerin nasıl saklandığı ve yönetildiği konusunda belirli davranışları belirler.

1- Full Recovery Model

Bu mod, veri kaybını en aza indirmek için ayrıntılı bir geri yükleme stratejisi sunar.Tam geri yükleme modeli, yedekleme, günlük dosyaları ve işlem günlüğü kayıtları arasında ayrıntılı bir ilişki oluşturur.Bu mod, tam yedekleme (full backup), fark yedekleme (differential backup) ve işlem günlüğü yedeklemesi (transaction log backup) gibi yedekleme türlerini destekler.

2- Simple Recovery Model

Bu mod yedekleme ve geri yükleme sürecini basit tutar.Basit geri yükleme modeli, tam yedekleme (full backup) dışında herhangi bir fark yedekleme veya işlem günlüğü yedeklemesi türünü desteklemez.İşlem günlüğü, dolması tamamlandığında otomatik olarak temizlenir.

3- Bulk-Logged Recovery Model

Bu mod, büyük hacimli veri ekleme ve değiştirme işlemlerini hızlandırır. Tam geri yükleme modeline kıyasla daha az işlem günlüğü kaydedilir, bu da yedekleme ve geri yükleme işlemlerini hızlandırır. Bu modda yapılan büyük hacimli işlemler sonrasında yedek alındığında, tam geri yükleme modeline geçilerek günlük kayıtların düzeltilmesi sağlanır.

TEST 1

SSMS programı üzerinden Database properties penceresinden recovery model olarak SIMPLE modu seçiyoruz.

Görsel-1

Database SIMPLE moddayken log dosyamızın boyutu 8,192 KB olduğunu not ederek işlemimize başlıyoruz.

Görsel-2

Daha önceden oluşturduğumuz içerisinde Integration Services Package ile başka bir veritabanından TESTDW veritabanımıza 10 Milyon satır veri çekmemize yarayan Job’ı başlatıyoruz.

Görsel-3

Job bitiminde süreyi not ediyoruz, daha sonra bu veriler ile diğer database modlarının farklarını inceleyeceğiz.

Görsel-4

SIMPLE moddayken log dosyasını Shrink için %88 bir alan bırakıldığını görüyoruz.

Görsel-5

Sunucu üzerinden log dosyasının boyutunu kontrol ettiğimizde 73,728 KB olduğunu görüyoruz.

Görsel-6

VLF Count değerini kontrol ederek TESTDW veritabanımızın VLF count sayısını not ediyoruz.

SELECT [name], s.database_id,
COUNT(l.database_id) AS 'VLF Count',
SUM(vlf_size_mb) AS 'VLF Size (MB)',
SUM(CAST(vlf_active AS INT)) AS 'Active VLF',
SUM(vlf_active*vlf_size_mb) AS 'Active VLF Size (MB)',
COUNT(l.database_id)-SUM(CAST(vlf_active AS INT)) AS 'In-active VLF',
SUM(vlf_size_mb)-SUM(vlf_active*vlf_size_mb) AS 'In-active VLF Size (MB)'
FROM sys.databases s
CROSS APPLY sys.dm_db_log_info(s.database_id) l
GROUP BY [name], s.database_id
ORDER BY 'VLF Count' DESC
GO

Görsel-7

TEST 2

SSMS programı üzerinden Database properties penceresinden recovery model olarak BULK-LOGGED
modu seçiyoruz.

Görsel-8

İşleme başlamadan önce log dosyamızı Shrink ederek alanı boşaltıyoruz.

USE [TESTDW]
GO
DBCC SHRINKFILE (N'TESTDW_log' , 0, TRUNCATEONLY)
GO

Shrink işlemi sonrasında log dosyamızın boyutunun 8,192 KB ve VLF Count sayısının 4 olduğunu not ediyoruz.

Görsel-9

Görsel-10

Test Job’ımızı başlatarak işlemimize devam ediyoruz.

Görsel-11

Job işleminin bitimine bu süreyi de not ediyoruz.

Görsel-12

BULK-LOGGED moddayken log dosyasını Shrink için %19 bir alan bırakıldığını görüyoruz.

Görsel-13

 

Sunucu üzerinden log dosyasının boyutunu kontrol ettiğimizde 73,728 KB olduğunu görüyoruz.

Görsel-14

 

VLF Count kontrol ederek TESTDW veritabanımızın VLF count sayısını not ediyoruz.

Görsel-15

TEST 3

SSMS programı üzerinden Database properties penceresinden recovery model olarak FULL modu seçiyoruz.

Görsel-16

İşleme başlamadan önce log dosyamızı Shrink ederek alanı boşaltıyoruz.

USE [TESTDW]
GO
DBCC SHRINKFILE (N'TESTDW_log' , 0, TRUNCATEONLY)
GO

Shrink işlemi sonrasında log dosyamızın boyutunun 8,192 KB ve VLF Count sayısının 4 olduğunu not ediyoruz.

Görsel-17

Görsel-18

Test Job’ımızı başlatarak işlemimize devam ediyoruz.

Görsel-19

 

Job işleminin bitimine bu süreyi de not ediyoruz.

Görsel-20

FULL moddayken log dosyasını Shrink için %33 bir alan bırakıldığını görüyoruz.

Görsel-21

Sunucu üzerinden log dosyasının boyutunu kontrol ettiğimizde 598,016 KB olduğunu görüyoruz.

Görsel-22

VLF Count kontrol ederek TESTDW veritabanımızın VLF count sayısını not ediyoruz.

Görsel-23

Test Analizi

Yapmış olduğumuz testlerin sonucunda SIMPLE ve BULK-LOGGED modlarında log dosyalarının boyutları aynı oranda büyümekte ancak Shrink için alan oranı BULK-LOGGED modda daha az kalmaktadır. FULL modda ise hem log dosyası büyümekte hemde Shrink için alan oranı az kalmaktadır. Veri yazma süresi modlara göre değişmekle ile birlikte ETL sürecinde kullanılan tool sayısına ve türüne göre bu sürelerin modların performansını belirlemesinde etkin rol oynayabilir.
Bu modlar, veritabanının işletim şeklini belirler ve yedekleme, geri yükleme ve performans açısından farklı avantajlar ve dezavantajlar sunar. Hangi modun kullanılacağı, veri tabanının iş yüküne, veri bütünlüğüne ve yedekleme/geri yükleme ihtiyaçlarına göre belirlenmelidir. Her modun belirli bir senaryoya en iyi uygun olduğu durumlar vardır.

İlerleyen yazılarımızda ETL sürecinin karmaşık olduğu bir Integration Services Package ile performans testi yaparak insert işlemindeki kazandırdığı zaman gibi faktörlere bakacağız.

Benzer Yazılar

SSIS CONNECTION MANAGER

ETL 2 ay önce

Bu makalede Visual Studio ‘da SSIS Connection Manager ile sunucular arasında bağlantı sağlama adımlarından bahsedeceğim. SQL Server Integration Services (SSIS) süreçlerini yönetmek ve geliştirmek için birçok seçenek var bunlardan bazılarını örnek vermek gerekirse; Visual Studio, Azure Data Factory (ADF), Third-Party (KingswaySoft, COZYROC SSIS) bunların yanında tabi SQL Server üzerinde de bu işlemlerimizi yapabiliriz. Ben bunlardan en yaygın olarak kullanılan Visual Studio üzerinden yaptığım çalışmalar kapsamında örnekler vermeye çalışacağım. Visual Studio üzerinden bir SSIS packages oluşturarak farklı sunucularda bulunan verileri taşıma işlemlerini yaptırmak istiyorum. Bunun için öncelikle sunucularda ilgili yetkilendirilmesi yapılmış bir kullanıcınızı olduğunu varsayarak ilerleyeceğim ama buradaki senaryolardan konuşmak istiyorum biraz örneğin; Kullanıcı Senaryosu 1: 142.142.0.42 sunucudaki A veri tabanında okuma yetkisine sahip “kullanici1”, 242.242.0.42 sunucusundaki B veri tabanında yazma yetkisine sahip “kullanici2” kullanıcılarına sahipsiniz Kullanıcı Senaryosu 2: 142.142.0.42 sunucudaki A veri tabanında okuma yetkisine, 242.242.0.42 sunucusundaki B veri tabanında yazma yetkisine sahip “kullanici3” kullanıcısına sahipsiniz Bu iki senaryoda da […]

INTEGRATION SERVICES KURULUM

ETL 2 ay önce

Bu makalede SQL Server Integration Service Feature kurulum adımlarından bahsedeceğim. NOT – 1: SQL Server Integration Service Feature kurulum aşamasında ve sonrasında sunucu restart veya SQL Server service restart gerekmemektedir. NOT – 2: Mevcutta WFCI kurulmuş olan bir ortamınıza sonradan SQL Server Integration Service Feature eklemenize desek vermemektedir, ancak WFCI SQL Services ilk kurulumunda “Feature Selection” sekmesinden Integration Service seçmeniz durumunda kurulumunu yapabilirsiniz. SQL Server kurulum aşamasında eğer Integration Service kurulumunu yapmadıysanız, Integration Services Catalog gelerek sağ tıkladığımızda Create Catalog seçeneğini tıkladığımızda kurulumunu yapmak istediğimizde aşağıdaki görsellerdeki şekilde hatalar alacaksınız. Görsel – 1   Görsel – 2   Görsel – 3   Yukarıda Görsel – 3 ‘te Sql Server Configuration Manager ‘dan kontrol sağladığımızda SQL Server Integration Services olmadığını görüyoruz. Örnek görsellerde görüldüğü üzere SQL Server ‘da ilgili features olmadığı ile ilgili hatayı alıyoruz bu hatayı gidermek için features ekleyeceğiz. Görsel –4 Görsel –5   Görsel – 6 ‘da görüldüğü […]

SSIS’de STAGING KULLANARAK DEĞİŞEN VE YENİ EKLENEN VERİ AKTARIMI

ETL 8 ay önce

Bu yazımızda ETL süreçleri ile veri aktarımı yaparken sadece değişen ve yeni eklenen verilerin aktarımını nasıl yapılacağını öğreneceğiz. ETL süreçlerinde veri aktarımı yapılırken aktarılacak verinin boyutu küçük, değişen ve yeni eklenen veriler olması durumda SSIS paketlerinde hedef tablolarımızı ilk önce “Truncate table” komutu ile tablonun içerisinin boşaltılarak tüm veriyi yeniden çekiyoruz. Ancak bu yöntem büyük veri bulunan tablolarda sunucu sistemlerimizin gereksiz olarak yorulmasına ve SSIS süreçlerinin uzamasına sebebiyet vermekte ve verimli bir yol olarak izlenmemektedir. Büyük veri tablolarında bu şekilde veri aktarımı yapmak için staging yapısını da kullanmak gerekmektedir. Staging ile Duplicate value ve Veri kaybı gibi hataların olmasını engellenmek amaçlanmaktadır. Bu süreçte en önemli konulardan biri ise, aktarım yapılacak tablonun UNIQUE bir kolonu, değişen veri ve yeni eklenen verinin yazıldığı zamanı belirten bir tarih kolonun olması gerekmektedir. 1. İlk olarak Visual Studio Integration Tool kullanarak yeni proje oluşturuyoruz. Görsel 1: Yeni Proje Oluşturma 2. Oluşturacağımız proje Integration Services Project […]

2 Yorum

  • Duran BÜYÜKÖZTÜRK 21 Ekim 2023

    Ellerine sağlık Bayram. Bu yaptığın testleri yazı sonun bir tablo halinde görebilmek çok güzel olurdu 😊

  • BAYRAM DUMAN 23 Ekim 2023

    Acemiliğimize gelmiş hocam, düzelttim 🙂

Yorum Yaz

Rastgele