بهینهساز پرسوجو از اهمیت زیادی برای پایگاه داده ارتباطی برخوردار است، مخصوصا برای اجرای دستورات پیچیده SQL . یک بهینه ساز پرسوجو بهترین استراتژی بر اجرای هر پرسوجو را تعیین میکند.
بهینهساز پرس و جو به عنوان مثال انتخاب میکند آیا از شاخص برای یک پرسوجو مشخص استفاده کند یا نه، وکدام تکنیک الحاق هنگامی که جداول با هم الحاق میشوند استفاده شود.
این تصمیم تاثیری بسیار زیادی بر روی کارآیی SQL دارد، و بهینهسازی پرسوجو یک تکنولوژی کلیدی بر هر کاربردی است، از سیستمهای قابل استفاده (Operatianal system) تا انبارههای دادهای (Data warehause) و سیستمهای تحلیل (analysis systems) تا سیستمهای مدیریت محتویات (canternt – management) .
بهینهساز پرسوجو برای برنامههای کاربردی و کاربران نهایی کاملا ناپیدا است . از آنجا که برنامههای کاربردی ممکن است هر SQL پیچیدهای راتولید کنند، بهینه سازها پرس و جو باید فوقالعاده سطح بالا و قدرتمند باشد.
برای مطمئن شدن به ایجاد یک کارآیی خوب. برای مثال بهینه سازهای دستورات SQL را تغییر شکل میدهد، به دلیل این که این دستورات میتوانند به معادلهایی تبدیل شوند اما با کارآیی بالاتر.
بهینهسازهای جستجو معمولا بر مبنای هزینه میباشند. در یک استراتژی بهینه سازی بر مبنای هزینه، طرحهای اجرایی چندگانهای برای یک پرس و جو شخص تولید میشود، و آنگاه یک هزینه تخمینی برای هر طرح محاسبه میشود. بهینه ساز پرسوجو طرحی که دارای کمترین هزینه تخمینی است را انتخاب میکند.
بهینهسازی پرس وجو
بهبود کارآیی پرس وجو به صورت خودکار
بهبود به معنی تضمین بهینه بودن نیست
مراحل فرآیند بهینه سازی
انتخاب یک نمایش داخلی (internal representation)
اعمال تغییرات لازم جهت بهبود کارآیی
انتخاب رویههای دسترسی سطح پایین به دادهها
تولید طرحهای اجرایی پرس وجو و تخصیص هزینه به آنها
انتخاب یک طرح اجرایی با کمترین هزینه
درختهای پرسوجو
نمایش درخت عبارت جبر رابطهای با شرایط:
پیمایش میانوندی درخت عبارت اصلی را تولید کند.
عملگرهای دوتایی موجود – 0 U,X میباشند.
عملگرهای یکتایی موجود میباشند.
همه برگها دردرخت رابطهای پایه ای میباشند.
مثال 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 دیسک) به هر طرح اختصاص داده میشود.
کمهزینهترین طرح انتخاب میشود.
(تخمین هزینه دقیق مشکل است زیرا بعضی از پرس و جوها به تولید نتایج میانی نیاز دارند و اندازه این نتایج وابستگی زیادی به مقادیر دادهها واقعی دارد.)