إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
تناقش هذه المقالة نصائح لتحقيق أداء أفضل في معدل الكتابة عند تحميل البيانات إلى قاعدة بيانات 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 بناء على طبيعة جدول/عبء العمل الوجهة. حجم الدفعة هو الحد الأقصى لعدد السجلات التي ترسل مع كل عملية إدراج جماعي. في مؤشرات العمود المجمعة، تسمح أحجام الدفعات حول 100K بمزيد من التوازي، وتقليل التسجيل، وتحسينات القفل. في الجداول القائمة على القرص، قد يكون 10K (الافتراضي) أو أقل هو الأمثل لحلك، حيث قد تؤدي أحجام الدفعات الأعلى إلى تصعيد القفل أثناء الإدخالات الجماعية.
ضبط رسائل الإدخال – إذا كنت قد تحسنت باستخدام تقسيم الوراثة وحجم الدفعة، فإن زيادة عدد أحداث الإدخال لكل رسالة لكل قسم تساعد في زيادة معدل الكتابة لديك. يسمح ضبط رسائل الإدخال بوصول أحجام الدفعات داخل Azure Stream Analytics إلى حجم الدفعة المحدد، مما يحسن معدل الإنتاجية. يمكن تحقيق ذلك باستخدام الضغط أو زيادة حجم رسائل الإدخال في EventHub أو Blob.
SQL Azure
الجدول والفهارس المقسمة – استخدام جدول SQL مقسم وفهارس مقسمة على الجدول بنفس عمود مفتاح القسم الخاص بك (مثل PartitionId) يمكن أن يقلل بشكل كبير من النزاعات بين الأقسام أثناء الكتابة. لجدول مقسم، ستحتاج إلى إنشاء دالة تقسيمومخطط تقسيم على مجموعة الملفات الأساسية. سيزيد ذلك أيضا من توفر البيانات الحالية أثناء تحميل البيانات الجديدة. قد يتم تجاوز حد سجل الإخراجات الداخلي بناء على عدد الأقسام، ويمكن زيادته عن طريق ترقية وحدة تخزين الجهاز.
تجنب انتهاكات المفاتيح الفريدة – إذا تلقيت رسائل تحذير متعددة من انتهاكات المفاتيح في سجل نشاط Azure Stream Analytics، تأكد من أن وظيفتك لا تتأثر بانتهاكات قيود فريدة من المرجح أن تحدث أثناء حالات الاسترداد. يمكن تجنب ذلك بتعيين خيار IGNORE_DUP_KEY في فهارسك.
Azure Data Factory وجداول In-Memory
- In-Memory الجدول كجدول مؤقت – In-Memory الجداول تسمح بتحميل البيانات بسرعة عالية جدا لكن البيانات تحتاج إلى أن تتناسب في الذاكرة. تظهر اختبارات الأداء أن التحميل الجماعي من جدول في الذاكرة إلى جدول قائم على القرص أسرع بحوالي 10 مرات من الإدراج الجماعي المباشر باستخدام كاتب واحد في الجدول القائم على القرص مع عمود هوية وفهرس مجمع. للاستفادة من أداء الإدراج الجماعي هذا، قم بإعداد مهمة نسخ باستخدام Azure Data Factory التي تنسخ البيانات من الجدول الموجود في الذاكرة إلى الجدول المعتمد على القرص.
تجنب مخاطر الأداء
إدخال البيانات بالجملة أسرع بكثير من تحميل البيانات بإدخالات فردية لأن الحمل المتكرر لنقل البيانات، وتحليل بيان الإدراج، وتشغيل الكلام، وإصدار سجل المعاملة يتم تجنبه. بدلا من ذلك، يستخدم مسار أكثر كفاءة إلى محرك التخزين لتدفق البيانات. ومع ذلك، فإن تكلفة إعداد هذا المسار أعلى بكثير من عبارة إدراج واحدة في جدول قائم على القرص. نقطة التعادل عادة تكون حوالي 100 صف، وبعد ذلك يكون التحميل السائب أكثر كفاءة تقريبا.
إذا كان معدل الأحداث الواردة منخفضا، يمكنه بسهولة إنشاء أحجام دفعات أقل من 100 صف، مما يجعل الإدراج الجماعي غير فعال ويستهلك مساحة كبيرة على القرص. للتغلب على هذا القيد، يمكنك القيام بأحد هذه الإجراءات:
- أنشئ زناد INSTEAD OF لاستخدام إدراج بسيط لكل صف.
- استخدم جدول درجات الحرارة In-Memory كما هو موضح في القسم السابق.
يحدث سيناريو آخر من هذا النوع عند الكتابة في مؤشر مخزن الأعمدة غير المجمع (NCCI)، حيث يمكن للإدخالات الضخمة الصغيرة أن تخلق عددا كبيرا جدا من المقاطع مما يؤدي إلى تعطل الفهرس. في هذه الحالة، التوصية هي استخدام فهرس Clustered Columnstore بدلا من ذلك.
المُلَخَّص
باختصار، مع ميزة المخرج المقسم في Azure Stream Analytics لمخرجات SQL، فإن محاذاة التوازي بين وظيفتك وجدول مقسم في SQL Azure يجب أن يمنحك تحسينات كبيرة في معدل النقل. الاستفادة من Azure Data Factory لتنظيم حركة البيانات من جدول In-Memory إلى جداول تعتمد على الأقراص يمكن أن تحقق مكاسب في معدل النقل بشكل كبير. إذا كان ذلك ممكنا، يمكن أن يكون تحسين كثافة الرسائل عاملا رئيسيا في تحسين معدل النقل العام.
الخطوات التالية
- فهم المخرجات من Azure Stream Analytics
- Azure Stream Analytics output to Azure SQL Database
- استخدم الهويات المدارة للوصول إلى قاعدة بيانات Azure SQL أو Azure Synapse Analytics من وظيفة Azure Stream Analytics
- استخدم بيانات المراجع من قاعدة بيانات SQL لوظيفة Azure Stream Analytics
- تحديث أو دمج السجلات في Azure SQL Database مع Azure Functions
- التشغيل السريع: إنشاء وظيفة Stream Analytics باستخدام مدخل Microsoft Azure