Depolanan Prosedürler Yüksek Verimlilik ve Güvenlik Avantajları Sağlıyor
Microsoft SQL Server, Transact-SQL deyimlerini yönetilebilir bloklara gruplandırarak veritabanı geliştirme sürecini basitleştirmek için saklı yordam mekanizmasını sağlar. Depolanan yordamlar, elde ettikleri verimlilik ve güvenlik faydalarını zamanında belirleyen değerli SQL Server geliştiricileri tarafından takdir edilmektedir.
Saklı Prosedürlerin Kullanmanın Yararları
Bir geliştirici neden saklanmış prosedürleri kullanmalıdır?
İşte bu teknolojinin temel faydaları şunlardır:
- Önceden derlenmiş yürütme: SQL Server saklanan her yordamı bir kez derler ve yürütme planını yeniden kullanır. Bu saklı prosedürler tekrar tekrar denir, büyük bir performans artışı ile sonuçlanır.
- Azaltılmış istemci / sunucu trafiği: Ağ bant genişliği ortamınızda bir sorunsa, saklı yordamların uzun SQL sorgularını tel üzerinden iletilen tek bir satıra indirebileceğini öğrenmekten mutluluk duyarsınız.
- Kod ve programlama soyutlamasının verimli bir şekilde yeniden kullanılması: Saklı yordamlar, birden çok kullanıcı ve istemci programı tarafından kullanılabilir. Bunları planlı bir şekilde kullanırsanız, geliştirme döngüsünün daha az zaman aldığını görürsünüz.
- Gelişmiş güvenlik kontrolleri: Kullanıcılara, temel alınan tablo izinlerinden bağımsız olarak saklı bir prosedürü yürütme izni verebilirsiniz.
Saklı yordamlar, kullanıcı tanımlı işlevlere benzer, ancak ince farklılıklar vardır.
yapı
Saklı yordamlar, diğer programlama dillerinde görülen yapılara benzer.
Verileri, yürütme süresinde belirtilen girdi parametreleri biçiminde kabul eder. Bu girdi parametreleri (uygulanıyorsa), bazı sonuçları üreten bir dizi ifadenin uygulanmasında kullanılır. Bu sonuç, bir kayıt kümesi, çıkış parametreleri ve bir dönüş kodu kullanılarak çağrı ortamına döndürülür.
Bu bir ağız dolusu gibi gelebilir, ancak saklı yordamların aslında oldukça basit olduğunu göreceksiniz.
Örnek
Bu sayfanın alt kısmında gösterilen envanter tablosuyla ilgili pratik bir örneğe bakalım. Bu bilgiler gerçek zamanlı olarak güncellenir ve depo yöneticileri sürekli olarak depolarında depolanan ve sevkiyat için mevcut olan ürün seviyelerini kontrol ederler. Geçmişte, her yönetici aşağıdakilere benzer sorguları çalıştırabilirdi:
SELECT Ürün, Miktar
Envanterden
WHERE Depo = 'FL'
Bu, SQL Server'da yetersiz performansla sonuçlandı. Bir depo yöneticisi her sorguyu çalıştırdığında, veritabanı sunucusu sorguyu yeniden derlemek ve sıfırdan yürütmek zorunda kaldı. Ayrıca, depo yöneticisinin SQL bilgisine ve tablo bilgilerine erişmek için uygun izinlere sahip olmasını da gerektirdi.
Bunun yerine, saklı bir prosedür kullanılarak işlem basitleştirilebilir. İşte bir depo için stok seviyelerini alan sp_GetInventory adında bir prosedürün kodu.
CREATE PROSEDÜRÜ sp_Get Envanteri
@location varchar (10)
GİBİ
SELECT Ürün, Miktar
Envanterden
WHERE Depo = @location
Florida depo yöneticisi daha sonra komutları vererek envanter seviyelerine erişebilir:
EXECUTE sp_GetInventory 'FL'
New York depo müdürü, o alanın envanterine erişmek için aynı saklı yordamı kullanabilir:
EXECUTE sp_GetInventory 'NY'
Verilmiş, bu basit bir örnektir, ancak soyutlamanın yararları burada görülebilir. Depo yöneticisinin SQL veya prosedürün iç işleyişini anlaması gerekmiyor. Performans açısından bakıldığında, saklı yordam harikalar yaratır. SQL Server bir kez bir yürütme planı oluşturur ve daha sonra yürütme zamanında uygun parametreleri takarak yeniden kullanır.
Artık saklı prosedürlerin faydalarını öğrendiniz, oraya çıkın ve bunları kullanın.
Birkaç örnek deneyin ve elde edilen performans iyileştirmelerini ölçün - şaşıracaksınız!
Envanter Tablosu
İD | Ürün | Depo | miktar |
142 | Yeşil fasulye | NY | 100 |
214 | bezelye | FL | 200 |
825 | Mısır | NY | 140 |
512 | Lima fasulyesi | NY | 180 |
491 | Domates | FL | 80 |
379 | Karpuz | FL | 85 |