سؤال

لدي أربع قواعد بيانات SQL Server.وفقًا للحد الأقصى لمتطلبات التحميل، يمكن أن يتراوح حجم كل ملف قاعدة بيانات بين 1 و2 تيرابايت.محرك الأقراص الصلبة عبارة عن DAS متعدد الأقراص بمساحة تبلغ حوالي 9 تيرابايت.أثناء ترقية قاعدة البيانات، يمكن أن يصل حجم ملف سجل المعاملات لقاعدة بيانات واحدة إلى 4 تيرابايت.(نعم، لقد أضفت عمودًا جديدًا إلى جدول صف بمليارات الدولارات.) قواعد البيانات موجودة على نموذج الاسترداد البسيط.

لا يمكنني العثور على أي توصية (أو قاعدة عامة) من Microsoft حول مقدار مساحة القرص التي أحتاجها لحجم قاعدة بيانات معين.أفهم أنه يمكن أن يختلف على نطاق واسع.إذا كان فهمي صحيحًا، فهي أكبر معاملة أحتاج إلى أخذها في الاعتبار نظرًا لإعادة استخدام المساحة الداخلية لملف السجل في معاملات مختلفة.أعتقد أنه تم ضبط نمو السجل على 10%، ولكن حتى لو تم ضبطه على زيادات بمقدار 1 أو 2 جيجا، أعتقد أنني سأظل أقطعه قريبًا.

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

أنا أستخدم SQL Server 2012.شكرًا!

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

المحلول

(نعم، لقد أضفت عمودًا جديدًا إلى جدول صفي يضم عدة مليارات من الدولارات.)

يمكن أن يكون لإضافة عمود إلى جدول كبير جدًا آثارًا ولكن هناك طريقة ذكية لإضافة عمود أيضًا.

من : إضافة أعمدة NOT NULL كعملية عبر الإنترنت

بدءًا من SQL Server 2012 Enterprise Edition، تعد إضافة عمود NOT NULL بقيمة افتراضية عملية عبر الإنترنت عندما تكون القيمة الافتراضية هي ثابت وقت التشغيل.وهذا يعني أن العملية تكتمل بشكل فوري تقريبًا بغض النظر عن عدد الصفوف في الجدول.

يتم دائمًا إضافة عمود NOT NULL بقيمة افتراضية ليست ثابتة في وقت التشغيل دون الاتصال بالإنترنت ويتم الحصول على قفل حصري (SCH-M) طوال مدة العملية.

إصدار المؤسسة (يعمل على الإصدار القياسي 2008 R2 حسب التعليق) لديه ALTER TABLE source_table SWITCH TO new_destination_table

قواعد البيانات موجودة على نموذج الاسترداد البسيط.

في نموذج الاسترداد البسيط، فقط أ CHECKPOINT سوف يقتطع السجل.

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

أعتقد أنه تم ضبط نمو السجل على 10%، ولكن حتى لو تم ضبطه على زيادات بمقدار 1 أو 2 جيجا، أعتقد أنني سأظل أقطعه قريبًا.

أود أن أقترح عليك أن يتغير إعداد النمو التلقائي من النسبة المئوية إلى ميغابايت ثابتة.مثل يقول @AaronBertrand في تعليقه :

تكمن المشكلة في أن الأمر يستغرق وقتًا أطول فأطول بمرور الوقت، نظرًا لأن 10% من الملف المتنامي ينمو أيضًا بشكل مستمر - إنه مثل الفائدة المركبة، لكنك تدفع، ولا تتلقى.

للاكتمال، تأكد من تمكين التهيئة الفورية للملف، حتى يتمكن النمو التلقائي لملف البيانات من الاستفادة منه.

نصائح أخرى

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

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