در این تحقیق ما به تکنیکهای بکار رفته توسط DMBS برای پردازش، بهینهسازی و اجرای پرس و جوهای سطح بالا میپردازیم.
پرس و جوی بیان شده در زبان پرسو جوی سطح بالا مثل SQL ابتدا باید پویش و تجزیه . معتبر شود. پویشگر (اسکنر) علامت هر زبان، مثل لغات کلیدی SQL، اساس ویژگی، و اساس رابطه، را در متن پرس و جو شناسایی میکند، در عوض تجربه کننده، ساختار دستوری پرس و جو را برای تعیین اینکه آیا بر طبق قوانین دستوری زبان پرس و جو تدوین میشود یا خیر، چک میکند. پرس و جو باید همچنین معتبر شود، با چک کردن اینکه تمام اسامی رابطه و ویژگی معتبر هستند و اسامی معنیدار در طرح پایگاه اطلاعاتی ویژهای پرس و جو میشوند. نمونه داخلی پرس و جو ایجاد میشود، که تحت عنوان ساختار دادههای درختی بنام درخت پرس و جو میباشد. ارائه پرس و جو با استفاده از ساختار دادههای گراف بنام گراف پرس و جو نیز امکان پذیر است. DOMS باید استراتژی اجرایی برای بازیابی نتیجه پرس و جو از فایلهای پایگاه اطلاعاتی را هدایت کند. پرس و جو استراتژیهای اجرایی بسیاری دارد. و مرحله انتخاب، مورد مناسبی برای پردازش پرس وجو تحت عنوان بهینهسازی پرس و جو شناخته شده است.
تصویر 1، مراحل مختلف پردازش پرس و جوی سطح بالا را نشان میدهد. قطعه برنامه بهینهساز پرس وجو، وظیفه ایجاد طرح اجرایی را بعهده دارد و ژنراتور (تولید کننده) که ، کد را برای اجرای آن طرح ایجاد میکند. پردازنده پایگاه اطلاعاتی زمان اجرا وظیفه اجرای که پرس و جو را بعهده دارد، خواه در وضعیت کامپایل شده یا تفسیر شده جهت ایجاد نتیجه پرس و جو. اگر خطای زمان اجرا نتیجه شود، پیام خطا توسط پایگاه اطلاعاتی زمان اجرا ایجاد میشود.
اصطلاح بهینهسازی نام بی مسمایی است چون در بعضی موارد، طرح اجرایی انتخاب شده، استراتژی بهینه نمیباشد، آن فقط استراتژی کارآمد معقول برای اجرای پرس و جو است. یافتن استراتژی بهینه، ضامن صرف زمان زیادی است، بجز برای سادهترین پرس و جوها، ممکن است به اطلاعاتی روی چگونگی اجرای فایلها در فهرستهای فایلها، اطلاعاتی که ممکن است کاملاً در کاتالوگ DBMS در دسترس نباشد، نیاز باشد. از اینرو، برنامهریزی استراتژی اجرا ممکن است توصیف درستتری نسبت به بهینهسازی پرس و جو باشد.
برای زبانهای پایگاه اطلاعاتی (دریایی) جهتیابی در سطح پایینتر در سیستمهای قانونی، مثل شبکه DML شبکهای یا MOML سلسله مراتبی، برنامه نویس باید، استراتی اجرای پذیرش و جو را انتخاب کند ضمن اینکه برنامه پایگاه اطلاعاتی را مینویسد. اگر DBMS فقط زیان جهتیابی را ارائه دهد. فرصت و نیاز محدودی برای بهینهسازی پرس وجوی وسیع توسط DBMS وجود دارد، در عوض به برنامه نویس قابلیت انتخاب استراتژی اجرایی بهینه ارائه میشود. بعبارت دیگر، زبان پرس و جو در سطح بالا، مثل SQL برای DBMSهای رابطهای یا OQL برای DBMSهای مقصد، در ماهیت تفریطیتر است. چون آنچه نتایج مورد نظر پرس و جو است بغیر از شناسایی جزئیات چگونگی بدست آمدن نتیجه، را تعیین میکند. بهینهسازی پرس و جو برای پرس و جوهایی ضروی است که در زبان پرس و جوی سطح بالا تعیین می شوند. ما روی توصیف بهینهسازی پرس و جو در زمینه ROBMS تمرکز میکنیم چون بسیاری از تکنیکهایی که توصیف می کنیم برای، برای ODBMSها تطبیق یافتهاند. DBMS رابطهای باید استراتژیهای اجرای پرس و جوی دیگری را ارزیابی کند و استراتژی بهینه یا کارآمد معقولی را انتخاب کند. هر DBMS ، تعدادی الگاریتم دسترسی به پایگاه اطلاعاتی کلی دارد که علامتهای رابطهای مثل SELECT یا JOIN یا ترکیبی از این عملیات ها را اجرا میکند. تنها استراتژیهای اجرایی که میتوانند توسط الگاریتمهای دسترسی DBMS اجرا شوند و برای طراحی پایگاه اطلاعاتی فیزیکی ویژه و پرس و جوی خاص بکار روند، میتوانند توسط قطعه برنامه بهینهسازی پرس و جو در نظر گرفته شوند.
ما با بحث کلی چگونگی ترجمه پرس و جوهای SQL به پرس و جوهای جبری رابطهای و در بهینهشدن آنها کار را شروع میکنیم. بعد ما روی الگاریتمها برای اجرای عملیاتهای رابطهای در بخش 1802 بحث میکنیم. بدنبال این مطلب، بررسی از استراتژیهای بهینهسازی پرس و جو را ارائه میدهیم. دو تکنیک اصلی برای اجرای بهینهسازی پرس و جو وجود دارد. اولین تکنیک بر اساس قوانین ذهنی جهت ترتیب دادن عملیاتها در استراتژی اجرای پرس و جو میباشد. ذهن قانونی است که بخوبی در اکثر موارد عمل میکند ولی برای کار مناسب در هر مورد کنش تضمین نمیشود. قوانین عملیاتها را در درخت پرس وجو مجدداً ترتیب میدهند. دومین تکنیک شامل برآورد هزینه استراتژیهای اجرای متفاوت و انتخاب طرح اجرایی با پایینترین هزینه برآورد است. دو تکنیک معمولاً در بهینه ساز پرس و جو (باهم ترکیب میشوند) بهم ملحق میگردند. بررسی مختصری از عوامل در نظر گرفته شده در طول بهینهسازی پرس و جو در RDBMS بازرگانی ORACLL= را ارائه میدهیم. در بخش بعدی نوعی بهینهسازی پرس و جوی معنایی را ارائه میدهد که در آن محدودیتهای شناخته شده برای پرداختن به استراتژیهای اجرایی پرس و جوی کارآمد استفاده میشوند.
2 – ترجمه پرس و جوهای SQL به پرس و جوهای رابطهای:
در عمل، SQL زبان پرس وجویی است که در اکثر RDBMS های بازرگانی استفاده میشود. پرس وجوی SQL ، ابتدا به عبارت جبری رابطهای توسعه یافته معادل، نمایانگر ساختار داروهای درخت پرس و جو، ترجمه میشود و بعد بهینهسازی میشود. پرس و جوهای SQL به بلوکهای پرس و جو تجزیه میشوند، که واحدهای اساسی را تشکیل میدهند که میتوانند به عملکردهای جبری ترجمه شوند و بهینهسازی شوند. بلوک پرس و جو شامل عبارت SELECT- FROM-WHERE تکی و بندهای Groop By و HAVING است چنانچه اینها بخشی از بلوک باشند. از اینرو، پرس و جوهای تو در تو در پرس و جو بعنوان بلوکهای پرس و جوی مجزا شناسایی میشوند. چون SQL شامل عملکردهای گروهی، مثل MAX ، COUNT,SUM میباشد، این عملگرها باید در پرس و جوی جبری توسعه یافتهای شامل شوند، همانطوریکه در بخش 705 توصیف شد. پرس و جوی SQL در رابطه EMPLOEE در تصویر 705 را در نظر بگیرید:
این پرس و جو شامل، پرس و جوی فرعی تو در تو است و از اینرو به دو بلوک تجزیه میشود. بلوک درونی بدین صورت است:
و بلوک بیرونی بدین صورت می باشد:
که C نمایانگر نتیجه حاصله از بلوک درونی است. بلوک درونی به عبارت جبری رابطهای توسعه یافته زیر ترجمه شده است:
و بلوک بیرونی به عبارت زیر ترجمه شده است:
بهینهساز پرس و جو، طرح اجرایی را برای هر بلوک انتخاب میکند. ما باید اشاره کنیم به در مثال فوق، بلوک درونی نیاز به ارزیابی شدن دارد تنها زمانی که، حداکثرحقوقی که بعکار میرود که بعنوان ثابت C، توسط بلوک بیرونی استفاده میشود. ما اینرو پرس و جوی تودرتوی غیرمرتبط نامیدیم (در فصل 8). آن برای بهینهسازی پرس و جوهای تو در توی مرتبط پیچیدهتر، خیلی سختتر است، جایی که متغیر Tuple از بلوک بیرونی در بند WHERE در بلوک درونی ظاهر میشود.
1802- الگاریتم های انسانی برای اجرای عملیاتهای پرس و جو:
RDBMS شامل الگاریتمهایی برای اجرای انواع مختلف عملیاتهای رابطهای است که میتوانند در استراتژی اجرای پرس و جو نمایان شوند، این عملیاتها شامل عملیاتهای جبری بیسیک (اصلی) و توسعه یافته مورد بحث در فصل 7 ، و در بسیاری موارد، الحاقاتی از این عملیاتها میباشد. برای هر یک از این عملیات ها یا الحاقی از عملیاتها، یک یا چند الگاریتم برای اجرای عملیاتها در دسترس قرار دارند. الگاریتم ممکن است فقط برای ساختارهای ذخیره خاص مسیرهای دستیابی بکار روند، در اینصورت ، تنها در صورتی استفاده میشود که فایل های موجود در عملیات شامل این مسیرهای دستیابی هستند. در این بخش، ما به الگاریتمهای نمونه بکار رفته برای اجرای SEKECT ، JOIN و دیگر عملیاتهای رابطهای میپردازیم. ما بحث مرتب کردن خارجی را در بخش 180201 آغاز میکنیم که در قلب عملیاتهای رابطهای قرار دارد که از استراتژیهای ادغام کردن به مرتب کردن استفاده میکند. بعد ما به الگاریتمهایی برای اجرای عملیات SELECT در بخش 180202 میپردازیم، به عملیات JOIN در بخش 180203 و عملیات PRIJECT و عملیاتهای مجموعه در بخش IE 1802 و عملیاتهای گروهی و جمعی در بخش 2 .2 . 18 میپردازیم.
1. 2. 18- مرتب کردن خارجی:
مرتب کردن، یکی از الگاریتمهای اولیه بکار رفته در پردازش پرس و جو است. برای مثال، به هر وقت پرس و جوی SQL ، بعد ORDER BY را تعیین میکند، نتیجه پرس و جو باید مرتب گردد. مرتب کردن، مؤلفه کلیدی در الگاریتمهای مرتب کردن- ادغام کردن (مرتب-ادغام) بکار رفته برای Join و عملیاتهای دیگر، دور الگاریتمهای حذف کپی برای عملیات PROYECT است. ما روی بعضی از این الگاریتمها در بخش 3. 2. 18 و 4. 02 18 بحث خواهیم کرد. توجه کنید که مرتب کردن در صورتی که اجتناب میشود که شاخص مناسب برای امکان دسترسی مرتب شده به ثبتها وجود دارد.
مرتب کردن خارجی به الگاریتمهای مرتب کردن اشاره میکند که برای فایل های بزرگ ثبت های ذخیره شده روی دیسک مناسب هستند که در حافظه اصلی، مثل اکثر فایل های پایگاه اطلاعاتی تناسب نمییابد. الگاریتم مرتب کردن خارجی نمونه از استراتژی مرتب- ادغام استفاده میکند، که با مرتب کردن- فایلهای فرعی کوچک بنام اجراها در فایل اصلی شروع میشود و بعد اجراها مرتب شده ادغام میشوند، فایلهای فرعی مرتب شده بزرگتری ایجاد میشوند که بترتیب ادغام میشوند. الگاریتم ادغام –مرتب، مثل دیگر الگاریتم های پایگاه اطلاعاتی به فاضی بافر در حافظه اصلی نیاز دارد، جایی که مرتب کردن واقعی و ادغام اجراها انجام می شود. الگاریتم اصلی (سیبک) شرح داده شده در تصویر 1802 ، شامل دو مرحله است: (1) فاز یا مرحله مرتب کردن و (2) مرحله ادغام.
در مرحله مرتب کردن، اجراهای فایلی که میتواند در فضای باز موجود تناسب یابد در حافظه اصلی خوانده میشوند و با استفاده از الگاریتم مرتب کردن داخلی مرتب میشود عقب دیسک بعنوان فایلهای فرعی مرتب شده متوفی نوشته میشود. اندازه اجرا و تعداد اجراهای آغازین توسط تعداد بلوکهای فایل (b) و فضای بافر موجود (NB) بیان میشود. برای مثال اگر بلوکو اندازه قایل 1024=b بلوک باشد، بعد یا 205 اجرای آغازین در هر اندازه 5 بلوک است. از اینرو، بعد از مرحله مرتب کردن، 205 اجرای مرتب شده بعنوان فایلهای فرعی موقتی روی دیسک ذخیره میشوند. اجرای مرتب شده بعنوان فایلهای فرعی موقتی و روی دیسک ذخیره میشوند.
در مرحله ادغام شدن، اجراهای مرتب شده، در طول یک یا چند گذر ادغام میشوند. درجه ادغام شدن تعداد اجراهایی است که میتوانند با همدیگر در هر گذر ادغام شوند. در هر گذر، یک بلوک بافر، برای حفظ یک بلوک از هر اجرای ادغام شده نیاز میباشد، و یک بلوک برای تشکیل یک بلوک نتیجه ادغام لازم است . از اینرو، کوچکتر از و است و تعداد گذرها، است. در مثالها، است. لذا، 205 اجرای مرتب شده آغازین در 25 تا در پایان اولیه گذر ادغام میشود: که بعد به 12، بعد 4 بعد یک اجرا ادغام میشوند، که بدین معنی است که چهارگذر لازم میباشد. حداقل از 2، عملکرد بدترین مورد الگاریتم را ارائه میدهد که بدین قرار است:
اولین جمله، تعداد دسترسیهای بلوک برای مرحله مرتب سازی را نشان میدهد، چون هر بلوک فایل دو برابر دسترسی میشود، یکبار برای خواندن در حافظه، یکبار برای نوشتن ثبتها دیسک بعد از مرتب کردن. دومین جمله، تعداد دسترسیهای بلوک برای مرحله ادغام کردن را نشان میدهد، با فرض اینکه بدترین مورد از 2 وجود دارد. بطور کلی، ثبت وقایع در مبنای و عبارت برای تعداد دسترسیهای بلوک نوین قرار میشود:
تصویر 1802- شرح الگاریتم ادغام – مرتب کردن برای مرتب کردن خارجی:
2. 2. 18- اجرا و پیادهسازی عملیات SELECT :
تعداد Optionهایی ( انتخابها) برای اجرای عملیات SELECT وجود دارد، که بعضی به فایل دارای مسیرهای دستیابی خاص بستگی دارند و تنها برای انواع معین شرایط انتخاب بکار میرود. ما به الگاریتمهایی جهت اجرای SELECT در این بخش میپردازیم. ما از عملیاتهای زیر استفاده میکنیم که روی پایگاه اطلاعاتی رابطهای در تصویر 507 مشخص شده و بحث ما را روشن میسازد:
متد های جستجو برای انتخاب ساده:
تعدادی الگاریتم های جستجو برای انتخاب ثبتها از فایل امکانپذیر میباشند، چون ثبتهای فایل نامیده می شوند، چون ثبتهای فایل را برای جستجو و بازیابی ثبتهایی که شرایط انتخاب را برآورده میسازند، پویش میکنند. اگر الگاریتم جستجو شامل کاربرد شاخص باشد، جستحوی شاخص پویش شاخص نامیده میشد. متدهای جستجوی زیر ( 1S تا s6 ) مثالهایی از الگاریتمهای جستجو هستند که میتوانند برای اجرای عملیات انتخاب بکار روند:
s1 : جستجوی خطی (روش برنامهسازی پر قدرت): بازیابی هر ثبت در فایل، و تست اینکه آیا مقادیر ویژگی آن، شرط انتخاب را براورده میسازد یا خیر.
S2: جستجوی بنیادی (دودویی): اگر شرط انخاب شامل قیاس تساوی روی ویژگی کلیدی باشد که روی آن فایل مرتب میشود، جستجوی بنیادی، که نسبت به جستجوی خطی کارآمدتر است، میتواند بکار رود. مثال OP1 است چنانچه ssn ، ویژگی کلیدی با شاخص اولیه( یا کلید hash) باشد، برای مثال، SNN-‘123456789’ در opt، شاخص اولیه یا کلید hosh) برای بازیابی ثبت استفاده میشود، توجه کنید که این شرط، ثبت تکی را بازیابی میکند.
S4: کاربرد شاخص اولیه برای بازیابی ثبتهای متعدد: اگر شرط انتخاب شدن قیاس تساوی روی ویژگی غیر کلیدی با شاخص خدشهسازی باشد، برای مثال در ، شاخص را برای بازیابی کل ثبتها در برآورده ساختن شرط، استفاده کنید.
S6: بکارگیری شاخص ثانویه (درخت ) روی قیاس تساوی: این متد جستجو میتواند برای بازیابی ثبت تکی بکار رود چنانچه فیلد نمایهسازی (شاخصسازی) کلید باشد یا برای بازیابی ثبتهای متعدد بکار میرود چنانچه فیلد شاخصسازی کلید نباشد، این میتواند برای مقایساتی شامل یا بکار رود. در بخش 3. 4. 18، ما به چگونگی توسعه فرمولهایی میپردازیم که هزینهدستیابی این متدهای جستجو را در اصطلاحات تعداد دستیابیهای بلوک و زمان دستیابی برآورد میکند. Method S!برای هر فایلی استفاده میشود ولی تمام متدهای دیگر به داشتن مسیر دستیابی مناسب روی ویژگیبکار رفته در شرط انتخاب بستگی دارند. متدهای S4 و 6، میتوانند برای بازیابی ثبتها در دامنه معین بکار روند برای مثال پرس و جوها شامل این شرطها، پرس وجوهای دامنه نیامد به میشوند.
متدهای جستجو برای انتخاب پیچیده:
اگر شرط عملیات SELECT، شرط تقارنی و مرتبط باشد، در اینصورت اگر از چندین شرط ساده در ارتباط با ارتباط منطقی and مثل op4 فوق تشکیل شود، DBM میتواند از متدهای اضافی زیر برای اجرای عملیات استفاده کند:
S7: انتخاب تقارنی یا ارتباطی با استفاده از شاخص اختصاص: اگر ویژگی شامل شده در هر شرط ساده متکی در شرط تقارنی، مسیر دستیابی داشته باشد که به کاربرد یکی از متدهای S2 تا S6 امکان عمل دهد، از آن شرط برای بازیابی ثبتهای استفاده کنید و بعد کنترل کنید آیا هر ثبت بازیابی شد، شرایط ساده باقیمانده در شرط تقارنی را برآورده میکند یا خیر.
S8 : انتخاب تقارنی (ارتباطی) با استفاده از شاخص مرکب: اگر دو یا چند ویژگی در شرایط تساوی در شرط تفاوتی شامل شدند و شاخص مرکب در فیلدهای مرکب وجود داشته باشد، برای مثال اگر شاخص روی کلید مرکب (ESSN, PNO) در فایل Works ON برای OPS ایجاد شده باشد، می توان از شاخص مستقیماً اشاره کرد.