تقسيم/دمج SQL لأقسام الجدول:ما هو النهج الأفضل للتنفيذ؟

StackOverflow https://stackoverflow.com/questions/160128

  •  03-07-2019
  •  | 
  •  

سؤال

مايكروسوفت في MSDN لها دخول حول تغيير أقسام SQL 2005، أدرجت بعض الطرق الممكنة:

  • قم بإنشاء جدول مقسم جديد باستخدام وظيفة القسم المطلوبة، ثم قم بإدراج البيانات من الجدول القديم إلى الجدول الجديد باستخدام عبارة INSERT INTO...SELECT FROM.
  • إنشاء فهرس متفاوت المسافات مقسمة على كومة
  • قم بإسقاط وإعادة إنشاء فهرس مقسم موجود باستخدام عبارة CREATE INDEX الخاصة بـ Transact-SQL مع عبارة DROP EXISTING = ON.
  • تنفيذ سلسلة من عبارات ALTER PARTITION FUNCTION.

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

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

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

المحلول

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

لقد قمت بالتقسيم باستخدام جداول صفية يتراوح حجمها بين 300 و500 متر مع بيانات موزعة على مدى 6 إلى 7 سنوات، وكان أسلوب إدراج الجدول هو الأسلوب الذي وجدته أكثر فائدة.

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

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

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

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