• بازدید : 33 views
  • بدون نظر
این فایل در ۶۶صفحه قابل ویرایش تهیه شده وشامل موارد زیر است:

در اين فصل، به تكنيك‌هاي بكار رفته توسط DMBS براي پردازش، بهينه‌سازي و اجراي پرس و جوهاي سطح بالا مي‌پردازيم.  
پرس و جوي بيان شده در زبان پرس‌و جوي سطح بالا مثل SQL ابتدا بايد پويش و تجزيه . معتبر شود. پويشگر (اسكنر) علامت هر زبان، مثل لغات كليدي SQL، اساس ويژگي، و اساس رابطه، را در متن پرس و جو شناسايي مي‌كند،‌ در عوض تجربه كننده، ساختار دستوري پرس و جو را براي تعيين اينكه آيا بر طبق قوانين دستوري زبان پرس و جو تدوين مي‌شود يا خير، چك مي‌كند. پرس و جو بايد همچنين معتبر شود، با چك كردن اينكه تمام اسامي رابطه و ويژگي معتبر هستند و اسامي معني‌دار در طرح پايگاه اطلاعاتي ويژها‌ي پرس و جو مي‌شوند. نمونه داخلي پرس و جو ايجاد مي‌شود،‌‌ كه تحت عنوان ساختار داده‌هاي درختي بنام درخت پرس و جو مي‌باشد
تصوير ۱۸۰۱، مراحل مختلف پردازش پرس و جوي سطح بالا را نشان مي‌دهد. قطعه بر نامه بهينه‌ساز پرس وجو، وظيفه ايجاد طرح اجرايي را بعهده دارد و ژنراتور (توليد كننده) كه ، كد را براي اجراي آن طرح ايجاد مي‌كند. پردازنده پايگاه اطلاعاتي زمان اجرا وظيفه اجراي كه پرس و جو را بعهده دارد،‌ خواه در وضعيت كامپايل شده يا تفسير شده جهت ايجاد نتيجه پرس و جو. اگر خطاي زمان اجرا نتيجه شود،‌ پيام خطا توسط پايگاه اطلاعاتي زمان اجرا ايجاد مي‌شود. 
اصطلاح بهينه‌سازي نام بي مسمايي است چون در بعضي موارد،‌ طرح اجرايي انتخاب شده، استراتژي بهينه نمي‌باشد، آن فقط استراتژي كارآمد معقول براي اجراي پرس و جو است. يافتن استراتژي بهينه، ضامن صرف زمان زيادي است، بجز براي ساده‌ترين پرس و جوها،‌ ممكن است به اطلاعاتي روي چگونگي اجراي فايل‌ها در فهرست‌هاي فايل‌ها، اطلاعاتي كه ممكن است كاملاً در كاتالوگ DBMS در دسترس نباشد، نياز باشد. از اينرو،‌ برنامه‌ريزي استراتژي اجرا ممكن است توصيف درست‌تري نسبت به بهينه‌سازي پرس و جو باشد. 
براي زبانهاي پايگاه اطلاعاتي (دريايي) جهت‌يابي در سطح پايينتر در سيستم‌هاي قانوني، مثل شبكه DML شبكه‌اي يا MOML سلسله مراتبي،‌ برنامه نويس بايد، استراتي اجراي پذيرش و جو را انتخاب كند ضمن اينكه برنامه پايگاه اطلاعاتي را مي‌نويسد. اگر DBMS فقط زيان جهت‌يابي را ارائه دهد. فرصت و نياز محدودي براي بهينه‌سازي پرس وجوي وسيع توسط DBMS وجود دارد، در عوض به برنامه نويس قابليت انتخاب استراتژي اجرايي بهينه ارائه مي‌شود. بعبارت ديگر، زبان پرس و جو در سطح بالا، مثل SQL  براي DBMSهاي رابطه‌اي يا OQL براي DBMS‌هاي مقصد،‌ در ماهيت تفريطي‌تر است. چون آنچه نتايج مورد نظر پرس و جو است بغير از شناسايي جزئيات چگونگي بدست آمدن نتيجه،‌ را تعيين مي‌كند. بهينه‌سازي پرس و جو براي پرس و جوهايي ضروي است كه در زبان پرس و جوي سطح بالا تعيين مي شوند. ما روي توصيف بهينه‌سازي پرس و جو در زمينه ROBMS تمركز مي‌كنيم چون بسياري از تكنيك‌هايي كه توصيف مي‌ كنيم براي، براي ODBMSها تطبيق يافته‌اند. DBMS رابطه‌اي بايد استراتژيهاي اجراي پرس و جوي ديگري را ارزيابي كند و استراتژي بهينه يا كارآمد معقولي را انتخاب كند. هر DBMS ،‌ تعدادي الگاريتم دسترسي به پايگاه اطلاعاتي كلي دارد كه علامتهاي رابطه‌اي مثل SELECT يا JOIN يا تركيبي از اين عمليات ‌ها را اجرا مي‌كند. تنها استراتژيهاي اجرايي كه مي‌توانند توسط الگاريتم‌هاي دسترسي DBMS اجرا شوند و براي طراحي پايگاه اطلاعاتي فيزيكي ويژه و پرس و جوي خاص بكار روند،‌ مي‌توانند توسط قطعه برنامه بهينه‌سازي پرس و جو در نظر گرفته شوند. 
ما در بخش ۱۸۰۱ با بحث كلي چگونگي ترجمه پرس و جوهاي SQL به پرس و جوهاي جبري رابطه‌اي و در بهينه‌شدن آنها كار را شروع مي‌كنيم. بعد ما روي الگاريتم‌ها براي اجراي عمليات‌هاي رابطه‌اي در بخش ۱۸۰۲ بحث مي‌كنيم. بدنبال اين مطلب، بررسي از استراتژيهاي بهينه‌سازي پرس و جو را ارائه مي‌دهيم. دو تكنيك اصلي براي اجراي بهينه‌‌سازي پرس و جو وجود دارد. اولين تكنيك بر اساس قوانين ذهني جهت ترتيب دادن عمليات‌ها در استراتژي اجراي پرس و جو مي‌باشد. ذهن قانوني است كه بخوبي در اكثر موارد عمل مي‌كند ولي براي كار مناسب در هر مورد كنش تضمين نمي‌شود. قوانين عمليات‌ها را در درخت پرس وجو مجدداً ترتيب مي‌دهند. دومين تكنيك شامل برآورد هزينه استراتژيهاي اجراي متفاوت و انتخاب طرح اجرايي با پايين‌ترين هزينه برآورد است. دو تكنيك معمولاً در بهينه ساز پرس و جو (باهم تركيب مي‌شوند) بهم ملحق مي‌گردند. ما روي بهينه‌سازي ذهني در بخش ۱۸۰۳ و برآورد هزينه در بخش ۱۸۰۴ بحث مي‌كنيم. بعد بررسي مختصري از عوامل در نظر گرفته شده در طول بهينه‌سازي پرس و جو در RDBMS بازرگاني ORACLL= در بخش ۱۸۰۵ را ارائه مي‌دهيم. بخش ۱۸۰۶،‌ نوعي بهينه‌سازي پرس و جوي معنايي را ارائه مي‌دهد كه در آن محدوديت‌هاي شناخته شده براي پرداختن به استراتژيهاي اجرايي پرس و جوي كارآمد استفاده مي‌شوند. 
۱۸۰۱ – ترجمه پرس و جوهاي SQL به پرس و جوهاي رابطه‌اي: 
در عمل، SQL زبان پرس وجويي است كه در اكثر RDBMS ‌هاي بازرگاني استفاده مي‌شود. پرس وجوي SQL ، ابتدا به عبارت جبري رابطه‌اي توسعه يافته معادل،‌ نمايانگر ساختار داروهاي درخت پرس و جو، ترجمه مي‌شود و بعد بهينه‌سازي مي‌شود. پرس و جوهاي SQL به بلوكهاي پرس و جو تجزيه مي‌شوند،‌ كه واحدهاي اساسي را تشكيل مي‌دهند كه مي‌توانند به عملكردهاي جبري ترجمه شوند و بهينه‌سازي شوند. بلوك پرس و جو شامل عبارت SELECT- FROM-WHERE تكي و بندهاي Groop By و HAVING است چنانچه اين‌ها بخشي از بلوك باشند. از اينرو،‌ پرس و جوهاي تو در تو در پرس و جو بعنوان بلوكهاي پرس و جوي مجزا شناسايي مي‌شوند. چون SQL شامل عملكردهاي گروهي، مثل MAX ،‌ COUNT,SUM مي‌باشد، اين عملگرها بايد در پرس و جوي جبري توسعه يافته‌اي شامل شوند، همانطوريكه در بخش ۷۰۵ توصيف شد. پرس و جوي SQL در رابطه EMPLOEE در تصوير ۷۰۵ را در نظر بگيريد: 
اين پرس و جو شامل، پرس و جوي فرعي تو در تو است و از اينرو به دو بلوك تجزيه مي‌شود. بلوك دروني بدين صورت است: 
و بلوك بيروني بدين صورت مي باشد: 
كه C نمايانگر نتيجه حاصله از بلوك دروني است. بلوك دروني به عبارت جبري رابطه‌اي توسعه يافته زير ترجمه شده است: 
و بلوك بيروني به عبارت زير  ترجمه شده است: 
بهينه‌ساز پرس و جو، طرح اجرايي را براي هر بلوك انتخاب مي‌كند. ما بايد اشاره كنيم به در مثال فوق، بلوك دروني نياز به ارزيابي شدن دارد تنها زماني كه، حداكثرحقوقي كه بعكار مي‌رود كه بعنوان ثابت C، توسط بلوك بيروني استفاده مي‌شود. ما اينرو پرس و جوي تودرتوي غيرمرتبط ناميديم (در فصل ۸). آن براي بهينه‌سازي پرس و جوهاي تو در توي مرتبط پيچيده‌تر، خيلي سخت‌تر است، جايي كه متغير Tuple از بلوك بيروني در بند WHERE در بلوك دروني ظاهر مي‌شود. 
۱۸۰۲- الگاريتم هاي انساني براي اجراي عملياتهاي پرس و جو: 
RDBMS شامل الگاريتم‌هايي براي اجراي انواع مختلف عملياتهاي رابطه‌‌اي است كه مي‌توانند در استراتژي اجراي پرس و جو نمايان شوند، اين عمليات‌ها شامل عملياتهاي جبري بيسيك (اصلي) و توسعه يافته مورد بحث در فصل ۷ ، و در بسياري موارد، الحاقاتي از اين عمليات‌ها مي‌باشد. براي هر يك از اين عمليات ها يا الحاقي از عمليات‌ها، يك يا چند الگاريتم براي اجراي عمليات‌ها در دسترس قرار دارند. الگاريتم ممكن است فقط براي ساختارهاي ذخيره خاص مسيرهاي دستيابي بكار روند، در اينصورت ،‌ تنها در صورتي استفاده مي‌شود كه فايل هاي موجود در عمليات شامل اين مسيرهاي دستيابي هستند. در اين بخش، ما به الگاريتم‌هاي نمونه بكار رفته براي اجراي SEKECT ، JOIN و ديگر عملياتهاي رابطه‌اي مي‌پردازيم. ما بحث مرتب كردن خارجي را در بخش ۱۸۰۲۰۱ آغاز مي‌كنيم كه در قلب عملياتهاي رابطه‌اي قرار دارد كه از استراتژيهاي ادغام كردن به مرتب كردن استفاده مي‌كند. بعد ما به الگاريتم‌هايي براي اجراي عمليات SELECT در بخش ۱۸۰۲۰۲ مي‌پردازيم،‌ به عمليات ‌JOIN در بخش ۱۸۰۲۰۳ و عمليات PRIJECT و عملياتهاي مجموعه در بخش IE 1802 و عمليات‌هاي گروهي و جمعي در بخش ۲ .۲ . ۱۸ مي‌پردازيم. 
۱٫ ۲٫ ۱۸- مرتب كردن خارجي: 
مرتب كردن، يكي از الگاريتم‌هاي اوليه بكار رفته در پردازش پرس و جو است. براي مثال، ‌به هر وقت پرس و جوي SQL ، بعد ORDER BY را تعيين مي‌كند، نتيجه پرس و جو بايد مرتب گردد. مرتب كردن، مؤلفه كليدي در الگاريتم‌هاي مرتب كردن- ادغام كردن (مرتب-ادغام) بكار رفته براي Join و عملياتهاي ديگر، دور الگاريتم‌هاي حذف كپي براي عمليات PROYECT است. ما روي بعضي از اين الگاريتم‌ها در بخش‌ ۳٫ ۲٫ ۱۸ و ۴٫ ۰۲ ۱۸ بحث خواهيم كرد. توجه كنيد كه مرتب كردن در صورتي كه اجتناب مي‌شود كه شاخص مناسب براي امكان دسترسي مرتب شده به ثبت‌ها وجود دارد. 
مرتب كردن خارجي به الگاريتم‌هاي مرتب كردن اشاره مي‌كند كه براي فايل هاي بزرگ ثبت ‌هاي ذخيره شده روي ديسك مناسب هستند كه در حافظه اصلي، مثل اكثر فايل هاي پايگاه اطلاعاتي تناسب نمي‌‌يابد. الگاريتم‌ مرتب كردن خارجي نمونه از استراتژي مرتب- ادغام استفاده مي‌كند، كه با مرتب كردن- فايل‌هاي فرعي كوچك بنام اجراها در فايل اصلي شروع مي‌شود و بعد اجراها مرتب شده ادغام مي‌شوند،‌‍ فايل‌هاي فرعي مرتب شده بزرگتري ايجاد مي‌شوند كه بترتيب ادغام مي‌شوند. الگاريتم ادغام –مرتب،‌ مثل ديگر الگاريتم هاي پايگاه اطلاعاتي به فاضي بافر در حافظه اصلي نياز دارد،‌ جايي كه مرتب كردن واقعي و ادغام اجراها انجام مي‌ شود. الگاريتم اصلي (سيبك) شرح داده شده در تصوير ۱۸۰۲ ، شامل دو مرحله است: (۱) فاز يا مرحله مرتب كردن و (۲) مرحله ادغام.
در مرحله مرتب كردن، اجراهاي فايلي كه مي‌تواند در فضاي باز موجود تناسب يابد در حافظه اصلي خوانده مي‌شوند و با استفاده از الگاريتم مرتب كردن داخلي مرتب مي‌شود عقب ديسك بعنوان فايل‌هاي فرعي مرتب شده متوفي نوشته مي‌شود. اندازه اجرا و تعداد اجراهاي آغازين   توسط تعداد بلوكهاي فايل (b) و فضاي بافر موجود (NB) بيان مي‌شود. براي مثال اگر   بلوكو اندازه قايل ۱۰۲۴=b  بلوك باشد،‌ بعد   يا ۲۰۵ اجراي آغازين در هر اندازه ۵ بلوك  است. از اينرو، بعد از مرحله مرتب كردن، ۲۰۵ اجراي مرتب شده بعنوان فايل‌هاي فرعي موقتي روي ديسك ذخيره مي‌شوند. اجراي مرتب شده بعنوان فايل‌هاي فرعي موقتي و روي ديسك ذخيره مي‌شوند. 

عتیقه زیرخاکی گنج