بهينه ساز پرسوجو چيست؟
بهينهساز پرسوجو از اهميت زيادي براي پايگاه داده ارتباطي برخوردار است، مخصوصا براي اجراي دستورات پيچيده SQL . يك بهينه ساز پرسوجو بهترين استراتژي بر اجراي هر پرسوجو را تعيين ميكند.
بهينهساز پرس و جو به عنوان مثال انتخاب ميكند آيا از شاخص براي يك پرسوجو مشخص استفاده كند يا نه، وكدام تكنيك الحاق هنگامي كه جداول با هم الحاق ميشوند استفاده شود.
اين تصميم تاثيري بسيار زيادي بر روي كارآيي SQL دارد، و بهينهسازي پرسوجو يك تكنولوژي كليدي بر هر كاربردي است، از سيستمهاي قابل استفاده (Operatianal system) تا انبارههاي دادهاي (Data warehause) و سيستمهاي تحليل (analysis systems) تا سيستمهاي مديريت محتويات (canternt – management) .
بهينهساز پرسوجو براي برنامههاي كاربردي و كاربران نهايي كاملا ناپيدا است . از آنجا كه برنامههاي كاربردي ممكن است هر SQL پيچيدهاي راتوليد كنند، بهينه سازها پرس و جو بايد فوقالعاده سطح بالا و قدرتمند باشد.
براي مطمئن شدن به ايجاد يك كارآيي خوب. براي مثال بهينه سازهاي دستورات SQL را تغيير شكل ميدهد، به دليل اين كه اين دستورات ميتوانند به معادلهايي تبديل شوند اما با كارآيي بالاتر.
بهينهسازهاي جستجو معمولا بر مبناي هزينه ميباشند. در يك استراتژي بهينه سازي بر مبناي هزينه، طرحهاي اجرايي چندگانهاي براي يك پرس و جو شخص توليد ميشود، و آنگاه يك هزينه تخميني براي هر طرح محاسبه ميشود. بهينه ساز پرسوجو طرحي كه داراي كمترين هزينة تخميني است را انتخاب ميكند.
بهينهسازي پرس وجو
•
بهبود كارآيي پرس وجو به صورت خودكار
•
بهبود به معني تضمين بهينه بودن نيست
مراحل فرآيند بهينه سازي
•
انتخاب يك نمايش داخلي (internal representation)
•
اعمال تغييرات لازم جهت بهبود كارآيي
•
انتخاب رويههاي دسترسي سطح پايين به دادهها
•
توليد طرحهاي اجرايي پرس وجو و تخصيص هزينه به آنها
•
انتخاب يك طرح اجرايي با كمترين هزينه
درختهاي پرسوجو
نمايش درخت عبارت جبر رابطهاي با شرايط:
1.
پيمايش ميانوندي درخت عبارت اصلي را توليد كند.
2.
عملگرهاي دوتايي موجود – 0 U,X ميباشند.
3.
عملگرهاي يكتايي موجود ميباشند.
4.
همه برگها دردرخت رابطهاي پايه اي ميباشند.
مثال 1:
مثال 2 :
تبديلات (Tranformations)
طراحي دستكاريهاي جبري و معنايي جهت دوري از انجام اعمال هزينه بري باشد.
دستكاريهاي جبري
عبارت رابطهاي E3,E2,E1 را در نظر بگيريد.
قوانين تبديل زير براي حاصلضرب نمايش داده شدهاند اما ميتوان آنها را جهت انواع ديگري از عمليات الحاق به كار برد:
1ـ قانون جابهجايي
2ـ قانون شركتپذيري
3ـ آبشار تصاوير (Cascade of projection)
4- آبشار انتخابها (Cascade of selections)
5ـ تبديل عملگر انتخاب و عملگر تصوير (project)
اگر شرط F تنها با صفات ضرب درگير باشد آنگاه
6ـ تبديل عملگرهاي انتخاب به عملگر ضرب متقابل (Cross product)
اگر شرط F تنها با صفات E1 درگير باشد آنگاه
اگر F برابر باشد با حاصل البته به شرط اين كه F1 به E1 وابسته باشد و F2 به E2 واسته باشد آنگاه
7ـ تبديل عملگر انتخاب به عملگر اجتماع (Union)
8ـ تبديل عملگر انتخاب به عملگر تفاضل (Difference)
9ـ تبديل عملگر تصوير به عملگر ضرب متقابل
10ـ تبديل عملگر تصوير به عملگر اجتماع
نكته: عملگر تصوير و عملگر تفاضل داراي خاصيت جابه جايي نيستند.
الگوريتم بهينه سازي پرسوجو
•
تجزيه كردن انتخابها به آبشار انتخابها
•
انتقال هرانتخاب به پايين ترين سطح ممكن در درخت پرسوجو
•
براي هر تصوير ـ آيا اين عملگر حذف شود يا اين كه اين عملگر به پايين ترين سطح ممكن در درخت انتقال يابد.
•
تركيب آبشار انتخابها به يك انتخاب منفرد
•
تركيب آبشار تصاوير به يك تصوير منفرد
•
انتخاب رويههاي سطح پايين
•
درخت پرسوجو تبديل شده يك سري از عمليات سطح پايين را نمايش ميدهد بهينهساز يك مجموعه زوال پيادهسازي سطح پايين از پيش تعريف شده بر هر عملگر دارد.
•
بهينهساز از اطلاعات كاتالوگ سيستم (شاخصها، كارديناليتي و غيره) جهت تعيين هزينه هر روال كانديد استفاده ميكنند.
•
اين فرآيند انتخاب مسير دسترسي ناميده ميشود.
•
توليد طرحهاي پرس و جو و انتخاب يكي از آنها
•
بهينه ساز يك مجموعه از طرحهاي پرس و جو را به وسيله تركيب روالهاي سطح پايين كانديد توليد ميكند.
•
چندين تابع اكتشافي (Heurisic) جهت محدود كردن تعداد طرحهاي پرسوجوي توليد شده استفاده ميشود يك هزينه (از نظر ميزان I/O ديسك) به هر طرح اختصاص داده ميشود.
•
كمهزينهترين طرح انتخاب ميشود.
(تخمين هزينه دقيق مشكل است زيرا بعضي از پرس و جوها به توليد نتايج مياني نياز دارند و اندازه اين نتايج وابستگي زيادي به مقادير دادهها واقعي دارد.)
روشهاي بهينهسازي پرسوجو
تبديل پرسوجو (Transformation Query)
هر گاه يك زبان دستكاري داده (DML) نظير SQL جهت ارايه يك پرسوجو به سيستم مديريت پايگاه داده رابطهاي (RDBMS) مورد استفاده قرار ميگيرد، گامهاي فرآيندي مستقلي جهت تبديل پرسوجو اصلي مورد نياز است.
هر يك از اين گامها بايد قبل از اين كه RDBMS پرسوجو را پردازش كند، انجام شود.
برچسب ها:
مديريت SQL Server