السبت، 4 يوليو 2009

Direct Load Inserts




إن أي متعلم لأوراكل يعرف تماما تعليمة insert وهي من تعليمات (DML) ولها عدة طرق لاستخدامها :

1- استخدامها بشكل مباشر

Insert into (columns_name)

Values (values);

2- استخدامها مع تعليمة select وتكون بالشكل :

Insert into

(columns name)

Select from ;

في الطريقة الثانية وفي حال كانت البيانات كبيرة جدا فأن تعليمة insert ستأخذ وقت أطول ولا بد من وجود حل لهذه المعضلة .

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

فمثلا من أجل تعليمة insert تحاول أوراكل أن تدخل كل سجل جديد إلى بلوك معطيات موجود قد تم مسبقا حجزه لهذا الجدول , خطة التنفيذ (execution plan) هذه تمثل استخدام المساحة المتطلبة لتخزين المعطيات,بالرغم من أن هذه الخطة لا تزود بأداء كاف لتعليمة insert مع أمر select التي تقوم بإدخال أسطر متعددة , لذا أنت تستطيع أن تعدل خطة التنفيذ السابقة باستخدام التلميح (hint) APPEND وتسمى هذه بـ (Direct Load Inserts) وذلك لكي تحسن أداء أمر insert (الذي يدخل كم كبير من الصفوف) , إن التلميح APPEND سوف يخبر قاعدة البيانات أن تبحث عن آخر بلوك معطيات تم إدخاله إلى هذا الجدول , السجلات الجديدة سوف يتم إدخالها ابتدءا من البلوك التالي لآخر بلوك مستخدم ,إن تعليمة insert قد تنتهي أسرع عندما تستخدم التلميح Append لانه يوجد القليل من إدارة المساحة خلال عملية الإدخال لقاعدة البيانات .

سوف تخصص تلميح APPEND ضمن أمر insert بحيث يبدو كتعليق (comment) انها تبدأ بـ /* وتنتهي بـ */ , الفرق الوحيد بينها وبين التعليق أن التلميح يبدأ بالحرف (+) قبل كتابة اسم التلميح

المثال التالي يوضح تعليمة insert التي تستخدم التلميح Append :

Insert /*+ APPEND */ into emp (name)

Select ename from emp_rec

Where deptno in (select deptno from dept);

Commit;

إن السجلات في الجدول emp_rec سوف يتم إدخالها إلى الجدول emp , فبدلا من محاولة إعادة استخدام المساحة المستخدمة سابقا للجدول emp , السجلات الجديدة سوف توضع في نهاية مساحة التخزين الفيزيائية للجدول .

بما ان السجلات الجديدة لن تعيد استخدام المساحة المتوفرة والتي يستخدمها الجدول مسبقا فإن المساحة المتطلبة للجدول emp قد تزداد , وبشكل عام أنت يجب أن تستخدم هذا التلميح عندما تقوم بإدخال كمية كبير من السجلات إلى الجدول , كما انه لن يتم وضع البيانات في BUFFER CACH .

Powered By Blogger