Azure Synapse Analytics'te ayrılmış SQL havuzları için saklı yordamları kullanma

Bu makalede saklı yordamlar uygulayarak ayrılmış SQL havuzu çözümleri geliştirmeye yönelik ipuçları sağlanır.

Beklentiler

Ayrılmış SQL havuzu, SQL Server kullanılan T-SQL özelliklerinin çoğunu destekler. Daha da önemlisi, çözümünüzün performansını en üst düzeye çıkarmak için kullanabileceğiniz ölçeği genişletmeye özgü özellikler vardır.

Ayrıca, ayrılmış SQL havuzunun ölçeğini ve performansını korumanıza yardımcı olmak için davranış farklılıkları olan ek özellikler ve işlevler vardır.

Saklı yordamlara giriş

Saklı yordamlar, ayrılmış SQL havuzu verilerinize yakın bir şekilde depolanan SQL kodunuzu kapsüllemek için harika bir yoldur. Saklı yordamlar ayrıca geliştiricilerin kodu yönetilebilir birimler halinde kapsülleyerek çözümlerini modüler hale getirmelerine yardımcı olur ve böylece daha fazla kod yeniden kullanılabilirliği sağlar. Her saklı yordam, parametreleri daha da esnek hale getirmek için de kabul edebilir.

Ayrılmış SQL havuzu, basitleştirilmiş ve kolaylaştırılmış bir saklı yordam uygulaması sağlar. SQL Server ile karşılaştırıldığında en büyük fark, saklı yordamın önceden derlenmiş kod olmamasıdır.

Genel olarak, veri ambarları için derleme süresi, büyük veri hacimlerinde sorgu çalıştırma süresine kıyasla küçük olur. Saklı yordam kodunun büyük sorgular için doğru şekilde iyileştirildiğinden emin olmak daha önemlidir.

İpucu

Amaç milisaniye değil saat, dakika ve saniye tasarrufu yapmaktır. Bu nedenle saklı yordamları SQL mantığı için kapsayıcılar olarak düşünmek yararlı olacaktır.

Ayrılmış bir SQL havuzu saklı yordamınızı yürüttüğünde, SQL deyimleri çalışma zamanında ayrıştırılır, çevrilir ve iyileştirilir. Bu işlem sırasında her deyim dağıtılmış sorgulara dönüştürülür. Veriler üzerinde yürütülen SQL kodu, gönderilen sorgudan farklıdır.

Saklı yordamları iç içe yerleştirme

Saklı yordamlar diğer saklı yordamları çağırdığında veya dinamik SQL yürüttüğünde iç saklı yordamın veya kod çağırmanın iç içe geçtiği söylenir.

Ayrılmış SQL havuzu en fazla sekiz iç içe yerleştirme düzeyini destekler. Buna karşılık, SQL Server iç içe yerleştirme düzeyi 32'dir.

Üst düzey saklı yordam çağrısı, iç içe düzey 1'e eşit.

EXEC prc_nesting

Saklı yordam başka bir EXEC çağrısı da yaparsa, iç içe düzey ikiye yükseltir.

CREATE PROCEDURE prc_nesting
AS
EXEC prc_nesting_2  -- This call is nest level 2
GO
EXEC prc_nesting

İkinci yordam daha sonra bazı dinamik SQL yürütürse iç içe geçirme düzeyi üçe yükseltir.

CREATE PROCEDURE prc_nesting_2
AS
EXEC sp_executesql 'SELECT 'another nest level'  -- This call is nest level 2
GO
EXEC prc_nesting

Ayrılmış SQL havuzu şu anda @@NESTLEVEL desteklemez. Bu nedenle, iç içe düzeyini izlemeniz gerekir. Sekiz iç içe geçme düzeyi sınırını aşma olasılığınız düşüktür. Ancak, bunu yaparsanız, kodunuzu bu sınır içindeki iç içe yerleştirme düzeylerine uyacak şekilde yeniden çalışmanız gerekir.

EKLE.. YÜRÜTMEK

Ayrılmış SQL havuzu, insert deyimiyle saklı yordamın sonuç kümesini kullanmanıza izin vermez. Ancak kullanabileceğiniz alternatif bir yaklaşım vardır. Bir örnek için geçici tablolarla ilgili makaleye bakın.

Sınırlamalar

Transact-SQL saklı yordamlarının ayrılmış SQL havuzunda uygulanmayan bazı yönleri şunlardır:

  • geçici saklı yordamlar
  • numaralandırılmış saklı yordamlar
  • genişletilmiş saklı yordamlar
  • CLR saklı yordamları
  • şifreleme seçeneği
  • çoğaltma seçeneği
  • tablo değerli parametreler
  • salt okunur parametreler
  • varsayılan parametreler
  • yürütme bağlamları
  • Return deyimi

Sonraki adımlar

Daha fazla geliştirme ipucu için bkz. geliştirmeye genel bakış.