مشاركة عبر


استخدام الإجراءات المخزنة لتجمعات SQL المخصصة في Azure Synapse Analytics

توفر هذه المقالة نصائح لتطوير حلول تجمع SQL مخصصة من خلال تنفيذ الإجراءات المخزنة.

ما المتوقع

يدعم تجمع SQL المخصص العديد من ميزات T-SQL المستخدمة في SQL Server. والأهم من ذلك، أن هناك ميزات محددة قابلة للتوسيع يمكنك استخدامها لزيادة أداء الحل الخاص بك.

أيضًا، لمساعدتك على الحفاظ على حجم وأداء تجمع SQL المخصص، هناك ميزات ووظائف إضافية لها اختلافات سلوكية.

تقديم الإجراءات المخزنة

تعد الإجراءات المخزنة طريقة رائعة لتغليف التعليمات البرمجية لـ SQL، والتي يتم تخزينها بالقرب من بيانات تجمع SQL المخصصة. تساعد الإجراءات المخزنة أيضًا المطورين على تشكيل حلولهم من خلال تغليف التعليمات البرمجية في وحدات قابلة للإدارة، ما يسهل المزيد من إمكانية إعادة استخدام التعليمات البرمجية. يمكن أن يقبل كل إجراء مخزن أيضًا معلمات لجعلها أكثر مرونة.

يوفر تجمع SQL المخصص تنفيذ إجراءات مخزنة سلسة ومبسطة. الاختلاف الأكبر مقارنة بـ SQL Server هو أن الإجراء المخزن ليس رمزًا مُجمَّعًا مسبقًا.

بشكل عام، بالنسبة لمستودعات البيانات، يكون وقت التحويل البرمجي قليلاً مقارنة بالوقت المستغرق لتشغيل الاستعلامات مقابل وحدات تخزين البيانات الكبيرة. من الأهمية بمكان التأكد من تحسين رمز الإجراء المخزن بشكل صحيح للاستعلامات الكبيرة.

تلميح

الهدف هو توفير الساعات والدقائق والثواني وليس المللي ثانية. لذلك، من المفيد التفكير في الإجراءات المخزنة كحاويات لمنطق SQL.

عندما ينفذ تجمع SQL المخصص الإجراء المخزن، يتم تحليل عبارات SQL وترجمتها وتحسينها في وقت التشغيل. خلال هذه العملية، يتم تحويل كل عبارة إلى استعلامات موزعة. رمز SQL الذي يتم تنفيذه على البيانات يختلف عن الاستعلام المقدم.

تضمين الإجراءات المخزنة

عندما تستدعي الإجراءات المخزنة إجراءات مخزنة أخرى، أو تنفذ SQL ديناميكيًا، يُقال إن الإجراء المخزن الداخلي أو استدعاء التعليمات البرمجية متداخلاً.

يدعم تجمع SQL المخصص ثمانية مستويات تداخل كحد أقصى. في المقابل، مستوى التدخل في SQL Server هو 32.

استدعاء الإجراء المخزن ذي المستوى الأعلى يعادل تداخل المستوى 1.

EXEC prc_nesting

إذا أجرى الإجراء المخزن أيضًا مكالمة EXEC أخرى، يرتفع مستوى العش إلى اثنين.

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

إذا نفذ الإجراء الثاني بعض لغة SQL الديناميكية، فإن مستوى التداخل يرتفع إلى ثلاثة.

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

لا يدعم تجمع SQL المخصص @@NESTLEVEL حاليًا. على هذا النحو، تحتاج إلى تتبع مستوى التداخل. من غير المحتمل أن تتجاوز حد مستوى التداخل الثمانية. ولكن، إذا قمت بذلك، تحتاج إلى إعادة صياغة التعليمات البرمجية الخاصة بك لتناسب مستويات التداخل ضمن هذا الحد.

INSERT..EXECUTE

لا يسمح لك تجمع SQL المخصص باستهلاك مجموعة نتائج إجراء مخزن مع عبارة INSERT. ومع ذلك، هناك نهج بديل يمكنك استخدامه. على سبيل المثال، راجع المقالة على الجداول المؤقتة.

التقييدات

هناك بعض جوانب إجراءات Transact-SQL المخزنة التي لا يتم تنفيذها في تجمع SQL المخصص، وهي كما يلي:

  • الإجراءات المخزنة المؤقتة
  • ترقيم الإجراءات المخزنة
  • الإجراءات المخزنة الموسعة
  • إجراءات CLR المخزنة
  • خيار التشفير
  • خيار النسخ المتماثل
  • المعلمات ذات القيمة الجدولية
  • معلمات للقراءة فقط
  • المعلمات الافتراضية
  • سياقات التنفيذ
  • بيان العودة

الخطوات التالية

لمزيد من نصائح التطوير، راجع نظرة عامة على التطوير.