نکته مهم : برای بهره گیری از متن کامل پژوهش یا مقاله می توانید فایل ارجینال آن را از پایین صفحه دانلود کنید. سایت ما حاوی تعداد بسیار زیادی مقاله و پژوهش دانشگاهی در رشته های مختلف می باشد که می توانید آن ها را به رایگان دانلود کنید

شما می توانید تکه های دیگری از این مطلب را در شماره بندی انتهای صفحه بخوانید              

اجراي اتصال بيروني:

در بخش 3 . 5. 7 ، عمليات اتصال بيروني ارائه شده می باشد با 3 تغييرات آن: اتصال بيروني چپ، اتصال بيروني راست و كل اتصال بيروني. ما در فصل 8 بحث كرديم كه چطور اين عمليات ها مي تواند در SQL2 تعيين شوند. در زير مثالي از عمليات اتصالي بيروني چپ در SQL2 آمده می باشد:

SELECT LNAME, FNAME, DNAME

FROM (Employeeleft outer join Department on Dno= Dnumber)

نتيجه اين پرس و جو ، جدول اسامي كارمندان و دپارتمانهاي مربوط به آنها می باشد. آن براي نتيجه اتصال منظم (دروني) مشابه می باشد، بجز اينكه اگر Employee tuple ، دپارتمان مربوطه نداشته باشد، نام كارمند در جدول حاصله ظاهر نمي گردد، ولي نام دپارتمان ، براي اين tuple ها در نتيجه پرس و جو null يا پوچ يا تهي می باشد. اتصال بيروني مي تواند يا تعديل كپي از الگاريتم هاي اتصال مثل اتصال حلقه تودرتو، يا اتصال حلقه تكي محاسبه گردد. براي مثال ، براي محاسبه اتصال بيروني چپ از ارتباط چپ بعنوان حلقه بيروني يا حلقه تكي بهره گیری مي كنيم زیرا هر tuple ،‌ در ارتباط چپ بايد در نتيجه ظاهر گردد. اگر tuple هاي تطبيق پذيري در ارتباط ديگري وجود داشته باشد، tuple هيا متصل شده در نتيجه ايجاد مي گردد و ذخيره مي شوند. بهر حال اگر هيچ tuple تطبيق پذيري يافت نشود، tuple در نتيجه هنوز هست ولي با مقدار پوچ يا تهي پر مي گردد. الگاريتم هاي ادغام – مرتب كردن، اتصال hash مي توانند براي محاسبه اتصالات بيروني توسعه يابند. بدين ترتيب ، اتصال بيروني مي تواند با اجراي الحاق عملگرهاي جبري ارتباط اي محاسبه گردد. براي مثال ، عمليات اتصال بيروني چپ نشان داده شده با فوق معادل با توالي عملياتهاي ارتباط اي زير می باشد:

1- محاسبه JOIN (دروني) در جداول Employee, Department :

2- يافتنtupleهاي employee كه در نتيجه JOIN ظاهر نمي گردد:

3- پر كردن هر tuple در temp2 با فيلد ONAME :

4- بكارگيري عمليات UNION براي Temp2, temp1 براي ايجاد نتيجه LEFT OUTER JOIN RESULT

هزينه اتصال بيروني تحت عنوان محاسبه شده فوق، مجموعه هزينه هاي مراحل مربوطه می باشد. بهرحال توجه كنيد كه مرحله 3 مي تواند بعنوان ارتباط موقتي انجام گيرد كه در مرحله 2 ساخته مي گردد. در اينصورت مي توان هر tuple حاصله را با تهي پوشش داد يا پر كرد. علاوه بر آن در مرحله 4 ، مي دانيم كه دو اپراند اجتماع ، غير متصل مي شوند لذا هيچ نيازي به حذف duplicate نمي باشد.

7 . 2 . 18 – الحاق و تركيب عمليات ها با بهره گیری از لوله اي كردن: پرس و جوي تعيين شده در SQL به عبارت جبري ارتباط اي ترجمه مي گردد كه توالي عملياتهاي ارتباط اي می باشد. اگر عمليات تكي را اجرا كنيم، بايد فايل هاي موقتي روي ديسك براي حفظ نتايج حاصله از اين عمليات هاي موقتي ايجاد كنيم كه سربار اضافي را ايجاد مي كند. ايجاد و مرتب كردن فايل هاي موقتي بزرگ روي ديسك ضامن صرف زمان ا ست و در بسياري موارد مي تواند غير ضروري باشد، زیرا اين فايل ها فوراً بعنوان ورودي در عمليات بعدي بهره گیری مي شوند. براي ايجاد تعدادي فايل موقتي، ايجاد كد اجراي پرس و جو متداول می باشد كه در ارتباط با الگاريتم ها براي الحاقات عمليات ها در پرس و جو می باشد.

براي مثال، نسبت به اجراي مجزا، JOIN مي تواند با دو عمليات SELECT روي فايل هاي ورودي و عمليات نهايي PROJECT روي فايل حاصله تركيب گردد، همگي توسط يك الگاريتم با دو فايل ورودي و فايل خروجي تكي اجرا مي گردد. نسبت به ايجاد چهار فايل موقتي، ما الگاريتم را مستقيماً بكار مي بريم و فقط يك فايل نتيجه بدست مي آوريم. در بخش 1 . 3. 18 ، ما روي چگونگي گروهبندي بهينه سازي جبري ارتباط اي ذهني عملياتها با همديگر براي اجرا بحث مي كنيم. اين پردازش مبتني بر جاري كردن يا لوله اي كردن ناميده مي گردد. ايجاد كد اجراي پرس و جو براي پياده سازي عملياتهاي متعدد متداول می باشد. كد ايجاد شده براي ايجاد پرس و جو چندين الگاريتم را تركيب مي كند كه مربوط به عملياتهاي اختصاصي مي باشند. از آنجائيكه truple هاي نتيجه از يك عمليات ايجاد مي شوند، آنها بعنوان ورودي براي عملياتهاي بعدي ارائه مي شوند. براي مثال اگر عمليات اتصال دو عمليات انتخاب را روي روابط مبنا دنبال كند، tupleهاي ناشي از هر انتخاب بعنوان ورودي براي الگاريتم اتصال در جريان يا لوله كه ايجاد مي شوند، ارائه مي گردند.

    شما می توانید مطالب مشابه این مطلب را با جستجو در همین سایت بخوانید                     
  1. 18- بكارگيري قوانين ذهني در بهينه سازي پرس و جو: در اين بخش،‌ما روي تكنيك هاي بهينه سازي بحث مي كنيم كه از قوانين ذهني براي تعديل نمونه داخلي پرس و جو بهره گیری مي كنند كه معمولاً به فرم درخت پرس و جو يا ساختار داده هاي گراف پرس و جو، براي بهبود عملكرد اجرايي آن می باشد. تجزيه كننده پرس و جو در سطح بالا آغاز، نمونه داخلي آغازين را ايجاد مي كند كه بعد بر طبق قوانين ذهني بهينه سازي مي گردد. بدنبال آن، طرح اجراي پرس و جو براي اجراي گروههاي عمليات ها براساس مسيرهاي دستيابي موجود روي فايل ها در پرس و جو ،‌ايجاد مي گردد.

يكي از قوانين ذهني اصلي، جهت بكارگيري عمليات هاي PROJECT , SELECT قبل از بكارگيري عمليات هاي JOIN و بنيادي ديگر می باشد. اين بدين علت می باشد كه اندازه فايل ناشي از عمليات بنيادي، مثل JOIN ، معمولاً تابع مضروب اندازه هاي فايل هاي ورودي می باشد. عمليات هاي SELECT و PROJECT ، اندازه فايل را كاهش مي دهند و از اينرو بايد قبل از عمليات JOIN (اتصال) و عمليات بنيادي ديگر بكار گرفته گردد.

ما در بخش 1. 3. 18 با ارائه درخت پرس و جو و نمادهاي گراف پرس و جو كار را ‎آغاز مي كنيم. اينها بعنوان پايه و اساس براي ساختارهاي داده هايي بهره گیری مي شوند كه براي نمونه داخلي پرس و جوها بكار مي طریقه. درخت پرس و جو براي ارائه عبارت جبري ارتباط اي توسعه يافته يا عبارت جبري ارتباط اي بكار مي رود،‌در عوض گراف پرس و جو براي نشان دادن عبارت حسابان ارتباط اي بهره گیری مي گردد. وقتي در بخش 2 . 3. 18 نشان مي دهيم كه چطور قوانين بهينه سازي ذهني براي تبديل درخت پرس و جو به درخت پرس و جوي معادل بكار مي طریقه، كه عبارت جبري ارتباط اي متفاوتي را نشان مي دهد كه براي اجرا كارآمدتر می باشد ولي همان نتيجه اوليه را ارائه مي دهد. ما روي تعادل و توازن عبارات جبري ارتباط اي گوناگون بحث مي كنيم. بالاخره در بخش 3 .3 .18 به ايجاد طرح هاي اجراي پرس و جو مي پردازيم.

1 . 3. 18- نماد براي درخت هاي پرس و جو و گراف هاي پرس و جو: درخت پرس و جو ، ساختار داده هاي درختي می باشد كه مربوط به عبارت جبري ارتباط اي می باشد. آن ارتباط هاي ورودي پرس و جو را بعنوان گروه هاي برگ هاي درخت نشان مي دهد و عملياتهاي جبري ارتباط اي را بعنوان گروه هاي داخلي نشان مي دهد. اجراي درخت پرس و جو شامل اجراي عمليات گره داخلي می باشد هر وقت اپراند آن در دسترس باشد و بعد جايگزيني آن گره داخلي با ارتباط اي می باشد كه از اجراي عمليات حاصل مي گردد. اجرا زماني خاتمه مي يابد كه گره ريشه اجرا مي گردد و ارتباط نتيجه براي پرس و جو ايجاد مي گردد. تصوير (a) 4. 18 ، درخت پرس و جو را براي پرس و جوي QL از فصل هاي 7 تا 9 نشان مي دهد. براي هر پروژه واقع در Stafford ،‌تعداد پروژه ، تعداد دپارتمان در حال كنترل ، و نام فاميل، آدرس و تاريخ تولد مدير دپارتمان بازيابي ميشود.

اين پرس و جو روي طرح ارتباط اي تصوير 5 .7 تعيين شده و مربوط به عبارت جبري ارتباط اي زير می باشد:

TTPNOMBER, DNUM   

QZ: SELECT P.pnumber, p.

FROM

WMERE

در تصوير (a) 4 .18 ، 3 ارتباط Gmployee, Department , Project توسط گره هاي برگهاي E,D,P نشان داده شده اند، در حاليكه عملياتهاي جبري ارتباط اي عبارت توسط گره هاي درخت داخلي نشان داده شده اند. وقتي اين درخت پرس و جو اجرا مي گردد، گره با علامت (1) در تصوير (a) 4 . 18 بايد اجرا را قبل از گره (2) آغاز كند زیرا tuple هاي حاصله از عمليات (1) بايد در دسترس باشند قبل از اينكه ما بتوانيم عمليات اجرايي (2) را آغاز كنيم. بطور مشابه گره (2) بايد نتايج اجرايي و توليدي را آغاز كند قبل از اينكه گره (3) بتواند اجرا را آغاز كند و بدين ترتيب همانطوريكه نظاره مي گردد،‌درخت پرس و جو ، ترتيب خاص عملياتها را براي اجراي پرس و جو نشان مي دهد. نمونه خنثي تر پرس و جو،‌نماد گراف پرس و جو می باشد. تصوير (c) 4 .18 ، گراف پرس و جو را براي پرس و جوي QL نشان دهد.

ارتباط ها در پرس و جو توسط گره هاي ارتباط نشان داده مي شوند،‌كه بعنوان چرخه هاي تكي به نمايش در مي آيند. مقادير ثابت ، از شرايط انتخاب پرس و جو ، توسط گره هاي ثابت نشان داده شده اند، كه بعنوان چرخه هاي دوبل به نمايش در مي آيند. شرايط انتخاب و اتصال توسط لبه هاي گراف نشان داده شده اند، همانطوريكه در تصوير (c) 4. 18 آمده می باشد. بالاخره، ويژگيهاي بازيابي شده از هر ارتباط در پرانتزهاي مربعي بالاي هر ارتباط به نمايش در آمده اند.

نمونه گراف پرس و جو، ترتيبي را مشخص نمي كند كه روي آن عملياتها آغاز اجرا مي شوند. فقط گراف تكي مربوط به هر پرس و جو هست. اگر چه تعدادي تكنيك هاي بهينه سازي براساس گراف هاي پرس و جو بودند، اكنون پذيرفته مي گردد كه درختان پرس و جو ارجحيت دارند زیرا در اقدام، بهينه ساز پرس و جو نياز به نشان دادن ترتيب عمليات ها براي اجراي پرس و جو دارد كه در گرافهاي پرس و جو امكان پذير نمي باشد.

2 .3 .18- بهينه سازي ذهني درخت هاي پرس و جو: بطور كلي، بسياري از عبارات جبري ارتباط اي متفاوت و از اينرو درختان پرس و جوي متفاوت مي توانند معادل باشند، كه مي توانند در ارتباط با پرس و جوي يكساني باشند. تجزيه كننده پرس و جو، درخت پرس و جو آغازين استانداردي را براي ارتباط با پرس و جوي SQL، بدون انجام هر گونه بهينه سازي، ايجاد مي كند. براي مثال، براي پرس و جوي انتخاب پروژه – اتصال ، مثل Q2 ، درخت آغازين در تصوير (b) 4. 18 نشان داده شده می باشد. CARTESIAN PRODUCT ارتباط هاي تعيين شده در بند FROM ، آغاز بهره گیری مي گردد، بعد شرط هاي انتخاب و اتصال بند HERE بكار مي طریقه كه توسط طرح روي ويژگيهاي بند SELECT دنبال مي گردد. اين درخت پرس و جوي متعارف ، عبارت جبري ارتباط اي را نشان مي دهد كه غيركارآمد می باشد چنانچه مستقيماً اجرا گردد، كه بعلت عملياتهاي CARTESIAN PRODUCT (X) می باشد. براي مثال ، اگر ارتباط هاي EMPLOYEE, DEPARTMENT, PROJECT ، اندازه هاي ثبت 100 ، 80 ، 180 بايت داشته باشند و شامل 100 ، 20 و TUPLE 5000 باشند، نتيجه CARTESIAN PRODUCT شامل 10 ميليون TUPLE در اندازه ثبت 300 بايتي هر يك مي باشند. بهر حال، درخت پرس و جو در تصوير (b) 4. 18 ، فرم استاندارد ساده اي می باشد كه مي تواند بآساني ايجاد گردد. اكنون آن كار بهينه ساز پرس و جوي ذهني براي تغيير شكل دادن اين درخت پرس و جوي آغازين به درخت پرس و جوي نهايي می باشد كه براي اجراي كارآمد می باشد. بهينه ساز بايد شامل قوانيني براي تعادل در ميان عبارات جبري ارتباط اي باشد كه مي تواند براي درخت آغازين بهره گیری گردد. قوانين بهينه سازي پرس و جوي ذهني از اين عبارات متعادل براي تغيير شكل درخت آغازين به درخت نهايي بهره گیری مي كند و درخت پرس و جو را بهينه سازي مي كند. ما آغاز روي چگونگي تغيير شكل درخت پرس و جو با بهره گیری از قانون ذهني بحث مي كنيم. بعد به قوانين تغيير شكل كلي و عمومي مي پردازيم و نشان مي دهيم چطور آنها در بهينه ساز ذهني جبري بكار مي طریقه. مثال تغيير شكل پرس و جو : پرس و جو Q زير را روي پايگاه اطلاعاتي تصوير 5 .7 در نظر بگيريد: نام خانوادگي كارمندان متولد شده بعد از 1957 را كه در پروژه Aquarius كار مي كنند را پيدا كنيد. اين پرس و جو مي تواند در SQL بقرار زير تعيين گردد:

Q: SELECT LNAME


دیدگاهتان را بنویسید