Cumartesi , 30 Nisan 2016
Anasayfa / MAKALELER / Veri Tabanı / Stored Procedure Nedir ve Hangi Amaçla Kullanılır?

Stored Procedure Nedir ve Hangi Amaçla Kullanılır?

Merhabalar, Bu Yazımda sizlere irili ufaklı bir çok projede sıkça kullanılan Stored Procedure dan bahsedeceğim. Stored Procedure dilimizde Saklı Yordam,Prosedür gibi anlamlara gelmektedir.

Stored procedure ü genel olarak tanımlamaya kalkarsak şöyle ifade edebiliriz: Database server ında tutulan ve ilk derlemeden sonra bir daha derlenmeye ihtiyaç duyulmayan SQL ifadeleridir. Diğer taraftan Stored Procedure ler için; Uygulama katmanı yerine Veritabanı serverın da bulunan T-SQL ifadeleri de diyebiliriz.

strd1

Stored procedure ler, diğer dillerde olduğu gibi parametreli parametresiz olarak çalışabildiği gibi bir değerde döndürebilmektedir. Uygulamalarda yazılırken SP olarak da adlandırılmaktadır. Veritabanı işlemlerinin tamamını aynı şekilde Stored procedure lerlede yapılabilmektedir.

Stored procedure leri kullanmanın en güzel özelliklerinden birisi de belki de programlama dili kodları ile DML (Database manipulation Language) dediğimiz veritabanı işlemleri birbirinden ayrı tutulmasıdır. Ayrıca 1 defa yazıp derlediğiniz bir SP yi çok defa kullanabiliyor olmanızdır. Genel olarak Stored procedure lerin avantajlarını ve neden çok fazla kullanıldığını aşağıda maddeler halinde belirteceğim.

  1. Stored Procedure ler, Database server da tutulduğu için çok hızlı çalışırlar bununda sebebi 1 defa yalnız derledikten sonra 1 daha derlenmeye ihtiyaç duymamalarıdır. Halbuki Uygulama katmanında yazmış olduğunuz SQL kodu her çağırmada tekrar tekrar derlenmek zorundadır. Buda büyük çaplı projelerde ve 1 den çok client a hizmet eden serverlar için büyük bir zaman kaybı demektir.
  2. Network trafiği açısından mükemmel bir tasarruf sağlar.
  3. SQL ifadelerine otomatik parametreleme sağlar. SQL ifadelerinin geçtiği yerdeki bütün parametreleri değiştirme yerine sadece SP içindeki parametreleri yada kuralları değiştirip istediğinizi gerçekleştirebilirsiniz.Buda uygulamanızı modüler olmasını sağlar uygulamaların karmaşıklığını giderir.
  4. Stored procedure ler yazılırken programlama ifadelerine ek olarak (İf,while,for vb.) T-SQL komutlarını da kullanabilirsiniz.
  5. Stored procedure ler sadece giriş ve çıkış parametreleri uygulama katmanında göründüğü için daha güvenilirdir. Database server ına erişim genelde kullanıcı ID si ve şifreyle gerçekleştiğini düşünürsek SP kullanmanın kodlarımız açısından bir güven unsuru teşkil etmiş olduğunu açıkça söyleyebiliriz.

strd2

Yukarıda aklıma gelen Stored procedure lerin avantajlarını saydım. Piyasa uygulamalarının neredeyse hiçbirinde normal sql kodlarını bulamazsınız hemen hemen hepsi veritabanı işlemlerini Stored Procedure ler aracılığıyla gerçekleştirmektedirler.Yukarıda da dediğim gibi tek bir noktadan yönetilip birden çok yerde kullanılabilme ayrıca başka kişilerin kolayca görememesi SP leri çok avantajlı kılmaktadır.

Hele Network trafiği açısından düşündüğümüzde istemcinin göndermiş olduğu birçok satıra sahip SQL komutlarını server a yollamaktansa ve bunu her seferinde tekrar tekrar tekrar gerçeklemektense tek bir defa Stored Procedure in ismini sunucuya göndermek Network trafiğini çok rahatlaması anlamına gelir. Yukarıdaki Resim -2 de bu çok açıkça görülmektedir.

strd4

Genel amaçlı Stored Procedure lerin 4 çeşidi bulunmaktadır.

  1. Sistem Stored Procedure : Master veritabanında tutulan kullanımında sp_ prefixi kullanılan stored procedure lardır. Veritabanı üzerinde sistemle alakalı yönetimsel işlerde kullanılırlar.
  2. Kullanıcı Tabanlı Stored Procedure : Uygulamalarımız için kullandığımız sp lerdir.Bu sp leri çok rahat oluşturup silebilir ve değiştirebiliriz.
  3. Extended Stored Procedure :  Genelde .dll şeklinde derlenmiş olup Database Server ın işlevselliğini artıran bir çeşit stored procedure lerdir. Yalnız Master veritabanına eklenirler.
  4. CLR Stored Procedure : CLR ortamında herhangi bir dili kullanarak da stored procedure ler geliştirilen bir tür Stored procedure çeşididir.

Stored Procedure lerin çeşitlerini de saydıktan sonra ilk yazımın sonuna geldiğimi belirtmek isterim. Son olarak şunu söylemek isterim ki kendimde bizzat büyük çaplı bir projede denedim gördüm ki Stored Procedure kullanmak çok önemli yönetimsel olarak,ağ trafiği olarak,hız olarak ,1 çok yerde tekrar tekrar kullanılabilmesi gibi özellikleri barındırmasından dolayı çok muhteşem bir şey sizlerin de mutlaka uygulamalarınızda database işlemlerinizde bütün işlemleri Stored Procedure olarak yazmanızı tavsiye ederim.

Mehmet Salih Deveci

 

 

Mehmet Salih Deveci

Karadeniz Teknik Üniversitesi Bilgisayar Mühendisliği bölümünden 2011 yılında mezun oldu. C#, ASP.NET ve Oracle, SQL Server Veritabanları Teknolojileri Alanlarında Çalışmalarını Sürdürmektedir. Şuan Türk Telekom A.Ş de Veritabanı Yöneticisi olarak Kariyerini Sürdürmektedir.

Latest posts by Mehmet Salih Deveci (see all)

Hakkında Mehmet Salih Deveci

Karadeniz Teknik Üniversitesi Bilgisayar Mühendisliği bölümünden 2011 yılında mezun oldu. C#, ASP.NET ve Oracle, SQL Server Veritabanları Teknolojileri Alanlarında Çalışmalarını Sürdürmektedir. Şuan Türk Telekom A.Ş de Veritabanı Yöneticisi olarak Kariyerini Sürdürmektedir.

2 yorum

  1. İbrahim Serhat YILMAZ

    Çok güzel anlatmışsınız hocam, teşekkürler.

  2. sadık ayaz

    çok güzel bir makale

Cevapla

E-posta adresiniz yayınlanmayacak. Required fields are marked *

*