سؤال

وحصلت على تحويل واسع تعزيز العمل 299Gb من الصور JPEG، وبالفعل في قاعدة البيانات، في حكمه المصغرة لأغراض إعداد التقارير وعرض النطاق الترددي.

ولقد كتبت موضوع وظيفة SQLCLR آمن للقيام بهذه الأعمال من إعادة أخذ العينات، الصور، وظيفة جميلة.

والمشكلة هي، عندما كنت تنفيذه في بيان UPDATE (من الحقل PhotoData إلى الميدان ThumbData)، وهذا ينفذ خطيا لمنع حالات السباق، وذلك باستخدام معالج واحد فقط إلى إعادة تشكيل الصور.

وهكذا، كيف لي أن أفضل استفادة من النوى وغارة فات الإعداد 12 هذا الجهاز قاعدة بيانات لديه؟ هل استخدام استعلام فرعي في بند FROM البيان التحديث؟ هل هذا كل ما هو مطلوب لتمكين التوازي على هذا النوع من العمليات؟

وعلى أي حال يتم تقسيم العملية إلى دفعات، حوالي 4000 صورة لكل دفعة (في استعلام إطارات حوالي 391k الصور)، وهذا الجهاز لديه الكثير من الموارد لحرق.

هل كانت مفيدة؟

المحلول

وأنا أيضا يوصي "ذهاب وإياب" منهجية التي ينادي بها kragen2uk وonupdatecascade (سأصوت لهم). وأنا أعلم أنني قد قرأت شيئا مزعجة حول إجراءات CLR وSQL paralellism، ولكن أنسى ما كان عليه قبل قليل ... ولكن أعتقد أنها لا تلعب جيدا معا.

وبت فعلت في الماضي على مهام مماثلة لإعداد جدول سرد كل دفعة من العمل الذي يتعين القيام به. لكل اتصال كنت اطلاق النار حتى، فإنه يذهب إلى هذا الجدول، غيست الدفعة التالية، يصادف أنها يتم معالجتها، وتجري عليه، بتحديث أنها تم، ويكرر. هذا يسمح لك لقياس الأداء، وإدارة القياس، والسماح توقف وإعادة تشغيل دون الحاجة إلى البدء من جديد، ويعطي لك شيئا لإظهار مدى اكتمال المهمة (ناهيك عن إظهار أنه يفعل اي شيء في الواقع).

نصائح أخرى

يرجى التحقق من تكوين الإعداد للدرجة القصوى من التوازي (MAXDOP) على SQL Server الخاص بك. يمكنك أيضا تعيين قيمة MAXDOP.

وربما يكون هذا الارتباط مفيدا لك http://www.mssqltips.com/ tip.asp؟ غيض = 1047

وهتافات

هل يمكن أن لا تقسيم الاستعلام إلى دفعات، وتنفيذ كل دفعة على حدة على اتصال منفصل؟ يستخدم الخادم SQL فقط التوازي في استعلام عندما يشعر مثل ذلك، وعلى الرغم من أنك يمكن وقفها، أو حتى تشجع عليه (قليلا) عن طريق تغيير عتبة تكلفة للخيار التوازي لO، ولكن أعتقد أن ضرب لها جميلة وملكة جمال.

واحد ل thats شيء الجدير بالذكر هو أنه سيقرر فقط أو عدم استخدام التوازي في ذلك الوقت أن الاستعلام يتم ترجمة. أيضا، إذا يتم ترجمة الاستعلام في وقت الحمل CPU هو أعلى، هو أقل احتمالا الخادم SQL للنظر التوازي.

والعثور على بعض المعايير لكسر مجموعة متميزة إلى مجموعات فرعية من الصفوف (1-100، 101-200، أيا كان) ومن ثم استدعاء بيان التحديث من اتصالات متعددة في نفس الوقت، حيث يعالج كل اتصال فرعية واحدة من الصفوف في الطاولة. يجب تشغيل كافة الاتصالات في نفس الوقت.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top