سؤال

في مجموعة Oracle (أكثر من جهاز واحد يتعاون لخدمة قاعدة بيانات واحدة) هل ستُرجع وظيفة "sysdate" دائمًا إجابة متسقة؟حتى لو أبلغت ساعة نظام تشغيل الخوادم عن قيم غير متناسقة؟

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

المحلول

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

في الواقع، وهذا صحيح حتى بالنسبة للأنظمة غير العنقودية، كما SYSDATE يمكن في بعض الأحيان تغيير (توفير الوقت، وأخطاء مسؤول النظام ...).

نصائح أخرى

SYSDATE هو نظام تشغيل مرتبط بالعقدة؛إذا تم ضمان صحتها عبر المجموعة، فسيتعين على العقد المزامنة في كل مرة تتصل فيها بـ SYSDATE.في بيئة متفاوتة المسافات، تكون التسلسلات المرتبة باهظة الثمن؛من الأفضل تجنبه إذا كان ذلك ممكنًا.سيضمن لك التسلسل المرتب التفرد والنظام - ومع ذلك، لا يزال من الممكن أن تحصل على فجوات إذا فشلت المعالجة بعد الاختيار من التسلسل وقبل تنفيذ المعاملة.

نحن نستخدم بعض الحلول:

  1. بشكل عام ، يتم تعيين التسلسلات على غير مرتبة بأحجام ذاكرة التخزين المؤقت الكبيرة (25000) لتقليل التواصل بين الكتلة.
  2. استخدم NTP للوقت المزامنة العقد (لا يزال من الممكن أن تكون غير صحيحة ،+/- نانو ثانية ، لذلك لا يمكنك الاعتماد على هذا)
  3. بالنسبة لسجلات نمط التدقيق ، نستخدم systimestamp (timestamp (6)) كمعرف فريد - ونعيش مع حقيقة أنه من الممكن (على الرغم من أنه من غير المرجح للغاية) أن تظهر السجلات خارج الترتيب (هذا ممكن أيضًا مع المعالجة العادية ، اعتمادا على حدوث ارتباطات)
  4. عندما يكون التسلسل المطلوب مطلوبًا ، ويمكن أن تكون هناك فجوات - استخدم تسلسلًا مرتبة (حاول تجنبها في بيئة مجمعة لأن "ذاكرة التخزين المؤقت" لا تساعد)

  5. عندما يكون التسلسل المطلوب مطلوبًا - ولكن لا يمكن أن تكون هناك فجوات - لدينا جدول التسلسل الخاص بنا ، وقفل السجل ، والحصول على الرقم ، ثم الحفاظ على السجل مغلقًا حتى يرتفع المستخدم ؛سيؤدي ذلك إلى أن يحاول أي شخص آخر الحصول على نفس التسلسل للانتظار حتى يتم ارتكاب معاملة المستخدم بالكامل - تجنب القيام بذلك إذا كان ذلك ممكنًا.

استخدم NTP لمزامنة الوقت في جميع الخوادم (أوراكل وغيرها)، وضمان أن لا يحدث. الساعات النظام تتعارض هي وصفة لكارثة.

وأود أن <م> تخمين أن SYSDATE سيعود نتائج غير متناسقة في السيناريو تصفون.

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

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