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

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

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

شما می توانید مطالب مشابه این مطلب را با جستجو در همین سایت بخوانید                     

الگاريتم اتصال hash، دو رگه ،‌تغييرات اتصال hash پارتيشن می باشد، كه مرحله اتصال براي يكي از پارتيشن ها در مرحله تقسيم كردن شامل مي گردد. براي نشان دادن اين مطلب، فرض كنيد كه اندازه بافر حافظه، يك بلوك ديسك می باشد كه nB از اين بافرها در دسترس هستند، و آن تابع hash بكار رفته h(k)=kmodm می باشد تا اينكه M پارتيشن ايجاد مي گردد، جاييكه می باشد. براي مثال ، فرض كنيد كه ما عمليات اتصال op6 را انجام مي دهيم. در اولين گذر مرحله تقسيم كردن، وقتي الگاريتم اتصال hash دو رگه، در كوچكتر از دو فايل تقسيم مي گردد. الگاريتم ، فضاي بافر در ميان M پارتيشن را تقسيم مي كند تا اينكه تمام بلوك هاي اولين پارتيشن DEPARTMENT كاملاً در حافظه اصلي باقي مي ماند. براي هر پارتيشن ديگر، فقط بافر رد حافظه تكي كه اندازه آن يك بلوك ديسك می باشد. تخصيص مي يابد. بقيه پارتيشن در ديسك بعنوان اتصال hash پارتيشن منظم نوشته مي گردد. از اينرو در پايان اولين گذر مرحله تقسيم كردن، اولين پارتيشن DEPARTMENT در حافظه اصلي كاملاً باقي مي ماند،‌در عوض هر يك از پارتيشن هاي ديگر DEPARTMENT در فايل فرعي ديسك باقي مي ماند براي دومين مرحله تقسيم كردن،‌ثبت هاي دومين فايل متصل شده، فايل بزرگتر، Employee در ob6 تقسيم مي شوند. اگر ثبت در اولين پارتيشن hash گردد، آن با ثبت تطبيق پذيري (برابري) در DEPARTMENT متصل مي گردد و ثبت هاي متصل شده در بافر نتيجه نوشته مي شوند. اگر ثبت Employee در پارتيشن بغير از اولين پارتيشن hash گردد، بطور معمول تقسيم مي گردد. از اينرو، در پايان دومين گذر مرحله تقسيم كردن، تمام ثبت هايي كه در اولين پارتيشن hash مي شوند، متصل شده اند. اكنون m-1 جفت پارتيشن روي ديسك هست. لذا، در طول دومين مرحله اتصال يا آزمايش ، m-1 تكرار بجاي m لازم مي باشد.

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

4 .2 . 18 – اجراي عملياتهاي PROJECT و Set : عمليات II< attribute list>(R), Project براي اجرا مستقيم می باشد چنانچه Matribute, list> < شامل كليه ارتباط Ri باشد، زیرا در اين مورد، نتيجه عمليات ، تعداد tuple هاي يكساني تحت عنوان R دارد ولي با فقط مقادير براي ويژگيها در <attribute list> در هر tuple اگر <attribute list> شامل كليد R نباشد، كپي و تكثير tuple ها بايد حذف گردد. اين با مرتب كردن نتيجه عمليات و بعد حذف duplicate toples صورت مي گيرد كه در نتيجه بعد از مرتب كردن نمايان ميشود. طرح الگاريتم در تصوير c(b) 18 ارائه شده می باشد. hashing مي تواند براي حذف تكثيرها بكار رود: تحت عنواني كه هر ثبت در مخزن فايل hash در حافظه hash و درجه مي گردد، آن در برابر موارد قبلي در مخزن چك مي گردد، اگر آن كپي و تكثير باشد (duplicate) ، درج نمي گردد. آن براي فراخواندني در پرس و جوهاي SQL در اينجا مفيد می باشد، پيش فرض براي حرف duplicate ها از نتيجه پرس و جو نمي باشد، تنها اگر Distinct كلمه كليدي را شامل گردد، duplicate ها حذف شده از نتيجه پرس و جو هستند. عملياتهاي CARTESIAN rrODUCT, SET DIFFERENCE , INTERSECTION, UNION, SET گاهاً اوقات براي اجرا پرهزينه هستند. بويژه CARTESIAN PRODUCT RXS گران می باشد، زیرا نتيجه آن شامل ثبت براي هر الحاق ثبت ها از S,r می باشد. علاوه بر آن ، ويژگيهاي نتيجه شامل تمام ويژگيهاي S,R می باشد. اگر N, R ثبت و ناويژگي داشته باشد،‌S ، m ثبت و k ويژگي داشته باشد، ارتباط حاصله، n*m ثبت و j+k ويژگي دارد.

از اينرو، آن براي اجتناب از عمليات CARTESIAN PRODUCT و جانشيني با عملياتهاي معادل ديگر در طول بهينه سازي پرس و جو مهم می باشد. 3 عملياتهاي SET ديگر ، SET DIFFERENCE, INTERSECTION, UNION فقط براي ارتباط هاي اجتماع سازگار بكار مي طریقه، كه تعداد يك ويژگيهاي يكسان در حوزه هاي ويژگي يكساني دارند. راه مرسوم براي اجراي اين عمليات ها ، كاربرد تغييرات تكنيك ادغام – مرتب كردن می باشد. دو ارتباط روي ويژگيهاي يكسان مرتب مي شوند و بعد از مرتب شدن،‌پوشش تكي از طريق هر ارتباط براي ايجاد نتيجه كافي می باشد. براي مثال، ما مي توانيم ، عمليات RUS, UNION ، را با پويش و ادغام هر دو فايل مرتب شده بطور همزمان انجام دهيم و هر وقت TUPLE يكساني در هر دو ارتباط هست، فقط يكي در نتيجه ادغام شده حفظ مي گردد. براي عمليات RUS, INTERSECTION ، ما در نتيجه ادغام شده فقط آن TUPLE هايي را حفظ مي كنيم كه در هر دو ارتباط ظاهر مي شوند. تصوير (C) 3. 18 تا (C) اجراي اين عمليات ها را با مرتب كردن و ادغام كردن طراحي مي كند. اگر مرتب كردن روي ويژگيهاي كليدي منحصر بفرد صورت گيرد، عمليات ها، بيشتر ساده مي شوند. hashing مي تواند همچنين براي اجراي SET DIFFERENCE, INTERSECTION بكار رود. يك جدول تقسيم مي گردد. و جدولي ديگر براي آزمايش پارتيشن مناسب بهره گیری مي گردد. براي مثال براي اجراي RUS آغاز ثبت هاي R را HASH مي كند بعد ثبت هاي S را hash مي كند، ولي ثبت هاي duplicate را در مخزن ها درج نمي كند. براي اجراي RNS ، آغاز ثبت هاي R به فايل hash تقسيم مي گردد. بعد در حاليكه هر ثبت hash S مي گردد، براي كنترل آزمايش مي گردد اگر ثبت قابل شناسايي از R ، در مخزن يافت گردد، و اگر ثبت به فايل نتيجه اضافه گردد. براي اجراي R-S ، آغاز ثبت هاي R به مخازن فايل hash, hash مي گردد در حاليكه هر ثبت S ، hash مي گردد، اگر ثبت شناسايي در مخزن يافت گردد، آن ثبت از مخزن برداشته مي گردد.

5 . 2 18- اجراي عملياتهاي گروهي : عملگرهاي گروهي (Sum, Average, count , Max, Min) زماني براي كل جدول بكار مي طریقه، مي توانند توسط پذيرش جدول يا با بهره گیری از شاخص مناسبي محاسبه شوند. براي مثال، پرس و جوي SQL زير را در نظر بگيريد:

SELECT MAX (SALARY)

FROM EMPLOYEE:

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

شاخص براي گروههاي SUM, AVERANGE, COUNT بكار مي رود ولي فقط در صورتي كه شاخص dense باشد، در اينصورت اگر ثبت شاخص براي هر ثبت در فايل اصلي وجود داشته باشد. در اين خصوص، محاسبه مربوط براي مقادير در شاخص بكار مي رود. براي شاخص nondense تعداد واقعي ثبت ها در ارتباط با هر ثبت شاخص بايد براي محاسبه درست بكار رود. وقتي بند Group By در پرس و جو بكار مي رود، عملگر گروهي بايد بطور مجزايي براي هر گروه tuple بكار رود. از اينرو، جدول آغاز بايد به مجموعه هاي فرعي tuple تقسيم گردد، جايي كه هر پارتيشن (گروه) مقدار يكساني براي ويژگيهاي گروهي دارد. در اين مورد، محاسبه پيچيده تر می باشد. پرس و جوي زير را در نظر بگيريد:

SELECT DNO , AVG (SALARY)


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