سؤال

لدينا شرط لحذف الصفوف بترتيب الملايين من الجداول المتعددة كمهمة دفعة (لاحظ أننا لا نحذف جميع الصفوف ، نحن نحذف بناءً على طابع زمني مخزّن في عمود مفهرس). من الواضح أن الحذف العادي يأخذ إلى الأبد (بسبب التسجيل ، والتحقق من القيد المرجعي وما إلى ذلك). أعلم في عالم LUW ، لدينا جدول تغيير لم يتم تسجيله في البداية ، لكن لا يمكنني العثور على بيان SQL مكافئ لـ DB2 V8 Z/OS. أي شخص لديه أي أفكار حول كيفية القيام بذلك بسرعة حقا؟ أيضا ، أي أفكار حول كيفية تجنب الشيكات المرجعية عند حذف الصفوف؟ أخبرونى من فضلكم.

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

المحلول 3

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

شكرا جميع على مساعدتك.

نصائح أخرى

في الماضي ، قمت بحل هذا النوع من المشكلات عن طريق تصدير البيانات وإعادة تحميلها بأمر استبدال النمط. علي سبيل المثال:

EXPORT to myfile.ixf OF ixf
SELECT * 
FROM my_table 
WHERE last_modified < CURRENT TIMESTAMP - 30 DAYS;

ثم يمكنك تحميله مرة أخرى ، واستبدال الأشياء القديمة.

LOAD FROM myfile.ixf OF ixf
REPLACE INTO my_table
NONRECOVERABLE INDEXING MODE INCREMENTAL;

لست متأكدًا مما إذا كان هذا سيكون أسرع أم لا بالنسبة لك (ربما يعتمد ذلك على ما إذا كنت تحذف أكثر مما تحتفظ به).

  1. هل تحتوي المفاتيح الأجنبية بالفعل على فهارس أيضًا؟

  2. كيف لديك مجموعة الإجراء الحذف الخاص بك؟ CASCADE, NULL, NO ACTION

  3. استخدم سلامة مجموعة لتعطيل القيود مؤقتًا على عملية الدُفعات.http://www.ibm.com/developerworks/data/library/techarticle/dm-0401melnyk/index.html

http://publib.boulder.ibm.com/infocenter/db2luw/v8/index.jsp؟topic=/com.ibm.db2.udb.doc/admin/r

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