sql performance etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
sql performance etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

26 Temmuz 2010 Pazartesi

Connection Pooling Neden Önemlidir?

Öncelikle Connection Pooling kavramını bilmeyenler için kısa bir açıklama yapayım.

Connection pooling , veri tabanı ile bağlantı kurduğumuz uygulamalarımızda veriye erişim için kullancığımız connection türlerini bir defalığa mahsus havuza atmamızı ve daha sonra aynı connectiona ihtiyaç duyduğumuzda yeni bir connection oluşturmak yerine havuzda var olan connection üzerinden verilerie erişmemizi sağlayan tekniktir diyebiliriz.

Çok kullanıcılı ve veri yükü fazla olan sistemlerde işlerimizi hızlandırmak adına çok avantaj sağlamaktadır. Örneğin 500.000 satırdan oluşan bir veri kümemize erişim hakkı olan 100 kullanıcımız var diyelim.

Herbirisi sisteme girdiğinden ayrı ayrı connection oluşturulu sorgu çalıştırıldığında sistemin performansı ne olur?
Yada connection pooling yaptığımızda sistemin performansı ne olur?

Sanırım kullanım amacını az çok kavradık.

Şimdi işlemimizi kısa bir örnekle pekiştirelim..

Önce Pooling Özelliğini False Yaparak 5000 Kere Bağlantının Açılıp Kapandığında Geçen Süreye Bakalım..


Sonrada Pooling Özelliğini True Yapalım ve 5000 Bağlantıya Tekrar Bakalım!
Not : Eğer False Yapmazsanız Zaten Default Olarak True Olacaktır.

Sanırım Açıklayıcı Olmuştur.. İyi Çalışmalar..

19 Temmuz 2010 Pazartesi

SQL Server ' da "Truncate Table" İfadesi Ne İşe Yarar?

Merhabalar,

Bu ifadedeyi az evvel bir uygulama esnasında kullanıyordum ve aklıma gfeldi sizlerede yararı dokunabilir diye buraya açıklamak istedim.

Truncate ifadesi ne iş yapar?

Truncate yaptığı işe bakılırsa, tabloyu drop etmeden içindeki tüm verileri silmeye yarar. Şimdi bazılarınızın aklına şu sopru gelebilir :

E zaten Delete bu iş için kullanılmıyor mu?
örn : "delete from XXX" (where ifadesi olmadan kullanılırsa evet tablodaki tüm verileri siler!!

Ama  burada dikkat etmemiz gereken iki önemli nokta var. Hemde gerçekten çok önemli!!

Delete ile yaptığımız bu işlemde en son kaydımızın ID numarasının 250 olduğunu varsayalım. Tablodaki tüm verileri sildik ama yeni bir kayıt eklemek istediğimizde ID numarası 251 olacaktır. Ve bunu istemeyiz!!

Ayrıca en önemlisi, varsayalımki siz ilgili tablodan bir kayıt silindiğinde bi iş gerçekleşmesi için bir trigger yazdınız ve 250 kayıt silindi, dolayısıyla 250 kere bu trigger çalışacaktır.

Fakat TRUNCATE kullandığımızda tablomuzda ID numaralarınız tekrardan 1den başlayacak şekilde temizlenecektir ve hiç bir trigger bizi farkedemeyecek dolayısıyla tetiklenmeyecektir.

Aradaki farkları net ifade ettim sanıyorum..

Bu arada kullanımına örnek verecek olursak : "truncate table XTable"

SQL Server'da "SET NOCOUNT ON" Ne İşe Yarar..

Bildiğimiz gibi SQL serverda herhangi bir tablo üzerinde bir manipulasyon yaptığımızda
-insert,update,delete,select- ( Herhangi bir tanesi olması yeterli!)
"X rows affected." Şeklinde bir mesaj alırız. Bu mesaj SQL server üzerinde yapılan işlemden sonra kaç satırın etkilendiğinin sayılması ardından bize dönen mesajdır.

Fakat çok sayıda satırın etkilendiği durumlarda, bu binlerce hatta milyonlarca olabilir, etkilenen satırların teker teker sayılıp bize bu sonucun döndürülmesi pek isteyeceğimiz bişey olmayacaktır performans açısından. Dolayısıyla bu özelliği kapatmak isteyebiliriz.


Bunun için yazdığımız sorgunun üstüne "SET NOCOUNT ON" yazmamız yeterlidir. Aksini istersekte tahmin edebileceğiniz gibi "SET NOCOUNT OFF" yazarız.

Şimdi bu durumları örnekleyerek daha iyi anlayalım..

Tablomuzda herhangi bir ayar yapmazsak satır sayma özelliği aktif olarak gelecektir. ..

SET NOCOUNT Özelliğini ON Yaptığımızda Aldığımız Sonuç..



Özelliği Tekrar OFF Hale getirdiğimizde , sorguyu tekrar çalıştırtıyoruz ve aldığımız sonuç yine satırların sayıldığını gösteriyor..



Umarım Anlaşılır bir açıklama olmuştur..