كان لدي فرصة للعمل مع IBM DB2. استخدم كل من 1C والخادم على Django نظام إدارة قواعد البيانات هذا في وقت واحد ، لقد عالج طلبات OLAP بسرعة كبيرة (على الرغم من أنه كان من الضروري تكوين الفهارس يدويًا ، وخادم الويب بالطبع ، بحيث كانت الاستجابة في غضون ثانيتين). في عام 2015 ، أعدت هذه التعليمات الصغيرة لنفسي ، حتى لا أنسى. وكإضافة إلى السيرة الذاتية ، ربما قرأ شخص ما على الورق ، كانت سنوات العمل المتبقية في وضع الخمول. بعض تعميم تجربتي مع DB2. لقد صححته قليلاً واقترح قراءته هنا لتوسيع آفاقي. ربما شخص ما سوف تكون مهتمة. يجب أن أقول على الفور أنه منذ ذلك الحين لم أعمل مع DB2 ، لقد تم نسيان كل شيء ، لكنني ما زلت أتذكر شيئًا ما. النقد والإيضاحات مرحب بهما ، لكن بما أنني لم أعد أعمل ، فقد لا يكون ذلك بالنسبة لي ، لكن بالنسبة لشخص آخر ، سيكون ذلك مفيدًا.
هناك العديد من الإرشادات على الإنترنت حول كيفية تنظيم أعمال 1C: Enterprise مع IBM DB2 DBMS. بالنسبة للمبتدئين ، هذا ليس سيئًا على الإطلاق ، ولكنه ليس كافيًا للاستخدام في الإنتاج. سبق أن أوصيت بالبدء في استخدام IBM DB2 مع الدورة التدريبية بجامعة بيج داتا DB101RU. أنا نفسي أخذت هذه الدورة ، اجتازت الاختبار في عام 2012 ، وأعتقد أنه مفيد للغاية. إنه لأمر مؤسف أن المورد لم تعد موجودة. على النظام الأساسي الجديد ، لم أجد شيئًا من هذا القبيل. في الإنتاج ، يتطلب IBM DB2 تكوينًا إضافيًا وصيانتها ، وسيتم وصف أهمها هنا لفترة وجيزة. نحن نفكر في إصدار مجاني من إصدارات IBM DB2 Express-C لنظامي Windows 10.1fp2 و 10.5 fp4 (الأول مدعوم من قبل 1C للعمل في وضع الاختبار ، والثاني مدعوم رسميًا ، ومن المؤسف أنه يتم دفع الإصدارات الأحدث فقط). من المنطقي تثبيت الإصدار 64 بت 10.5 حيث توجد متطلبات عالية لذاكرة الوصول العشوائي (حجم المخزن المؤقت للسرعة) أو حجم التسجيل (EXTENDED_ROW_SZ = ENABLE) عند استخدام أنواع مركبة تحتوي على سلاسل طويلة ذات حجم ثابت.
أول شيء يجب القيام به هو التبديل إلى استخدام المجلات المؤرشفة من أجل عمل نسخ احتياطية دون مقاطعة تشغيل 1C: Enterprise ، ولكي تتمكن من استعادة قاعدة البيانات في أي وقت من الأوقات (استعادة إلى 10.1 fp2 لها خصوصياتها الخاصة بسبب لم يتم تصحيحه علة في النسخة المجانية - مطلوب حركة دليل ملفات السجل). بخلاف MS SQL ، لا يتم أرشفة السجلات في نقاط زمنية محددة مسبقًا (في MS SQL ، لا تكون قوية ، وربما يكون هناك شيء آخر) ، وعندما يصل ملف السجل إلى حجم محدد مسبقًا ، لا يلزم عمل نسخة احتياطية من السجل قبل عملية الاستعادة ، فقط قم بإلغاء تنشيط القاعدة. يتم تكوين سجلات الأرشفة في اتجاهين بسهولة ، أحدها موجود على محرك أقراص الشبكة ، على سبيل المثال. علاوة على ذلك ، في حالة انقطاع الشبكة القصير ، فإن الزيادة في المساحة التي تشغلها المجلات النشطة ليست كبيرة. بالنسبة للسجلات النشطة ، يجب توفير مساحة خالية كافية لتتمكن من استعادة قاعدة البيانات في أي وقت محدد. إذا كان مبرمجًا أثناء عمل البرنامج مع قاعدة 1C ، تكون هناك حاجة إلى عوائد متكررة في نقاط قريبة مختلفة في الوقت المناسب ، فاحتياطي واحد يكفي لاستعادته ، واختيار ملفات السجل لاستردادها بسيط للغاية. تأكد من تنشيط قاعدة البيانات في بداية المثيل ، وإلا فسوف نحصل على عدد كبير من ملفات السجل الصغيرة مع التنشيط الضمني. من الواضح ، يجب عليك تعيين وقت تخزين النسخ الاحتياطي (يبدو لي أنك بحاجة إلى تخزين سجلات لمدة شهرين على الأقل) وتكوين الحذف التلقائي. يجب أن تكون القاعدة والنسخ الاحتياطية (السجلات) على أقراص فعلية مختلفة ، وفي الحالات القصوى ، يمكنك عمل نسخ احتياطية على كمبيوتر آخر على الشبكة المحلية.
هناك حاجة أيضًا إلى تنشيط القاعدة لسبب آخر. للتشغيل العادي ، يجب عليك تثبيت ويندوز على الانترنت والصيانة حاليا. في هذا الوقت ، يجب أن تكون القاعدة نشطة. بشكل دوري ، يجب عليك الاطلاع على محفوظات قاعدة البيانات لمعرفة الإجراءات التي تم تنفيذها خلال الإطار غير المتصل. من المرجح أن يتم ضبط نافذة الصيانة في وضع عدم الاتصال بين الساعة 22:00 حتي 0:00 ، حيث لا توجد مهام صيانة 1C ثقيلة في هذا الوقت. ربما بالنسبة للقواعد الصغيرة ، فإن النافذة التي تستغرق ساعة واحدة تكفي.
بشكل دوري ، تحتاج إلى تشغيل فحص للحاجة إلى إعادة التنظيم في الوضع اليدوي ، وبعد تحليل حالة الجداول والفهارس ، قم بإجراء إعادة تنظيم للكائنات الفردية. يمكن أن تستغرق عملية إعادة التنظيم اليدوي لعدة آلاف من الجداول والفهارس وقتًا طويلاً. يتم تسريع التحليل بسهولة بواسطة عامل تصفية بسيط (على .js ، على سبيل المثال) باستخدام regexp.
التكوين التلقائي ، بالطبع ، يجب أن يتم بشكل دوري ، وتصحيح الإعدادات الفردية يدويًا ، على سبيل المثال ، تحديد حجم ملف السجل الخاص بك.
بعد يوم ، من الممكن وفي كثير من الأحيان إجراء نسخ احتياطي لقاعدة البيانات عبر الإنترنت (لا يتطلب إيقاف التشغيل ووجود DBA) ، يعتمد التردد على وقت الاسترداد المطلوب ، والذي يعتمد بدوره على عدد ملفات السجل المؤرشفة بعد النسخ الاحتياطي الأخير ، أي التحميل على قاعدة البيانات. بالنسبة لقواعد البيانات المتوسطة والكبيرة والمحملة بشكل كبير ، من المنطقي استخدام أنواع مختلفة من النسخ الاحتياطية المتزايدة من أجل تقليل المساحة التي تشغلها النسخ الاحتياطية وتقليل وقت الاسترداد من النسخ الاحتياطية. بعد كل نسخة احتياطية وقبل الاستعادة ، تحقق من صحة النسخ الاحتياطية. يكون وقت تخزين النسخة الاحتياطية وفقًا لتقدير DBA ، ولكن ليس أقل من وقت تخزين السجلات.
مرة واحدة على الأقل كل شهر ، قم بإجراء فحوصات صحية لقاعدة البيانات دون الاتصال بالإنترنت وعبر الإنترنت (في وضع عدم الاتصال ، يتم تعليق العمل مع قاعدة البيانات لعدة دقائق) ، وإذا لزم الأمر ، قم بإجراء إصلاحات (الأهم بالنسبة لـ "الخوادم" بدون UPS). إجراء نسخ احتياطي دون اتصال لقاعدة البيانات على أساس شهري ، سيتم تخزين النسخ الاحتياطية دون اتصال فقط لفترة طويلة ، لأنه عند تغيير إصدار DB2 ، لن يكون من الممكن نشر النسخ الاحتياطي عبر الإنترنت. إذا كانت "1C: Enterprise" لا تسمح حتى بترجمة قصيرة الأجل لقاعدة البيانات في وضع عدم الاتصال للتحقق أو النسخ الاحتياطي ، فمن الممكن تنفيذ الإجراءات المشار إليها في نسخة موسعة من قاعدة البيانات. تتم استعادة قاعدة البيانات من النسخة الاحتياطية إلى موقع آخر دون أي مشاكل ، على سبيل المثال ، إلى قرص آخر على خادم آخر. تجدر الإشارة إلى أنه يمكن ضغط كل من النسخ الاحتياطية وسجلات الأرشيف باستخدام أدوات DB2 (في هذه الحالة ، تظل أداة التحقق من النسخ الاحتياطي تعمل ولا تعمل أداة التحقق من سجل الأرشيف).
قبل التحقق من قاعدة البيانات والنسخ الاحتياطي دون اتصال بالإنترنت ، يجب عليك تعيين قاعدة البيانات والمهام المجدولة لتكون مؤمنة. في حالة الطوارئ ، يمكنك القيام باستقرار قاعدة البيانات ، ولكن نظرًا لأن المستخدم الذي يتم تشغيل خادم 1C: Enterprise مدرج في مجموعة SYSADM_GROUP ، فلن يلغي ذلك القدرة على توصيل 1C بقاعدة البيانات في الوقت غير المناسب ، ونتيجة لذلك ، سيتطلب الأمر ثانية إطلاق وظيفة.
إذا كانت قاعدة البيانات لا تعمل بسرعة ، بعد تحديث الإحصائيات ، يجب أن تحصل على أقسى خطط الاستعلام ، قم بتجربة فهارس 1C في نسخة من قاعدة البيانات ، ومراقبة التغييرات في خطة الاستعلام في IBM Data Studio (في هذه الحالة ، يكون استخدام eclipse له ما يبرره ، في حالات أخرى ، يكفي القيام بذلك باستخدام واجهة الأمر خطوط) ، أو استخدم توصيات DB2 Design Advisor ، وإذا لزم الأمر ، قم بإنشاء فهارس يدويًا خارج 1C. في نفس الوقت ، ابدأ في جمع معلومات الأداء التفصيلية باستخدام أدوات DB2 (أكثر من عشرة برامج نصية SQL) وتحليل العبء باستخدام شاشة النظام. لتقليل التحميل على نظام القرص ، يجب تثبيت قاعدة البيانات على قرص منفصل عالي السرعة ذي حجم كافي (ما لم يكن ، بالطبع ، يتوفر صفيف قرص خادم RAID 10 عادي) ، فمن الممكن وضع سجلات نشطة على SSD مع نظام التشغيل. ربما ، سيكون التغيير في موقع 1C: Tempos خادم المؤسسة مطلوبًا أيضًا. إذا تم تخطيط شراء قرص فقط ، فيجوز للمؤسسات الصغيرة استخدام قرص فعلي واحد مؤقتًا لقاعدة البيانات.
راجع db2diag.log يوميًا بحثًا عن الأخطاء ، وكذلك نتائج الإجراءات مع قاعدة البيانات. أرشفة عند الوصول إلى حجم عدة عشرات ميغابايت. يمكن لـ Far Manager أن يكون وسيلة ملائمة لعرض السجل (من المفترض أن هناك بعض الأخطاء في قاعدة البيانات) ، كما سيساعد ذلك إذا كنت بحاجة إلى نقل سجلات الأرشيف يدويًا لاستعادتها في وقت ما.
إحدى الميزات التنافسية لـ IBM DB2 ، كما يبدو لي ، يمكن اعتبار أنه في الحالات التي تتطلب فيها MS SQL Server خادم 1C 64 بت: Enterprise للمؤسسة للتشغيل العادي ، يمكن لـ IBM DB2 القيام به باستخدام 32 بت.
UPD: ربما ، لم يكن حريصًا عند التحقق من إصدارات DB2 التي يدعمها 1C: Enterprise قبل النشر. في النص الأصلي لهذا النص لعام 2015 ، قيل حوالي 10.5 fp4: عند استخدامه مع 1C: Enterprise ، "لم يتم اكتشاف أي أخطاء بعد". هذا هو ، في الوقت الراهن ، من Express-C الجديد ، فقط 10.1 ممكن (مع ميزاته والقيود). من اليوم مدفوعة ، 11.1 فقط معتمد رسميا. من الممكن أن يكون لدى شخص ما ما يكفي من Developer-C بحجم قاعدة بيانات يصل إلى 100 جيجابايت. لم أغير الرابط إلى الوثائق - من السهل التبديل هناك.
محدث: أعيد قراءة كل شيء ، على الأرجح ، يجب أن يكون الأمر واضحًا لشخص كان يتعامل مع DB2 ، لكن ربما يلزم تقديم بعض التوضيحات لأولئك الذين جددوا العمل مع DBMS ، على سبيل المثال
يجب عرض تاريخ القاعدة
يجب أن يحضر
هنا كذلك
إجراء فحوصات صحة قاعدة البيانات عبر الإنترنت وغير متصل
هنا ،
هنا وهنا ، ولكن في الحالة الأخيرة ، قد تكون مطلوبة بالفعل
مثل هذا الملف الدفعي@echo off
setlocal
db2 list applications for db %1 && exit /b
set active=no
db2 list active databases | findstr /i /r "=\ %1$" >nul && set active=yes
if %active%==yes db2 deactivate db %1 || (db2 activate db %1 & exit /b)
db2 CONNECT TO %1
db2 QUIESCE DATABASE IMMEDIATE FORCE CONNECTIONS
db2 CONNECT RESET
::db2set DB2_DIRECT_IO=OFF
db2dart %1 /RPT . /ERR E
::db2set DB2_DIRECT_IO=
db2 CONNECT TO %1
db2 UNQUIESCE DATABASE
db2 CONNECT RESET
if %active%==yes db2 activate db %1
وهنا هو هذا
يتم تسريع التحليل بسهولة بواسطة عامل تصفية بسيط (على .js ، على سبيل المثال) باستخدام regexp.
قد يسبب صعوبة ، لست متأكدًا مما إذا كان أي شخص يقوم بذلك ، ويعتمد على التشغيل الآلي ، والحد الأقصى يقتصر على هذا الاستعلام:
db2 "SELECT substr(TABSCHEMA,1,20), substr(TABNAME,1,20) FROM SYSIBMADM.ADMINTABINFO WHERE REORG_PENDING = 'Y'"
ومع ذلك
الحصول على المعلومات التي تحتاجها سهلللقيام بذلك ، قم أولاً بتشغيل هذا الأمر
db2 -x "select 'reorgchk update statistics on table',substr(rtrim(tabschema)||'.'||rtrim(tabname),1,50),';' from syscat.tables where type = 'T' " > reorgchk.out
db2 -x "select 'reorgchk update statistics on table',substr(rtrim(tabschema)||'.'||rtrim(tabname),1,50),';' from syscat.tables where type = 'T' " > reorgchk.out
، ثم
db2 -tvf reorgchk.out > reorgchk.txt
وأخيراً
reorg_filter.js reorgchk.txt
هنا هو البرنامج النصي WSH reorg_filter.js الذي يعرض قائمة بالكائنات التي يُحتمل أن تكون مشكلة ، على الأرجح يجب أن تكون صغيرة إذا كانت نوافذ الصيانة مثبتة بشكل صحيح:
var block = "", include = false, fso = new ActiveXObject("Scripting.FileSystemObject"); var input = fso.OpenTextFile(WScript.Arguments.Item(0), 1, false); var output = fso.CreateTextFile(WScript.ScriptFullName.replace(/\.js/i, ".txt"), true); while(!input.AtEndOfStream){ line = input.ReadLine(); if(/^reorgchk\s/i.test(line)){ if(include)output.WriteLine(block); block = ""; include = false; } block += line + "\n"; if(/\s([-*]{3}|[-*]{5})\s+$/.test(line))if(/\*/.test(RegExp.$1))include = true; } if(include)output.WriteLine(block);
بعد ذلك ، قم بتحليل
الوصف وابدأ إعادة تنظيم الكائنات المحددة أو قم بزيادة نافذة الصيانة غير المتصلة. بعد عدة تكرارات ، يصبح من الواضح الكائنات التي لا تقوم بإعادة التنظيم.
آمل ألا أخلط أي شيء ، رفعت أرشيف النصوص من خمس سنوات ، ربما وصفة طبية. لا أعرف إذا كان هذا الملحق سيكون مفيدًا لأي شخص.
روابط إلى الموارد المذكورة / الملفات
المعلومات الأساسية ، باستثناء تلك التي تم الحصول عليها في الدورات التدريبية التي لم تعد موجودة ، يمكن
العثور عليها هنا (ثم كان الرابط مختلفًا).
لقد تم نسيان الكثير بالفعل ، ولكن هناك رابط
لوثيقة pdf "أفضل الممارسات. تم العثور على
توليف ومراقبة أداء نظام قاعدة البيانات " (الرابط الآن جديد ، ويكي القديم لم يعد موجودا من 2020-01-01 ، ولكن هنا كل شيء ليس مستقرا تماما حتى الآن).
إذا توقف الرابط عن العمل ، فاسم وتجزئة الملف:الاسم: DB2BP_System_Performance_0813.pdf
SHA384: 180E EF56 DB7F 70DE A514 981C 2718 ADD1 5702 D142 ABFD 090C A2B1 529C E918 B7AE DD08 7C7E B36C 3466 C843 C808 D4DA DE66
SHA256: A1B3 C600 B28A 8B9F 25ED 4AC3 F6C2 C6BB F884 BDA5 4121 DA1A 9C05 D0B0 F5CF D84E
MD5: F086 F0DD 6CFC 4DAB 4723 FBE4 A2BE AB41
SHA512: 6C86 B044 7F60 1DDA AFA5 D726 A6C2 9B29 68DD 3A90 1606 DA17 0464 5213 C0B0 B3C8 E636 221A 316D 316D 151F 7E05 2B6D 55EB 95FC 09E7 B1AD 8CFE 0848 AB9F 94081414
SHA1: 7911 0741 2E6C FD6B 4B5B F639 5C0D 48D8 3528 A64D