İlginizi Çekebilir
  1. Ana Sayfa
  2. Server 2019
  3. SQL Server 2019 Yenilikleri – Accelerated Database Recovery (ADR)
k_zd_m_

SQL Server 2019 Yenilikleri – Accelerated Database Recovery (ADR)

sql-server-2019-new-features-min
Ruijie Teknoloji Günü

Bu yazıda SQL Server ailesinin en yeni üyesi SQL Server 2019 ile beraber gelen yeni bir özellikten bahsedeceğim. Bu özellik veritabanının daha hızlı geri dönüş ve kurtarmasını sağlayan Accelerated Database Recovery (ADR) özelliğidir.

SQL Server’ın yeniden başlatıldığı veya kurtarılma gerçekleştiği anda Transaction Log yapısı üç adım ile hareket eder. Her bir adımdan kısaca değinmek gerekirse;

Analysis: Bu adımda son checkpoint işleminden yeniden başlatılma anına kadar veritabanındaki transactionlar taranır ve analiz edilir.

Redo: Bu adımda log en eski işlemden okumaya başlayarak commit edilmemiş transactionları log üzerinde commit eder.

Undo: Bu adımda ise sondan geriye doğru okuma yapılır ve açık veya commit edilmemiş bir transaction olması durumunda bu işlem rollback yani geri alınır.


Resim – 1

Eğer sistem üzerinde uzun süren işlem anında beklenmedik bir kapanma veya kitlenme durumu söz konusu olduğunda veritabanını kurtarma süresi yukarıdaki adımlar baz alındığında en son çalışan işler ile doğru orantılıdır. Özellikle büyük tablolar üzerinde yapılacak DML işlemleri sırasında böyle bir kesinti durumu ile karşılaşıldığında geri dönüş süreleri bir hayli uzun olmaktadır.

Accelerated Database Recovery (ADR)
Bu özellik adından anlaşılacağı üzere hızlandırılmış bir Transaction Log mimarisini ortaya çıkmaktadır. ADR özelliği ile beraber artık transaction bağımsız bir kurtarma durumu ortaya çıkmaktadır. Bu sayede problem anında veritabanı daha hızlı onarılmakta ve geri dönüş senaryolarını gerçekleştirmektedir. ADR özelliği temel 4 bileşen ile gerçekleşir.

Persisted version store (PVS): PVS, işlem anında değiştirilen verilerin önceki sürümlerini içerir. Örneğin, bir satır üzerinde güncelleme yapıldığında, her satırın önceki sürümü PVS’ye yazılır. Bunu yapmak için veritabanının her satırına 14 baytlık bir işaretçi eklenir.

Logical Revert: İşlemin geri alınması yani rollback anında aktif transaction veriyi PVS’den okur ve daha hızlı bir şekilde rollback işlemi gerçekleşmiş olur.

sLog: sLog’da belirtilen “s” harfi Secondary yani ikincil anlamına gelir. İkincil log olarak tanımlanmaktadır. PVS’ye yazılamayan işlemler In-Memory olarak burada tutulur.

Cleaner: Belli aralıklarla PVS üzerindeki gereksiz satır sürümlerini silme işlemidir.


Resim – 2

ADR’ın çalışma yapısı ile ilgili daha detaylı bilgiye buradan ulaşabilirsiniz.

Şimdi uygulamamıza geçelim. Öncelikle bu uygulamada veritabanı olarak Microsoft’un WideWorldImportersDW isimli test veritabanını kullanacağım. İlgili veritabanına buradan ulaşabilirsiniz.

Veritabanını Restore ettikten sonra aşağıdaki script ile çalışma yapacağım tabloyu oluşturuyorum.

Tabloyu oluşturduktan sonra ADR özelliğini kapatıp ardından tüm tablo içeriğini silecek bir transaction açıyorum.


Resim – 3

Henüz commit edilmemiş açık bir transaction var. Bu sırada log kullanımına bakıyoruz. Aktif bir transaction olduğundan log kullanımının yüksek olduğunu görmekteyiz.


Resim – 4

Hatta checkpoint alıp yeniden log büyüklüğüne baktığımızda kullanımda herhangi bir değişiklik olmadığı görülmektedir.


Resim – 5

Şimdi açık olan bu transaction’I Rollback ettiğimizde işlemin 36 saniye sürdüğünü görüyoruz.


Resim – 6

İlgili silme işlemini geri aldığımız için log kullanımına baktığımızda aktif transaction ile doldurduğu alanı boşalttığını ve kullanımın düştüğünü göreceğiz.


Resim – 7

Aynı işlemi ADR özelliğini aktif ederek yapacağız. Aşağıdaki script ile ADR özelliğini açıp PVS Filegroup ekliyoruz.

Tekrar aynı silme işlemini gerçekleştiren bir transaction açıyorum.


Resim – 8

Transaction açıldıktan sonra log kullanımını kontrol ediyorum ve checkpoint işlemi gerçekleştirip yeniden kontrol sağlıyorum. Görüldüğü gibi checkpoint sonrası log kullanımında bir azalma yani log truncate işlemi gerçekleşti. Aktif bir transaction olmasına rağmen log dosyasını truncate edebildik. ADR özelliğini açtığımız ve PVS Filegroup eklemesi yaptığımız için buradaki transaction işlemindeki kayıtlar PVS file da tutuldu.


Resim – 9

Ve son olarak tekrar Rollback işlemi gerçekleştiriyorum. Aşağıda görüldüğü gibi bu işlem saniye bile sürmeden gerçekleşti.

Resim – 10

Bu yazıda SQL Server 2019 ile beraber gelen Accelerated Database Recovery (ADR) özelliğini uygulamalı olarak gösterdim. Veritabanı kurtarma ve işlem geri alma senaryolarında nasıl etkili olduğunu birlikte gördük. Gelecek yazılarda SQL Server 2019’un diğer öne çıkan yeniliklerini incelemeye ve uygulamaya devam edeceğiz.

Bu konuyla ilgili sorularınızı https://forum.mshowto.org linkini kullanarak ulaşacağınız forum sayfamızda sorabilirsiniz.

Referanslar

https://www.mshowto.org

https://docs.microsoft.com/en-us/sql/relational-databases/accelerated-database-recovery-concepts?view=sql-server-ver15

TAGs: SQL Server 2019, SQL Server 2019 yenilikleri, SQL 2019, ADR, Accelerated Database Recovery, Transaction, Rollback, Transaction-log, log, sLog

Ruijie Teknoloji Günü
Yorum Yap

Yazar Hakkında

1993 yılında İstanbul’da doğdum. İstanbul Ticaret Üniversitesi Bilgisayar Mühendisliği ve Işık Üniversitesi İşletme Yüksek Lisans (MBA) mezunuyum. Lisans mezuniyetimin sonrasında iş hayatına Piri Medya (Albayrak Holding) şirketinde Veritabanı Geliştiricisi olarak başladım. Daha sonra buradaki veritabanı deneyimimi geliştirmek için Bilge Adam’da NBUY (Nitelikli Bilişim Uzmanı Yetiştirme) Veri Analizi ve Raporlama programını başarıyla tamamladım ve MCPS sertifikasını aldım. Program sonrasında kısa süreli SQL Developer olarak çalıştıktan sonra önce Ebebek’te ardından da Mavi’de DBA olarak çalıştım. Ana uzmanlık alanım MS SQL Server yönetimidir. Fakat bu deneyimler ile beraber çeşitli teknoloji ve uygulama üzerinde de yetkinlik kazandım. Bunlar; SAP Basis, SAP HANA DB, Oracle Exadata, Sybase DB, EMC Datadomain, Avamar, HP Storeonce, Idera SQL Tools, Solarwinds, AppDynamics, Oracle Cloud Control. Kariyerime Türkiye Finans Katılım Bankası bünyesinde DBA olarak çalışmaya devam ediyorum.

Yorum Yap