هل كتابة ملفات سجل الخادم إلى قاعدة بيانات فكرة جيدة؟

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

سؤال

بعد القراءة مقال حول هذا الموضوع من أورايلي, ، أردت أن أسأل Stack Overflow عن أفكارهم حول هذا الموضوع.

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

المحلول

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

و(تأكد من أن جدول سجل قاعدة البيانات يحتوي على عمود ل "الآلة التي جاء الحدث سجل من" بالمناسبة - مفيد جدا)

نصائح أخرى

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

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

قم بتسجيل الدخول إلى قاعدة البيانات إذا استطعت ولا يؤدي ذلك إلى إبطاء قاعدة البيانات الخاصة بك :)

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

select * from logs
where log_name = 'wcf' and log_level = 'error'

ثم بعد العثور على خطأ يمكنك رؤية المسار الكامل الذي يؤدي إلى هذا الخطأ

select * from logs
where contextId = 'what you get from previous select' order by timestamp

كيف ستحصل على هذه المعلومات إذا قمت بتسجيلها في ملفات نصية؟

يحرر:كما اقترح JonSkeet أن هذه الإجابة ستكون أفضل إذا ذكرت أنه ينبغي على المرء أن يفكر في جعل التسجيل إلى قاعدة البيانات غير متزامن.لذلك أصرح بذلك :) لم أكن بحاجة إليه.على سبيل المثال، كيفية القيام بذلك، يمكنك التحقق من "Ultra Fast ASP.NET" بواسطة Richard Kiessig.

إذا كانت قاعدة البيانات قاعدة بيانات الإنتاج، وهذا هو فكرة رهيبة. أنت <م> سوف لديك مشاكل مع النسخ الاحتياطي، والنسخ، والانتعاش. مثل سعة تخزين أكبر لDB نفسه، والنماذج المقلدة، إن وجدت، والنسخ الاحتياطي. لمزيد من الوقت لإعداد واستعادة النسخ المتماثل المزيد من الوقت للتحقق من النسخ الاحتياطي، والمزيد من الوقت للتعافي DB من النسخ الاحتياطية.

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

ونفكر في قاعدة بيانات الإعداد بشكل صحيح والتي تستخدم ذاكرة الوصول العشوائي ليقرأ ويكتب؟ وهذا هو الحال أسرع بكثير من الكتابة إلى القرص ولن تقديم قرص IO عنق الزجاجة التي تراها عندما تخدم أعدادا كبيرة من العملاء التي تحدث عندما المواضيع تبدأ تأمين بانخفاض نظرا لOS نقول لهم الانتظار على المواضيع تنفذ حاليا أن تستخدم كل ما هو متاح IO يعالج.

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

ويمكن أن يتم ذلك خارج ساعات الدوام إذا لم يكن لديك H-A الموقع.

وفي وقت ما في المستقبل أتمنى أن وضع معايير لإثبات وجهة نظري.

وحظا سعيدا!

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