sql - أفضل أداء لحلقة 2000000 السجلات وتوليد مجموعة من التحديثات أو إدراج اعتمادا على حالة معينة في كل صف



database ssis (2)

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

(تبه أنا لم استكشاف بعض من سسيس المزيد من الميزات المتقدمة، عمليات على مستوى الصف).

هل يمكن تقسيم الخطوة 2 إلى اثنين من عبارات سكل، تعمل على مجموعات منفصلة:

ا. مجموعة من الصفوف حيث توجد بريد إلكتروني.

ب. مجموعة من الصفوف حيث البريد الإلكتروني غير موجود

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

أنا حاليا باستخدام سسيس 2012 لعملية ترحيل البيانات الكبيرة.

لدي مهمة لإكمال ولكن ليس متأكدا أفضل النهج.

الجدول أ 2.1 مليون السجلات.

أحتاج إلى تكرار كل صف و:

الخطوة 1. تحديث حقل معين مع نتائج من استعلام فرعي معقد القيام ببعض التلاعب النص

الخطوة 2. الاستيلاء على عنوان بريد إلكتروني من حقل البريد الإلكتروني في الصف تابل
2A. البحث عن جدول المستخدم
2B. إذا كان البريد الإلكتروني موجود الحصول على معرف وتحديث أوسيريد في الصف تابل
2C. إذا لم يكن البريد الإلكتروني موجودا - إدراج سجل جديد في الجدول المستخدم، والحصول على معرف مرة أخرى وتحديث أوسيريد في الصف تابل

ولا يتعين القيام بالخطوتين 1 و 2 في نفس الوقت، ويمكن تقسيم هذه المهام إلى تدفقات بيانات منفصلة لأنها غير ذات صلة.

أستطيع أن أكتب كل هذا باستخدام المؤشر - جميلة واضحة، ولكن أنا أعرف كقاعدة عامة باستخدام المؤشرات هو عبوس عليها.

لقد كتبت سيناريو نقية سكل للخطوة 1 أعلاه، باستخدام وظيفة ميرج جديدة. الاستعلام الفرعي الذي يستخدم يدعو عرض الذي بدوره يستخدم وظيفة المتسلق للقيام ببعض التلاعب النص المعقدة. بعد ركض هذا عبر سسيس ل 1 س 12M سسيس قصفت بسبب tembDB.log تشغيل من مساحة القرص.

غير متأكد إذا كان الاستعلام الخاص بي سبب تمبدب الخروج من السيطرة أو شيء آخر في حزمة سسيس التي ركضت في وقت سابق؟ كيف يمكنني أن أقول؟

ھل حصل أي شخص علی أي نصائح حول أفضل الأدوات داخل سسيس لتحقیق کل من الخطوة 1 و 2 أعلاه؟


بالنسبة للخطوة 1، يكون مكافئ سسيس ل "طلب بحث فرعي معقد" عادة عبارة عن تدفق بيانات مع بحث (عمليات بحث). و سسيس يعادل "التلاعب النص" / "وظيفة العددية" هو عادة تدفق البيانات مع تحويل البرنامج النصي. أيا كان التلاعب يمكنك رمز في T-سكل يمكن القيام به في .NET، يمكنك الاستفادة من مكتبة .NET مثل ريجكس، هتملنكود وغيرها، وأنه من المرجح أن يكون أكثر أناقة وتشغيل أسرع.

بالنسبة إلى الخطوة 2، سأبدأ تدفق بيانات جديد مع أولي دب المصدر الذي يوفر لك قيم البريد الإلكتروني متميزة من تابل. ثم قم بإضافة تحويل بحث للتحقق من "جدول المستخدم" الخاص بك. تجاهل التطابقات وإرسال صفوف لا مثيل لها إلى وجهة أولي دب لإدراجها في "جدول المستخدم" الخاص بك.

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