[IT168 Server Academy] تعد سجلات المعاملات جزءًا مهمًا جدًا ولكن غالبًا ما يتم تجاهله من بنية قاعدة البيانات. نظرًا لأنه ليس نشطًا مثل المخطط الموجود في قاعدة البيانات، فإن القليل من الأشخاص يهتمون بسجل المعاملات.
سجل المعاملات هو سجل لتغييرات قاعدة البيانات ويمكنه تسجيل أي عملية على قاعدة البيانات وحفظ نتائج التسجيل في ملف منفصل. بالنسبة لكل عملية معاملة، يحتوي سجل المعاملات على سجلات شاملة للغاية، ويمكن استعادة ملفات البيانات إلى حالة ما قبل المعاملة بناءً على هذه السجلات. من بداية إجراء المعاملة، يكون سجل المعاملة في حالة تسجيل، وتكون أية عمليات على قاعدة البيانات أثناء المعاملة ضمن نطاق التسجيل. ولا يكتمل التسجيل حتى ينقر المستخدم على إرسال أو رجوع. تحتوي كل قاعدة بيانات على سجل معاملات واحد على الأقل وملف بيانات واحد.
لأسباب تتعلق بالأداء، يقوم SQL Server بتخزين تغييرات المستخدم في ذاكرة التخزين المؤقت. تتم كتابة هذه التغييرات على الفور في سجل المعاملات، وليس في ملف البيانات. يستخدم سجل المعاملات نقطة تمييز لتحديد ما إذا كانت المعاملة قد كتبت بيانات من ذاكرة التخزين المؤقت إلى ملف البيانات. عند إعادة تشغيل SQL Server، فإنه سيتحقق من أحدث نقطة علامة في السجل ويمسح سجلات المعاملات بعد نقطة العلامة هذه، لأن سجلات المعاملات هذه لا تكتب فعليًا البيانات الموجودة في ذاكرة التخزين المؤقت إلى ملف البيانات. وهذا يمنع تلك المعاملات المتقطعة من تعديل ملفات البيانات.
الحفاظ على سجل المعاملات
نظرًا لأن الكثير من الأشخاص غالبًا ما ينسون سجل المعاملات، فقد يؤدي ذلك أيضًا إلى حدوث بعض المشكلات في النظام. مع استمرار تشغيل النظام، سيتم تسجيل المزيد والمزيد من سجلات السجل، كما سيصبح حجم ملفات السجل أكبر وأكبر، مما يؤدي في النهاية إلى عدم توفر مساحة كافية على القرص. ما لم يتم تنظيف السجلات بشكل متكرر في العمل اليومي، ستشغل ملفات السجل في النهاية كل المساحة المتوفرة في القسم. التكوين الافتراضي للسجل هو سعة غير محدودة. إذا كنت تعمل في هذا التكوين، فسوف يستمر في التوسع ويشغل كل المساحة المتوفرة في النهاية. يمكن أن تتسبب كلتا الحالتين في توقف قاعدة البيانات عن العمل.
يمكن للنسخ الاحتياطي الروتيني لسجلات المعاملات أن يمنع ملفات السجل بشكل فعال من استهلاك مساحة زائدة على القرص. تقوم عملية النسخ الاحتياطي باقتطاع أجزاء السجل التي لم تعد هناك حاجة إليها. تتمثل طريقة الاقتطاع في وضع علامة على السجلات القديمة على أنها غير نشطة أولاً، ثم الكتابة فوق السجلات الجديدة في موقع السجلات القديمة، وبالتالي منع سجل المعاملات من النمو في الحجم. إذا تعذر إجراء نسخ احتياطية منتظمة للسجل، فمن الأفضل تعيين قاعدة البيانات على "نموذج الاسترداد البسيط". في هذا الوضع، سيجبر النظام سجل المعاملات على الاقتطاع تلقائيًا في كل مرة يتم فيها تسجيل نقطة علامة، واستبدال السجل القديم بسجل جديد.
تحدث عملية الاقتطاع عند النسخ الاحتياطي أو وضع علامة على النقاط القديمة على أنها غير نشطة، مما يسمح بالكتابة فوق سجلات المعاملات القديمة، ولكنه لا يقلل من مساحة القرص الفعلية التي يشغلها سجل المعاملات. حتى لو لم يعد السجل مستخدمًا، فسيظل يشغل قدرًا معينًا من المساحة. لذلك، أثناء الصيانة، يجب أيضًا ضغط سجل المعاملات. يتم ضغط سجلات المعاملات عن طريق حذف السجلات غير النشطة، وبالتالي تقليل مساحة القرص الصلب الفعلية التي تشغلها ملفات السجل.
يمكن ضغط ملف سجل المعاملات لقاعدة البيانات الحالية باستخدام عبارة DBCC SHRINKDATABASE. يتم استخدام عبارة DBCC SHRINKFILE لضغط ملف سجل المعاملات المحدد بالإضافة إلى ذلك، يمكن أيضًا تنشيط عملية الضغط التلقائي في قاعدة البيانات. عند ضغط سجل، يتم أولاً وضع علامة على السجلات القديمة على أنها غير نشطة، ثم يتم حذف السجلات التي تم وضع علامة عليها على أنها غير نشطة بالكامل. اعتمادًا على طريقة الضغط المستخدمة، قد لا ترى النتائج على الفور. ومن الناحية المثالية، يجب إجراء أعمال الضغط خلال الفترات التي لا يكون فيها النظام مشغولاً للغاية، وإلا فقد يؤثر ذلك على أداء قاعدة البيانات.
يمكن استخداماستعادة
النسخ الاحتياطي لسجل معاملات قاعدة البيانات لاستعادة قاعدة البيانات إلى حالة محددة، لكن النسخ الاحتياطي لسجل المعاملات نفسه لا يكفي لإكمال مهمة استعادة قاعدة البيانات، كما تحتاج ملفات البيانات التي تم نسخها احتياطيًا إلى المشاركة في أعمال الاسترداد. عند استعادة قاعدة بيانات، فإن الخطوة الأولى هي استعادة ملفات البيانات. لا تقم بتعيين ملف البيانات بأكمله إلى الحالة المكتملة حتى تتم استعادة ملف البيانات بالكامل، وإلا فلن تتم استعادة سجل المعاملات. عند اكتمال عملية استرداد ملف البيانات، سيقوم النظام باستعادة قاعدة البيانات إلى الحالة التي يريدها المستخدم من خلال النسخ الاحتياطي لسجل المعاملات. إذا كانت هناك نسخ احتياطية لملفات سجل متعددة بعد آخر نسخة احتياطية لقاعدة البيانات، فسيقوم برنامج النسخ الاحتياطي باستعادتها بالتسلسل وفقًا لوقت إنشائها.
يمكن لعملية أخرى تسمى شحن السجل أن توفر إمكانات نسخ احتياطي أقوى لقاعدة البيانات. عند تكوين شحن السجل، يمكنه نسخ قاعدة البيانات بأكملها إلى خادم آخر. في هذه الحالة، يتم أيضًا إرسال سجلات المعاملات بشكل دوري إلى خادم النسخ الاحتياطي لاستعادة البيانات. يؤدي هذا إلى إبقاء الخادم في حالة نسخ احتياطي سريع، وتحديثه مع تغير البيانات. الخادم الآخر يسمى خادم المراقبة ويمكن استخدامه لمراقبة إشارات الشحن المرسلة على فترات زمنية محددة. إذا لم يتم تلقي أي إشارة خلال الوقت المحدد، فسيقوم خادم المراقبة بتسجيل هذا الحدث في سجل الأحداث. هذه الآلية تجعل شحن السجل يستخدم غالبًا في خطط التعافي من الكوارث.
يلعب سجل معاملاتتحسين الأداء
دورًا مهمًا في قاعدة البيانات، وله أيضًا تأثير معين على الأداء العام للنظام. من خلال العديد من الخيارات، يمكننا تحسين أداء سجل المعاملات. نظرًا لأن سجل المعاملات عبارة عن عملية كتابة مستمرة على القرص، فلا تحدث أي قراءة أثناء هذه العملية. لذلك، فإن وضع ملف السجل على قرص مستقل سيلعب دورًا معينًا في تحسين الأداء.
يتعلق مقياس التحسين الآخر بحجم ملف السجل. يمكننا ضبط حجم ملف السجل بحيث لا يتجاوز نسبة قليلة من مساحة القرص الصلب، أو تحديد حجمه. إذا تم تعيينه على مستوى مرتفع جدًا، فسيؤدي ذلك إلى إهدار مساحة القرص، وإذا تم تعيينه على مستوى صغير جدًا، فسيجبر ملف السجل على محاولة التوسيع بشكل مستمر، مما يؤدي إلى انخفاض أداء قاعدة البيانات.
ملف سجل المعاملات ملف سجل المعاملات هو ملف يستخدم لتسجيل تحديثات قاعدة البيانات، بامتداد ldf.
في SQL Server 7.0 وSQL Server 2000، إذا تم تعيين ميزة النمو التلقائي، فسيتم توسيع ملف سجل المعاملات تلقائيًا.
بشكل عام، يكون حجم سجل المعاملات مستقرًا عندما يمكنه استيعاب الحد الأقصى لعدد المعاملات التي تحدث بين اقتطاع سجل المعاملات، والذي يتم تشغيله بواسطة نقطة تفتيش أو نسخة احتياطية لسجل المعاملات.
ومع ذلك، في بعض الحالات، يمكن أن يصبح سجل المعاملات كبيرًا جدًا بحيث تنفد المساحة أو يصبح ممتلئًا. عادةً، عندما يملأ ملف سجل المعاملات مساحة القرص المتوفرة ولا يمكن توسيعه، ستتلقى رسالة خطأ مثل ما يلي:
الخطأ: 9002، الخطورة: 17، الحالة: 2
ملف السجل لقاعدة البيانات '%.*ls' ممتلئ.
بالإضافة إلى رسالة الخطأ هذه، قد يضع SQL Server علامة SUSPECT على قاعدة البيانات بسبب نقص مساحة ملحق سجل المعاملات. للحصول على معلومات إضافية حول كيفية التعافي من هذا الموقف، راجع موضوع "انخفاض مساحة القرص" في تعليمات SQL Server عبر الإنترنت.
بالإضافة إلى ذلك، قد يؤدي توسيع سجل المعاملات إلى حدوث المواقف التالية:
· ملفات سجل المعاملات كبيرة جدًا.
· قد تفشل الصفقة وقد تبدأ في التراجع.
· قد تستغرق المعاملات وقتاً طويلاً لإتمامها.
· قد تحدث مشكلات في الأداء.
· قد يحدث انسداد.
السبب يمكن أن يحدث توسيع سجل المعاملات للأسباب أو المواقف التالية:
· المعاملات غير الملتزم بها · المعاملات الكبيرة جدًا · العمليات: DBCC DBREINDEX وCREATE INDEX
· عند الاستعادة من نسخة احتياطية لسجل المعاملات · لا يقوم تطبيق العميل بمعالجة كافة النتائج · تنتهي مهلة الاستعلام قبل اكتمال توسيع سجل المعاملات وتتلقى رسالة خطأ "السجل ممتلئ" زائفة · دقة المعاملة غير المكررة الناتجة عن وجود ملف السجل ممتلئ عندما لا تتمكن قاعدة بيانات SQL من الكتابة إلى الملف، هناك طريقتان متاحتان:
طريقة واحدة: مسح السجل.
1. افتح محلل الاستعلام وأدخل الأمر DUMP TRANSACTION اسم قاعدة البيانات مع NO_LOG
2. افتح Enterprise Manager مرة أخرى--انقر بزر الماوس الأيمن فوق قاعدة البيانات التي تريد ضغطها--جميع المهام--تقليص قاعدة البيانات--تقليص الملفات--حدد ملف السجل--حدد تقليص إلى XXM في وضع التقليص، ثم سيتم منح إذن التقليص هنا للوصول إلى الحد الأدنى لعدد M، أدخل هذا الرقم مباشرة وقم بتأكيده.
الطريقة الأخرى لها مخاطر معينة، لأن ملف السجل الخاص بـ SQL SERVER لا تتم كتابته في ملف قاعدة البيانات الرئيسية على الفور إذا لم يتم التعامل معه بشكل صحيح، فسوف يتسبب في فقدان البيانات.
1: حذف السجل
فصل قاعدة البيانات مدير المؤسسة -> الخادم -> قاعدة البيانات -> انقر بزر الماوس الأيمن -> فصل قاعدة البيانات 2: حذف ملف السجل، أرفق قاعدة البيانات مدير المؤسسة -> الخادم -> قاعدة البيانات -> انقر بزر الماوس الأيمن -> إرفاق قاعدة البيانات، تنشئ هذه الطريقة سجلًا جديدًا بالحجم هو أكثر من 500K فقط.
ملحوظة: يوصى باستخدام الطريقة الأولى.
إذا كنت لا تريد أن تكبر في المستقبل.
المستخدمة تحت SQL2000:
انقر بزر الماوس الأيمن على قاعدة البيانات->خصائص->خيارات->فشل الاسترداد-نموذج-تحديد-نموذج بسيط.
أو استخدم عبارة SQL:
تغيير اسم قاعدة البيانات، تعيين استرداد بسيط
بالإضافة إلى ذلك، كما هو موضح في الشكل أعلاه، تحتوي خصائص قاعدة البيانات على خيارين، يتعلقان بنمو سجل المعاملات:
اقتطاع السجل على نقطة التفتيش
(يتم استخدام هذا الخيار في SQL7.0. في SQL 2000، يتم تحديد نموذج استرداد الخطأ كنموذج بسيط)
عند تنفيذ أمر نقطة التحقق، يتم مسح محتويات ملف سجل المعاملات إذا تجاوز 70% من حجمه. قم دائمًا بتعيين هذا الخيار على True عند تطوير قاعدة البيانات.
يتقلص تلقائيا
تحقق بانتظام من قاعدة البيانات. عندما تتجاوز المساحة غير المستخدمة لملف قاعدة البيانات أو ملف السجل 25% من حجمها، سيقوم النظام تلقائيًا بتقليل الملف لجعل المساحة غير المستخدمة تساوي 25% عندما لا يتجاوز حجم الملف الحجم الأولي عند إنشائه، لن يجب أن يكون الملف المصغر أيضًا أكبر من حجمه الأصلي أو يساويه. لا يمكن إجراء تقليل ملف سجل المعاملات إلا عند عمل نسخة احتياطية منه أو عند تعيين خيار اقتطاع السجل عند نقطة التفتيش على True.
ملاحظة: بشكل عام، تم تعيين الخصائص الافتراضية لقاعدة البيانات التي أنشأها Li Cheng، ولكن في حالة حدوث ظروف غير متوقعة، يتم تغيير خصائص قاعدة البيانات، يرجى مسح السجل ثم التحقق من خصائص قاعدة البيانات المذكورة أعلاه لمنع سجل المعاملات ملء مرة أخرى.