تعرف على كيفية إخراج البيانات إلى SQL Azure من Azure Stream Analytics وحقق معدلات نقل أعلى للكتابة

تتناول هذه المقالة تلميحات لتحقيق معدل نقل أداء أفضل لسرعة الكتابة عند تحميل البيانات في قاعدة بيانات Azure SQL باستخدام Azure Stream Analytics.

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

فيما يلي بعض التكوينات داخل كل خدمة يمكن أن تساعد في تحسين معدل النقل الإجمالي للحل الخاص بك.

Azure Stream Analytics

  • توريث التقسيم - يتيح خيار تكوين مخرجات SQL هذا توريث مخطط التقسيم لخطوة أو إدخال الاستعلام السابق. مع تمكين هذا، فإن الكتابة إلى جدول مستند إلى قرص ولديك هيكل متوازي تمامًا لعملك، توقع رؤية معدل نقل أفضل. يحدث هذا التقسيم بالفعل تلقائيًا للعديد من المخرجات الأخرى. يتم أيضًا تعطيل تأمين الجدول (TABLOCK) للإدخالات المجمعة التي يتم إجراؤها باستخدام هذا الخيار.

    ملاحظة

    عندما يكون هناك أكثر من 8 أقسام إدخال، قد لا يكون توريث نظام تقسيم الإدخال خيارًا مناسبًا. لوحظ هذا الحد الأعلى على جدول بعمود هوية واحد وفهرس متفاوت. في هذه الحالة، ضع في اعتبارك استخدام INTO 8 في استعلامك، لتحديد عدد مؤلفي الإخراج بشكل صريح. بناءً على مخططك واختيار الفهارس، قد تختلف ملاحظاتك.

  • حجم الدُفعة - يتيح لك تكوين مخرجات SQL تحديد الحد الأقصى لحجم الدُفعة في إخراج Azure Stream Analytics SQL استنادًا إلى طبيعة جدول/ حمل عملك الوجهة. حجم الدُفعة هو الحد الأقصى لعدد السجلات التي يتم إرسالها مع كل معاملة إدراج مجمعة. في فهارس مخزن الأعمدة المجمعة، تسمح أحجام الدُفعات حول 100 ألف بمزيد من التوازي، والحد الأدنى من التسجيل، وتحسينات التأمين. في الجداول المستندة إلى الأقراص، قد يكون 10 كيلو (افتراضي) أو أقل هو الأمثل للحل الخاص بك، حيث قد تؤدي أحجام الدُفعات الأعلى إلى تصعيد القفل أثناء عمليات الإدراج المجمعة.

  • ضبط رسالة الإدخال - إذا كنت قد قمت بالتحسين باستخدام التقسيم الموروث وحجم الدُفعة، فإن زيادة عدد أحداث الإدخال لكل رسالة لكل قسم يساعد على زيادة معدل نقل الكتابة. يسمح ضبط رسالة الإدخال بأن تصل أحجام الدُفعات في Azure Stream Analytics إلى حجم الدُفعة المحدد، وبالتالي تحسين معدل النقل. يمكن تحقيق ذلك باستخدام الضغط أو زيادة حجم رسائل الإدخال في EventHub أو Blob.

SQL Azure

  • الفهارس والجدول المقسمة - يمكن أن يؤدي استخدام جدول SQL المقسم والفهارس المقسمة على الجدول مع نفس العمود مثل مفتاح القسم (على سبيل المثال، PartitionId) إلى تقليل الخلافات بين الأقسام أثناء عمليات الكتابة. بالنسبة إلى الجدول المقسم، ستحتاج إلى إنشاء وظيفة تقسيم ونظام تقسيم في مجموعة الملفات الأولية. سيؤدي هذا أيضًا إلى زيادة توفر البيانات الحالية أثناء تحميل البيانات الجديدة. قد يتم الوصول إلى حد تسجيل الإدخال/ الإخراج بناءً على عدد الأقسام، والتي يمكن زيادتها عن طريق ترقية SKU.

  • تجنب انتهاكات المفاتيح الفريدة - إذا تلقيت العديد من رسائل التحذير المتعلقة بانتهاكات رئيسية في سجل نشاط Azure Stream Analytics، فتأكد من أن وظيفتك لا تتأثر بانتهاكات القيود الفريدة التي من المحتمل أن تحدث أثناء حالات الاسترداد. يمكن تجنب ذلك عن طريق تعيين خيار IGNORE_DUP_KEY في الفهارس الخاصة بك.

مصنع بيانات Azure وجداول الذاكرة

  • الجدول المضمن في الذاكرة كجدول مؤقت - تسمح الجداول في الذاكرة بأحمال بيانات عالية السرعة للغاية ولكن يجب احتواء البيانات في الذاكرة. تُظهر المقاييس أن التحميل المجمع من جدول في الذاكرة إلى جدول مستند إلى قرص أسرع بنحو 10 مرات من الإدراج بالجملة المباشر باستخدام كاتب واحد في الجدول المستند إلى القرص مع عمود هوية وفهرس متفاوت. للاستفادة من أداء الإدراج المجمع هذا، قم بإعداد مهمة نسخ باستخدام Azure Data Factory التي تنسخ البيانات من جدول الذاكرة إلى الجدول المستند إلى القرص.

تجنب عيوب الأداء

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

إذا كان معدل الأحداث الواردة منخفضًا، فيمكنه بسهولة إنشاء أحجام دُفعات أقل من 100 صف، مما يجعل الإدراج المجمع غير فعال ويستخدم مساحة كبيرة جدًا على القرص. للتغلب على هذه المحددات، يمكنك القيام بأحد هذه الإجراءات:

  • قم بإنشاء مشغل بدلاً من ذلك لاستخدام إدراج بسيط لكل صف.
  • استخدم جدول مؤقت مدمج في الذاكرة كما هو موضح في القسم السابق.

يحدث سيناريو آخر من هذا القبيل عند الكتابة في فهرس مخزن الأعمدة غير العنقودي (NCCI)، حيث يمكن لإدخالات مجمعة أصغر إنشاء عدد كبير جدًا من المقاطع، ما قد يؤدي إلى تعطل الفهرس. في هذه الحالة، فإن التوصية هي استخدام فهرس Clustered Columnstore بدلاً من ذلك.

الملخص

باختصار، مع ميزة الإخراج المقسمة في Azure Stream Analytics لمخرجات SQL، يجب أن تمنحك الموازاة الموازية لعملك مع جدول مقسم في SQL Azure تحسينات كبيرة في معدل النقل. يمكن أن يؤدي الاستفادة من Azure Data Factory لتنظيم حركة البيانات من جدول داخل الذاكرة إلى الجداول المستندة إلى الأقراص إلى إعطاء ترتيب لمكاسب معدل النقل الكبير. إذا كان ذلك ممكنًا، يمكن أن يكون تحسين كثافة الرسالة أيضًا عاملاً رئيسيًا في تحسين معدل النقل الإجمالي.

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