HammerDB ile Veritabanınızın Performansını Ölçün

Selamlar, bu yazımda ileride çok kullanacağımı düşündüğüm bir ürünü sizinle paylaşmak istiyorum. Ürünün adı HammerDB. HammerDB açık kaynak kodu olan bir ürün olduğu için bedava. Bedava olduğundan içiniz rahat bir şekilde her koşulda kullanabiliriz.

Bu program öncelikle sizin veritabanınızın diğerlerine göre ne kadar hızlı olduğunu ölçmüyor. Bu programın ölçtüğü veritabanınızın size göre ne kadar performanslı olduğu. Bu son cümlemde kafanız karışmış olabilir. Bunu bir örnek ile açmak istiyorum; Düşünelim ki müşterilerinizden birine gittiniz ve göreviniz bir makinaya SQL Server 2012 kurmak. SQL Server 2012’nizi fabrika ayarları ile kurdunuz daha sonra HammerDB’yi çalıştırarak kurduğunuz SQL Server’ın ne kadar Transaction per Minute (TPM) verdiğine baktınız ve sonuçları bir yere kaydettiniz. Daha sonra SQL Server’ınıza birkaç performans ayarlamaları yaptınız ve bu yaptığınız değişikliklerin gerçekten SQL Server’ınızı hızlandırıp hızlandırmadığını merak ediyorsunuz. Tekrar daha önce yaptığınız ayarlar ile HammerDB’yi tekrar çalıştırdığınızda çıkan sonuçlar size bir önceki sonuçlara göre bir benchmark sunacaktır. Burada dikkat ederseniz başka SQL Server’lar ile karşılaştırma yapmıyoruz. Her zaman kendi veritabanımızın performansını kendisi ile ölçüyoruz. Bu fikir ilk başta garip gelebilir ama biraz düşündüğünüzde aslında olması gerekenin bu olduğunu göreceksiniz.

Şimdi gelin beraber bir örnek yapalım;

  1. İlk olarak HammerDB programını indirelim. Bunun için http://hammerora.sourceforge.net/ adrese girerek Download sayfasından işletim sisteminize uygun olan versiyonu indirebilirsiniz.

     

  2. HammerDB’yi bilgisayarımıza indirdikten sonra kurmaya başlayalım. Programı kurmadan önce size benim demo ortamımdan bahsetmek isterim. Bu çalışma için 2 adet Hyper-V sanal makinası oluşturdum. Bunlardan biri Veritabanı sunucusu olarak hazırladığım Windows Server 2008 R2 üzerine kurduğum SQL Server 2012 bu makinamı 4 GB RAM olarak ayarladım. İkinci sanal makinam ise istemci olarak düşündüğüm Windows 7 makinası. Genel mantığım HammerDB programını veritabanı sunucumun üzerinde çalıştırmamak, ayrı makinalarda çalıştırarak gerçeğe daha yakın bir demo yapabileceğimi düşündüm.
  3. HammerDB kurulumunda özel yapmanız gereken bir aksiyon yok, indirdiğiniz setup dosyasını çalıştırarak yüklemeyi tamamlayabilirsiniz. Program kurulduktan sonra kurduğunuz klasörde hammerdb.bat dosyası çalıştırarak programı açabilirsiniz. Ben kendi bu “.bat” dosyasının masaüstümde bir kısa yolunu yarattım ve kendime özel bir ikon verdim. Bu arada şöyle bir soru aklınıza gelebilir, HammerDB niye bu kadar eski bir yapı kullanıyor, bunun nedeni ilk olarak HammerDB Oracle veritabanlarını test etmek için kurgulanmış bir ürün olması, daha sonra Windows ortamına geçirilerek bir ara yüz verilmiş.
  4. HammerDB kısayoluna basarak programı çalıştırıyoruz. İlk olarak karşımıza aşağıdaki ekran çıkıyor. Sol tarafta Benchmark başlığı altında birçok veritabanı ürününü görüyorsunuz. En üstte Oracle olmasının sebebi biraz önce bahsettiğim konu, HammerDB orijinal olarak Oracle için geliştirilmiş olması. Oracle’ın yanı sıra benim asıl kullanma amacımı karşılayan SQL Server var daha sonra da MySQL, PostgreSQL ve Redis bulunmakta. Ben bu yazımda size SQL Server üzerinde HammerDB’yi anlatacağım.

     

     

  5. HammerDB’yi SQL Server’a çevirmek için SQL Server yazısına iki kere tıklamamız yeterli olacaktır. Bu sayede SQL Server listenin en üstüne geçer ve altında TPC-C menüsü açılır. Bu adımda aklınıza TPC-C ne olduğu sorusu gelebilir. TPC-C, TPC (Transaction Processing Performance Council) organizasyonunun geliştirdiği veritabanı performans ölçümleme standardıdır. Bu organizasyonun TPC-C gibi birçok standardı var, TPC-C özellikle OLTP veritabanlarının performans ölçümlemelerinde kullanılır. TPC, TPC-C ye ek olarak daha güncellenmiş bir standart olan TPC-E’de sunmaktadır. Fakat HammerDB şu an için sadece TPC-C ve TPC-H standardına ölçümleme yapmakta ve bu benim fikrimce oldukça yeterli. TPC hakkında daha fazla bilgi için http://www.tpc.org/ sitesini ziyaret edebilirsiniz.

     

  6. SQL Server’a iki kere basarak aktive ettikten sonra karşımıza aşağıdaki gibi bir ekran geliyor. TPC-C konusu altında açılan seçenekleri gelin tek tek üzerinden geçelim.
    1. Schema Build: Bu ekrandan SQL Server’ımıza bağlantı ayarlarını yapıyoruz ve HammerDB’nin kuracağı veritabanının büyüklüğünü belirliyoruz. Burada önemli olan HammerDB sizin kendi oluşturduğunuz bir veritabanını test etmez. HammerDB kendi veritabanı yapısı sizin verdiğiniz ayarlara göre kurguladıktan sonra onun üzerinde performans değerleri verir.

      Schema Build seçeğinin üzerine tıkladığınızda 2 tane daha seçenek açılıyor, açılan Options seçeneğinden veritabanı sunucunuzun bağlantı bilgilerini veriyorsunuz. Aşağıdaki ikinci ekran görüntüsünde gördüğünüz gibi temel bağlantı bilgilerini verdikten sonra önemli olarak SQL Server Database adını yazmanızı istiyor burayı olduğu gibi de bırakabilirsiniz veya kendiniz bir isim de atayabilirisiniz. Bundan daha önemlisi Number of Warehouses ayarı. Bu ayar ile yaratacağınız veritabanının büyüklüğünü belirliyorsunuz ben genel olarak 10 warehouse olarak ayarlıyorum bu aşağı yukarı 4-5 GB’lık bir veritabanı oluşturuyor. Burada bahsettiğimiz Warehouse kelimesi aklınıza takılabilir, bunu Datawarehouse ile karıştırmayın bu TPC-C test standardından gelen bir kelime. TPC-C standardı bizim için bir senaryo kurgulamış ve o senaryo doğrultusunda testler yapıyor. Bu senaryoya göre hazırladığımız veritabanı bir ülke içerisinde farklı şehirlerde birden çok ürün deposu olan bir şirketin sipariş veritabanı. Siz Number of Warehouse‘u belirlerken aslında bu şirketin kaç tane ürün deposu olduğunu belirliyorsunuz. Bu sayıya göre TPC-C hazırlayacağı veritabanın büyüklüğünü belirliyor. Virtual Users to Build Schema ise aynı anda kaç farklı sanal kullanıcı bu database’i oluşturacağının sayısını gösteriyor, eğer SQL makinanız kuvvetli ise bu sayıyı yüksek tutabilirsiniz. Bütün ayarları ayarladıktan sonra OK basıyoruz.

    

Options menüsünden veritabanımız ile ilgili ayarlamaları tanımladıktan sonra sıra geldi veritanımızı oluşturmaya. Bunun için Schema Build altındaki Build seçeneğine iki kere tıklıyoruz. Burada HammerDB veritabanımızı oluşturmaya başlayacağını iletiyor bu mesajada OK diyerek geçtiğimizde HammerDB veritabanını oluşturmaya koyuluyor. Veritabanı oluşturma süreci bizim Number Of Warehouses ayarını kaç yaptığımızla ilgili benim ortamımda 10 warehouse ortalama 30 dakika sürüyor. Veritabanı yaratımı başladığında HammerDB bizim belirlediğimiz gibi 4 sanal kullanıcıya ek olarak 1 tane her zaman kendi kullanıcısını ekliyor. Eklediği bu kullanıcı ile diğer kullanıcıların adına işlemler yapıyor. Bu adımdayken üst menüdeki kalem ikonu bulunan (Transaction Counter) düğmeye de basarsak bu süreçte dakikada veritabanına geçen Transaction sayısını canlı olarak görebiliriz buna Transaction Per Minute (TPM) deniyor.

    

Bu işlemler devam ederken SQL Server makinamıza bakalım, dikkat ederseniz HammerDB şimdiden veritabanını ve tabloları oluşturdu ve içlerini doldurmaya başladı. HammerDB tamamen işini bitirdikten sonra bütün Virtual User’ların Status’ları yeşil olacaktır ve TPM 0’a düşecektir. Bundan sonra Transaction Counter ve Destroy Virtual Users düğmesine basarak bu süreci sonlandırabiliriz.

        

  1. İstediğimiz büyüklükteki veritabanımızı hazırladığımıza göre artık üzerinde performans testlerine başlayabiliriz. HammerDB 2 türlü test yapabiliyor. İlki bizim tanımladığımız kullanıcı sayısında belirtilen veritabanından maksimum ne kadar TPM alabildiğimizi gösterir. Tanımladığımız kullanıcı sayısını da şu şekilde düşünebilirsiniz. Bir alışveriş sitesi yaptınız fakat sitenizin kullandığı veritabanının aynı anda kaç kullanıcıya ne kadarlık bir hizmet kalitesi verebileceğini öğrenmek istiyorsunuz. İşte burada kullanıcı sayısı devreye giriyor. Siz eğer kullanıcı sayınızı 10 olarak ayarlarsanız, HammerDB sanki SQL Server’a 10 kişi aynı anda bağlanmış ve sürekli işlem yapıyormuş gibi test yapmaya başlar. İlk olarak bahsettiğim testte kullanıcı sayısı sizin tanımladığınız sayıda sabittir, ikinci test yapısına Autopilot denilmiş. Bu test de siz HammerDB’ye belli bir kullanıcı sayısından başlayıp belli bir kullanıcı sayısına kadar çıkmasını söylüyorsunuz. Örnek olarak 2 kullanıcı ile test yapmaya başla ondan sonra 2 şey kullanıcı ekleyerek 24 kullanıcıya kadar çık ve bu sırada TPM’ları kaydet. Bu sayede siz veritabanınızın kaç kullanıcıya kadar rahatlıkla çıkabildiğini ve kaç kullanıcıdan sonra TPM değerinin düşmeye başladığını görebilirsiniz. Gelin ilk olarak ilk bahsettiğim testi gerçekleştirelim.

     

  2. Yukarıdaki menüden kırmızı ışık olan düğmelere basarak veritabanı yaratmayı tamamladıktan sonra sol menüden Driver Script sekmesini açıyoruz ve altındaki Options seçeneğini seçiyoruz. Options seçeneğine bastığımızda daha önceki ayarladığımız veritabanı ayarları ile beraber ek ayarlar geliyor. Bu ayarlarda TPC-C Driver Script ayarına kadar bir değişiklik yapmamıza gerek yok. TPC-C Driver Scirpt ayarında Timed Test Driver Script seçeneğini seçiyoruz. Bu sayede yapacağımız testin bir zaman kısıtı olduğunu belirtmiş oluyoruz. Bu seçeneği seçtikten sonra en altdaki Minutes of Rampup Time ve Minutes for Test Duration ayarları değiştirilebilir hale geliyor. Bu ayarlar kısaca şu anlama geliyor. Minutes of Rampup Time teste başlamadan önce HammerDB’nin SQL Server’daki cache’leri hazır hale getirmesine verdiğimiz süre. Bu zamanı çok kısa tutmak testimizin gerçekçi sonuç vermemesine yol açabilir çünkü gerçek sistemlerde devamlı kullanıldıkları için SQL Server Cache’leri hali hazırda doludur fakat bizim test senaryomuzda biraz önce hazırladığımız veritabanımız ilk defa kullanılacak ve SQL Server daha Cache’leme fırsatı bulamadı. İkinci seçenek ise Minutes for Test Duration bu ayarda testimizin ne kadar süreceğini belirtiyor, bir başka değişle HammerDB 2 dakika hazırlıktan sonra 5 dakika boyunca veritabanımızdan alabildiği kadar TPM almaya çalışacak bu da CRUD işlemleri yapacağı anlamına geliyor. Şimdilik bu ayarları oldukları gibi bırakalım, ve ilk 7 (2+5) dakika sürecek testimize başlayalım. Pencereyi OK tuşuna basarak kapatalım.

     

     

  3. Options penceresini kapattıktan sonra hemen bir sonraki seçenek olan Load seçeğine 2 kere tıklıyoruz. Load işlemi ile HammerDB
    Options seçeneğinde tanımladığımız bütün ayarların script’ini çıkartıyor ve Script Editor‘e basıyor. Yeni scriptimiz hazır olduğuna göre, üst menüden testte kullanacağımız sanal kullanıcıları yaratmamız gerekiyor. Bunun için üst menüden Create Virtual Users düğmesine basıyoruz ve sanal kullanıcılarımız aşağıdaki listede beliriyor. Şu anda hala testimiz başlamadı, başlatmak için Create Virtual Users düğmesinin hemen solundaki Run Virtual Users düğmesine basmamız gerekiyor. Artık bundan sonra testimiz çalışmaya başladı Virtual User Output ekranında HammerDB bize Virtual User 1 kullanıcısının altında testin hangi fazında olduğunu gösteriyor. Diğer kullanıcıların altında bir bilgi yazmıyor onların bütün yaptıkları toplanarak Virtual User 1 kullanıcının altında gösteriliyor. Bu sırada üst menüden Transaction Counter‘ı da açarsak anlık olarak kaç TPM aldığımızı görebiliriz. Test bittiği zaman Virtual User 1’in altında ortalama kaç TPM alabildiğimizi HammerDB bize gösteriyor. Burada TPM ve NOPM diye değerler bulunuyor, zaten TPM’i bahsettiğimiz için tekrar açılmaya gerek yok fakat NOPM Number of Orders Per Minute demektir. Bu da TPC-C standardındaki bir test değeri. Ben şahsen TPM’i takip ediyorum bana daha genel ve açıklayıcı bir değer geliyor. Test’den çıkmak için tekrar üst menüdeki kırmızı trafik ışığı olan düğmeye basmanız yeterli olacaktır.

    

  1. Son olarak AutoPilot özelliğini göstermek istiyorum. Bu özellik sayesinde daha öncede bahsettiğimiz gibi HammerDB sizin belirlediğiniz uzunluklarda ve sanal kullanıcı sayılarında arka arkaya SQL Server testleri yaparak, SQL Server’ınızın aynı anda ne kadar kullanıcıya yeterli hizmet verebildiğini gösterir. AutoPilot’u kullanmadan önce aktive etmemiz gerekiyor, AutoPilot sekmesinin altındaki Options seçeneğine 2 kere tıklayarak özelliklerini açın. Buradan AutoPilot Enabled seçeneğini seçin. Bu seçeneği seçtiğinizde aşağıdaki ayarlar aktif hale gelecektir. Bu ayarlar testimizden beklediğimiz sonuçları almak için önemli ayarlar. Minutes per Test in Virtual User Sequence ayarı her test fazının kaç dakika süreceğini gösterir. Bu sayıyı çok az yaparsak Driver Script’de ayarladığımız 2 dakika ısınma sonra 5 dakika test yani toplam 7 dakika dolmadan diğer faza atlamış oluruz ki buda istediğimiz bir durum olmaz. Bu süre yukarıda tanımladığımız ısınma ve test süresinden 1-2 dakika uzun olmalıdır ki fazlar arasında SQL Server’a duraksayacağı bir zaman verebilelim. Bu ekrandaki ikinci önemli ayar da Virtual User Sequence ayarıdır, bu ayar HammerDB’nin her test fazında kaç sanal kullanıcı kullanacağını belirtir. Örnek olarak aşağıdaki ekranda gördüğünüz ayarlarla AutoPilot’u çalıştırdığımızda ilk olarak 2 kullanıcı ile 10 dakika boyunca test yapılır, daha sonra 3 kullanıcı ile 10 dakika boyunca test yapılır ve bu 25 kullanıcıya kadar çıkar ve test sonuçlanır. HammerDB her faz sonucunu bize çıktı olarak verir. Gelin şimdi bu ayarlarla AutoPilot’umuzu çalıştıralım ve sonuçları beraber değerlendirelim. AutoPilot’u başlatmak için üst menüdeki sağdaki AutoPilot düğmesine basınız. Test başlayınca ekrandaki AutoPilot sekmesi aktif olacaktır ve bize süreç ile ilgili bilgi verecek.

     

     

  2. AutoPilot testimiz bittikten sonra HammerDB bize sonuçları AutoPilot sekmesinde gösterir. Ben şahsen bu sayılara bakarak tam olarak durumu anlayamıyorum, bu yüzden kendime bir excel dökümanı hazırladım. Bu dökümana her fazdaki sonuçları girdiğimde bana grafik hazırlıyor ve bu sayede daha anlaşılır bir sonuç alabiliyorum.

  1. Excel dökümanını aşağıdaki linkten indirip kullanabilirsiniz. Aşağıdaki ekran görüntüsünde gördüğünüz gibi biraz önce yaptığımız AutoPilot testinin sonuçlarını sizinle paylaştığım Excel dökümanına ekledim. Hazırladığım Excel tablosunda Transaction Per Minute (TPM) değerlerini HammerDB sonuçlarından doldurdum. Transaction Per Minute Per User ise TPM / Concurrent Users formülünün sonucu olarak hesapladığım bir değer. Bu iki değer ve grafik sayesinde SQL Server’ımın aynı anda kaç kullanıcıdan sonra performansında düşüş olduğunu ve TPM artışının kullanıcı başına düşen TPM’i ne kadar etkilediğini görebiliyorum. Bu testleri arka arkaya farklı SQL Server ayarları ile çalıştırarak farklılıkları gözlemleyebilirsiniz.

Umarım HammerDB benim olduğu kadar sizin de hoşunuza gider ve kullanma şansınız olur. Bu konu hakkında herhangi bir sorunuzu veya eklemek istediğiniz kısmı bana yazmaktan çekinmeyin.

Hazırladığım Excel belgesinin linki: http://1drv.ms/1pXJIpj

Reklamlar

2 responses to “HammerDB ile Veritabanınızın Performansını Ölçün

  1. Öncelikle ellerinize sağlık güzel bir paylaşım olmuş. HammerDB’yi Oracle&SQLServer performans karşılaştırması için kullanmamız doğru olur mu?

    • Bir fikir vermesi için kullanabilirsiniz bana göre, ama sadece buradan çıkacak sonuçlara göre bir karar vermek sağlıklı olmayacaktır. Kurumunuz için doğru ürünü seçerken maliyet, destek hizmetleri, destek maliyetleri, entegrasyon becerileri, yan ürünler vs. konularıda göz önüne almak gerekir.

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Google+ fotoğrafı

Google+ hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Connecting to %s