Skip to content
English

أدوات حجم قاعدة البيانات والفهارس (Database Size and Index Utilities) ​

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

تخيّل مخزناً بُنيت رفوفه أعمق من اللازم: البضاعة لا تتغير، لكن حين تُضبط الرفوف على المقاس الصحيح تتسع البضاعة نفسها في غرفة أصغر ويصبح الوصول إليها أسرع.

البقاياما تكلّفهالأداة
أعمدة مراجع أُنشئت بطول 255 بايت بدلاً من 16 — أعمدة الفرع والإدارة والقطاع ومجموعة التحليل والشركة والمنشئ والصلاحية في الجداول التي أُنشئت بين 2018 و2022، وعمود قيد النظام في أغلب الجداولحتى 2,390 بايت مهدرة في كل سطر من كل جدول متأثر؛ وفي جدول رأس كبير قد يعني ذلك سطراً واحداً في كل صفحة من صفحات قاعدة البياناتأداة تضييق أعمدة المراجع
فهارس الأصل الثلاثة على جداول سطور الحركات، مبنية على 17 عموداً بدلاً من عمود واحدثلاث نسخ كبيرة من البيانات نفسها في كل جدول، لا تساعد أيٌّ منها في البحث الذي أُنشئت من أجلهأداة إصلاح فهارس الأصل
فهارس يغطيها بالفعل فهرس آخر على الجدول نفسهمساحة على القرص، وحفظ أبطأ، لفهرس لا تحتاجه قاعدة البيانات أبداًأداة اكتشاف الفهارس المكررة

نادراً ما تحتاج للبحث بنفسك: حين تحتاج قاعدة البيانات إلى أي من الإصلاحات الثلاثة تذكر ذلك الأخطاء الحرجة التي تظهر عند الدخول — لفريق دعم نماسوفت فقط.

كيف تعمل هذه الأدوات ​

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

فتح أي منها لا يغير شيئاً. يفتح الرابط تقريراً: ما وجدته الأداة، وحجم المساحة المعنية، والأوامر التي ستنفذها على قاعدة البيانات بالضبط. يستطيع أي مستخدم مدير فتح التقرير كلما أراد.

التطبيق يتطلب دخول فريق الدعم. الأزرار التي تغيّر قاعدة البيانات — Narrow وFix all indexes وDrop selected وأمثالها — لا تظهر إلا لمستخدم مدير سجّل الدخول من خلال نظام CRM الخاص بنماسوفت، أي دخول الـ QR الذي يستخدمه فريق الدعم. أي مستخدم آخر يرى التقرير مع ملاحظة بدلاً من الأزرار، وإذا فتح رابط تطبيق يُرفض بالرسالة:

«تغيير هيكل قاعدة البيانات يتطلب مستخدم مدير مسجل الدخول من خلال نظام CRM الخاص بنماسوفت»

وعلى سيرفر تجريبي يعمل في وضع التطوير (debug mode) يستطيع أي مدير التطبيق.

كل زر تطبيق يسأل أولاً. يذكر ما الذي سيُقفل ويطلب التأكيد. خذ نسخة احتياطية وشغّل هذه الأدوات خارج أوقات العمل: أثناء تعديل جدول ينتظر المستخدمون الذين يحتاجونه.

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

أعد الفحص بعد الانتهاء. حين ينتهي التشغيل تعرض صفحته Check again، الذي يفتح التقرير من جديد. ويُحدَّث الخطأ الحرج المقابل في اللحظة نفسها، فيختفي متى لم يبقَ شيء يحتاج إصلاحاً.

أداة تضييق أعمدة المراجع (Reference Column Narrower) ​

كل سجل في نما مرتبط بغيره — بفرعه وإدارته والمستخدم الذي أنشأه — من خلال أعمدة مراجع بطول 16 بايت. الإصدارات القديمة أنشأت بعض هذه الأعمدة بطول 255 بايت: أعمدة المحددات والمنشئ والصلاحية التسعة في كل جدول أُنشئ بين يونيو 2018 وسبتمبر 2022، وعمود قيد النظام في كل الجداول تقريباً. البايتات الـ 239 الزائدة أصفار دائماً، لكن قاعدة البيانات ما زالت تخزنها وتقرؤها وتحتفظ بها في الذاكرة.

يعرض التقرير كل جدول ما زال فيه عمود عريض، الأصغر أولاً، مع عدد سطوره وحجم بياناته والأعمدة المعنية وعدد الميجابايتات من الأصفار التي تحملها. ومن هناك يستطيع فريق الدعم:

  • Narrow لجدول واحد، أو Narrow all tables — تحويل الأعمدة العريضة إلى 16 بايت. يُعالَج كل جدول في خطوة واحدة: تُحذف الفهارس التي تستخدم الأعمدة، ثم تُضيَّق الأعمدة، ثم تُنشأ الفهارس من جديد. وإذا فشل أي شيء يُعاد ذلك الجدول كما كان وينتقل التشغيل إلى غيره.
  • Narrow and rebuild لجدول واحد أو لكل الجداول — الشيء نفسه، ثم إعادة بناء كل جدول. وهذا الخيار هو الذي يعيد المساحة فعلاً: التضييق وحده يصغّر الأعمدة، لكن السطور تبقى في مكانها على القرص حتى يُعاد بناء الجدول.

شغّلها خارج أوقات العمل، وراقب سجل المعاملات (transaction log)

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

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

أداة إصلاح فهارس الأصل (Origin Indexes Fixer) ​

كل سطر من سطور حركات المخزون والتكلفة والقيود يتذكر المستند والحركة والسطر الذي جاء منه، وثلاثة فهارس — على الأصل وحركة الأصل وسطر الأصل — تجعل هذا البحث سريعاً. الجداول التي أُنشئت بعد ترقية سابقة لإطار العمل حصلت على كل فهرس من الثلاثة مبنياً على 17 عموداً بدلاً من عمود واحد: ثلاثة فهارس متطابقة كبيرة جداً في كل جدول، كلها تبدأ بالعمود الخطأ ولا تسرّع البحث الذي أُنشئت من أجله. والفحص المعتاد عند تشغيل النظام لا يستطيع إصلاحها لأن أسماء الفهارس صحيحة.

يعرض التقرير كل فهرس خطأ مع جدوله والأعمدة التي يشملها وحجمه والأوامر التي تستبدله. Fix all indexes يبني الفهرس الصحيح ذا العمود الواحد باسم مؤقت، ثم يحذف الفهرس العريض، ثم يعطي الجديد اسمه، خطوة خطوة. وحيث يوجد فهرس آخر يبدأ بالعمود الصحيح، يُحذف الفهرس العريض فقط. والتشغيل الذي يُوقف أو ينقطع يترك على الأكثر فهرساً مؤقتاً، ويكمل التشغيل التالي العمل من هناك.

في إصداري Enterprise وDeveloper من SQL Server تُبنى الفهارس الجديدة والمستخدمون يواصلون العمل. أما في إصدار Standard فبناء الفهرس يمنع الحفظ في ذلك الجدول حتى ينتهي، فشغّلها خارج أوقات العمل.

أداة اكتشاف الفهارس المكررة (Duplicate Index Finder) ​

مع السنين تتجمع في كل نظام فهارس يخدمها بالفعل فهرس آخر على الجدول نفسه: نسخ مكررة تماماً، أو فهرس أعمدته مجرد بداية فهرس أطول، أو الأعمدة نفسها بإضافات أقل. كل واحد منها يأخذ مساحة ويبطئ كل حفظ في جدوله ولا يفيد شيئاً. ولا تُقترح أبداً المفاتيح الأساسية (primary keys) ولا الفهارس المجمّعة (clustered) ولا الفهارس المصفّاة (filtered).

ولأن اختيار الفهرس الذي يُحذف يحتاج تقدير مطوّر، فهذه الأداة رحلة ذهاب وعودة:

  1. على سيرفر العميل افتح التقرير. يعرض الفهارس المرشحة ويتيحها كملف للتنزيل.
  2. فريق التطوير يراجع الملف، ويعلّم الفهارس المطلوب حذفها، ثم يحمّله في الصفحة نفسها على أي سيرفر. تحوّل الصفحة الفهارس المعلَّمة إلى رابط حذف واحد وتعرض الأوامر التي يمثلها.
  3. فريق الدعم يفتح ذلك الرابط على سيرفر العميل. فتحه يعيد فحص كل فهرس ولا يغير شيئاً؛ وإضافة ;execute=true إلى آخر الرابط تحذف الفهارس التي يذكرها بأنها would drop. ولا يُحذف فهرس إلا إذا كان ما زال موجوداً تماماً كما كان في التقرير، وما زال فهرس آخر يغطيه، ولا يعرّفه النظام (وإلا أُنشئ من جديد عند التشغيل التالي).

وحين يكون فريق الدعم مسجلاً الدخول من خلال الـ CRM يستطيع أيضاً تعليم الفهارس في التقرير نفسه وحذفها بزر Drop selected، بالفحوص نفسها.

وما دام في التقرير فهرس واحد على الأقل يقترح حذفه، يرى فريق الدعم عند الدخول خطأً حرجاً يذكر عددها وحجمها. ومن أشهر أسبابه فهرس أنشأه فريق الدعم يدوياً على جدول كبير، ثم صار إصدار أحدث من نما ينشئه بنفسه باسم آخر: فيبقى في الجدول نسختان من الفهرس نفسه حتى تُحذف إحداهما. ويُعاد فحص هذا الخطأ بعد كل تشغيل للحذف، ويختفي متى لم يبقَ شيء يُحذف.

رسائل قد تظهر لك ​

الرسالةالسببما العمل
«تغيير هيكل قاعدة البيانات يتطلب مستخدم مدير مسجل الدخول من خلال نظام CRM الخاص بنماسوفت»استخدم مدير لم يسجل الدخول من خلال نظام CRM الخاص بنماسوفت رابط تطبيق أو زر تطبيق.اترك الأمر لفريق الدعم، الذي يسجل الدخول من خلال الـ CRM ويطبّقه خارج أوقات العمل.
«يوجد {0} جدول ({1} ميجابايت) ما زالت أعمدة المراجع فيها بطول 255 بايت، يرجى تشغيل الأداة {2} خارج أوقات العمل»خطأ حرج يظهر لفريق الدعم فقط: ما زالت في قاعدة البيانات أعمدة مراجع عريضة.شغّل أداة تضييق أعمدة المراجع، مع إعادة البناء، خارج أوقات العمل.
«يوجد {0} فهرس أصل ما زال يشمل أعمدة أكثر من اللازم، يرجى تشغيل الأداة {1} خارج أوقات العمل»خطأ حرج يظهر لفريق الدعم فقط: ما زالت في قاعدة البيانات فهارس الأصل ذات الـ 17 عموداً.شغّل أداة إصلاح فهارس الأصل خارج أوقات العمل.
«يوجد {0} فهرس ({1} ميجابايت) يغطيها فهرس آخر على نفس الجدول، يرجى مراجعتها باستخدام الأداة {2}»خطأ حرج يظهر لفريق الدعم فقط: أداة اكتشاف الفهارس المكررة ستقترح حذف هذا العدد من الفهارس.أرسل تقريرها إلى فريق التطوير واحذف ما يعلّمونه.

صفحات ذات صلة ​