هل يمكنني استبدال نقاط الوقود ببدء معاملات جديدة في أوراكل؟

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

سؤال

في الوقت الحالي العملية التي نستخدمها لإدراج مجموعات من السجلات هي شيء مثل هذا:

(ولاحظ أن "مجموعة السجلات" تعني شيئا مثل سجل الشخص جنبا إلى جنب مع عناوينها وأرقام الهواتف أو أي طاولات انضم إليها أخرى).

  1. بدء معاملة.
  2. أدخل مجموعة من السجلات ذات الصلة.
  3. الالتزام إذا كان كل شيء ناجحا، فقم بتراجع خلاف ذلك.
  4. العودة إلى الخطوة 1 للمجموعة التالية من السجلات.

يجب أن نفعل شيئا أكثر مثل هذا؟

  1. بدء معاملة في بداية البرنامج النصي
  2. بدء نقطة حفظ لكل مجموعة من السجلات.
  3. أدخل مجموعة من السجلات ذات الصلة.
  4. مرة أخرى إلى SavePoint إذا كان هناك خطأ، استمر في ناجح كل شيء.
  5. ارتكاب المعاملة في بداية البرنامج النصي.

بعد وجود بعض المشكلات مع ORA-01555 وقراءة عدد قليل من طلبات توم (مثل هذا)، أنا أفكر في تجربة العملية الثانية. بالطبع، كما يشير توم، بدءا من المعاملة الجديدة هو شيء يجب تعريفه حسب احتياجات العمل. هي العملية الثانية تستحق المحاولة، أم أنها فكرة سيئة؟

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

المحلول

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

إذا كنت تواجه مشكلات مع ORA-1555، فمن المؤكد أنها تقريبا لأنك تحظى بتقديم بيانات عملية تشغيل طويلة يتم تحديثها بواسطة معاملات أخرى. يسهم الالتزام داخل حلقةك في الاستخدام الدوري لقطاعات التراجع، وكذلك سيميل إلى زيادة احتمال إعادة استخدام القطاعات التي تعتمد عليها لتوفير اتساق القراءة. لذلك، لا تفعل ذلك ربما فكرة جيدة.

سواء كان استخدام نقاط الوقود هو الحل هو أمر مختلف. لست متأكدا من ميزة من شأنها أن أعطيك في وضعك. كما تعمل مع Oracle10g ربما يجب عليك التفكير في استخدام السائبة خطأ DML تسجيل الدخول في حين أن.

بدلا من ذلك، قد ترغب في إعادة كتابة استعلام القيادة بحيث يعمل مع أصغر من البيانات من البيانات. دون معرفة المزيد عن تفاصيل العملية الخاصة بك، لا يمكنني تقديم نصيحة محددة. ولكن بشكل عام، بدلا من فتح مؤشر واحد لمدة 10000 سجل قد يكون من الأفضل فتحه عشرين مرة مقابل 500 صف على البوب. الشيء الآخر الذي يجب مراعاته هو ما إذا كان يمكن إجراء عملية الإدراج أكثر كفاءة، كما يقول باستخدام المجموعة السائبة و FOLALL.

نصائح أخرى

بعض الأفكار...

  1. يبدو لي أحد نقاط رابط Asktom هو حجم التراجع الخاص بك / التراجع بشكل مناسب لتجنب 1555. هل هناك سبب هذا غير ممكن؟ كما يشير، إنه أرخص بكثير لشراء القرص مما هو عليه الكتابة / الحفاظ على الرمز للتعامل مع القيود حول الاستعادة (على الرغم من أنني اضطررت للقيام باتخاذ مزدوج بعد قراءة PRICETAG بقيمة 250 دولارا لمحرك أقراص 36 جيجابايت - هذا الخيط الذي بدأ في عام 2002 التوضيح الجيد لقانون مور!)
  2. هذا الرابط (بورليسون) يظهر مشكلة واحدة محتملة مع نقاط الوقود.
  3. هي معاملتك في الأمر الواقع الخطوتين 2،3، و 5 في السيناريو الثاني الخاص بك؟ إذا كان الأمر كذلك، فهذا ما أفعله - ارتكب كل معاملة. يبدو قليلا بالنسبة لي مثل السيناريو 1 هو مجموعة من المعاملات المدلفنة في واحدة؟
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top