دانشجو يار
دانلود مقاله در مورد مولوی در pdf

برای دریافت پروژه اینجا کلیک کنید

 دانلود مقاله بهینه ساز پرس‌وجو چیست؟ در pdf دارای 110 صفحه می باشد و دارای تنظیمات در microsoft word می باشد و آماده پرینت یا چاپ است

فایل ورد دانلود مقاله بهینه ساز پرس‌وجو چیست؟ در pdf   کاملا فرمت بندی و تنظیم شده در استاندارد دانشگاه  و مراکز دولتی می باشد.

این پروژه توسط مرکز مرکز پروژه های دانشجویی آماده و تنظیم شده است

توجه : در صورت  مشاهده  بهم ریختگی احتمالی در متون زیر ،دلیل ان کپی کردن این مطالب از داخل فایل ورد می باشد و در فایل اصلی دانلود مقاله بهینه ساز پرس‌وجو چیست؟ در pdf ،به هیچ وجه بهم ریختگی وجود ندارد


بخشی از متن دانلود مقاله بهینه ساز پرس‌وجو چیست؟ در pdf :

بهینه ساز پرس‌وجو چیست؟
بهینه‌ساز پرس‌وجو از اهمیت زیادی برای پایگاه داده ارتباطی برخوردار است، مخصوصا برای اجرای دستورات پیچیده 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 پرس‌و‌جو را پردازش کند، انجام شود.

فرآیند تجزیه (The parsing process)
فرآیند تجزیه شامل دو عملکرد زیر است:
1 کنترل کردن پرس‌و‌جو ورودی ازنظر نحوی (Syntax)
2. شکستن پرس‌و‌جو به قسمتهای مولفه‌ای که می‌تواند به وسیله RDBMS ارزیابی شود.
قسمتهای مولفه‌ای در یک ساختارداخلی ذخیره می‌شوند این ساختار می‌تواند صورت گراف یا معمولا به صورت یک درخت پرس‌و‌جو باشد. یک درخت پرس‌و‌جو در حقیقت نمایش داخلی قسمتهای مولفه‌ای یک پرس‌و‌جو باشد که به راحتی می تواند به وسیله RDBMS دستکاری شود. بعد ازتولید این درخت مرحله فرآیند تجزیه کامل می‌شود.

فرآیند طبقه‌بندی (The standardization process)
برخلاف سیستم‌های سلسله مراتبی محض (Strictly hierarchical systerm) ، یکی از مزایای بزرگ یک ROBMS توانایی پذیرفتن پرس‌و‌جو پویای سطح بالا از کاربر است، در حالی که کاربر هیچ دانشی از بستر ساختار داده‌ای ندارد.
هدف فرآیند طبقه‌بندی تبدیل پرس‌و‌جو به یک قالب مفید برای بهینه‌سازی است. فرآیند طبقه‌بندی مجموعه‌ای از احکام (Rule) را برای دستکاری درخت پرس‌و‌جوی تولید شده به وسیله فرآیند تجزیه، به کارمی‌برد.

از آنجا که این احکام مستقل از مقادیر داده‌ها می‌باشند برای تماس اعمال می‌توانند مورد استفاده قرار گیرند. در مدت انجام این فرآیند، RDBMS درخت پرس‌و‌جوی را باز چینی می‌کند به شکلی که طبقه‌بندی بیشتری شده باشد در بسیاری از موارد، قسمتهای نحوی اضافه به طور کامل حذف می شود.
این طبقه‌بندی درخت پرس‌و‌جوی، ساختاری را تولید می‌کند که می‌تواند به وسیله بهینه‌ساز پرس‌و‌جوی RDBMS مورد استفاده قرار گیرد.
بهینه ساز پرس‌و‌جو (The Query optimizer)

هدف بهینه‌ساز پرس‌و‌جوی توید یک طرح اجرایی کارآمد برای پردازش پرس‌و‌جوی ارائه شده به وسیله درخت پرس‌و‌جوی طبقه‌بندی شده است.
بنابراین یک بهینه‌ساز می‌تواند ازنظر تئوری یک طرح اجرایی بهینه را برای هر درخت پرس‌و‌جوی پیدا کند، یک بهینه ساز واقعا یک طرح اجرایی کارآمد ومورد قبول را تولید می کند.
هنگامی که یک پرس‌و‌جوی پیچده می شود تعداد جداولی که ممکن است لازم باشد الحاق شوند افزایش می‌یابد.

بدون استفاده از تکنیک‌های هرس کردن (pruning) یا روش‌های اکتشافی (heuristical) دیگر جهت کاهش تعداد ترکیبات داده‌ایمورد نیاز، زمان مورد نیاز بهینه‌ساز پرس‌وجو جهت ارائه یک طرح اجرایی کارآمد برای یک پرس‌و‌جوی پیچیده به راحتی می‌تواند بیشتر از زمان مورد نیاز یک طرح اجرایی با کارآمد کمتر شود.
بهینه‌سازی اکتشافی (Hevristic Optimization)
بهینه‌سازی اکتشافی یک روش قانونمند است که می‌تواند یک طرح اجرایی کارا برای اجرای پرس‌و‌جوی را توید کند.
از آنجا که خروجی مرحله طبقه‌بندی یک صورت یک درخت پرس‌وجو ارائه می‌شود، هر نود از این درخت به صورت مستقیم به یک عبارت جبری رابطه‌ای نگاشت می‌شود.
عملکرد بهینه‌ساز پرس‌و‌جوی اکشانی به این صورت است که قوانین جبری رابطه‌ای هم ارز با این درخت عبارت را به کار می‌برد و این عبارات را به نمایشی کاراتر تبدیل می کند.
با استفاده از قوانین هم اند جبر رابطه‌ای که اطلاعات غیر ضروری در هنگام تبدیل این درخت حذف می‌شوند.
گامهای اجرایی در بهینه سازی اکتشافی صورت زیر می‌باشند:

1ـ شکستن انتخاب‌های ربطی (Canjuctive seleot) به انتخاب‌های آبشاری (Cacadin select)
2ـ انتقال انتخاب‌ها به پایین درخت پرس‌و‌جوی جهت کاهش تعداد تاپل‌های (Tuple) خروجی پرس‌و‌جوی
3ـ انتقال Proyect به پایین درخت پرس‌و‌جوی جهت حذف صفات غیر ضروری
4ـ ترکیب عملگر ضرب کارتزین که به دنبال یک عملگر انتخاب آمده است به یک عملگر الحاق ساده .
هنگامی که این گامها انجام شود، میزان کارآیی یک پرس‌وجو می‌تواند به وسیله باز چینی (rearranging) انتخاب‌ها (Select) و الحاق‌های (Join) باقیمانده افزایش پیدا کند.
به طوری که کمترین سربار را به سیستم تحمیل می‌کنند بهینه‌ساز اکشانی. بیش از جهت تجزیه پرس‌وجو کاری انجام نمی‌دهد.
بهینه‌سازی نحوی (Syntactical optimizer)
بهینه‌سازی نحوه به درک کلمه بداند ساختار زیربنایی پایگاه داده و توزیع داده‌های ذخیره شده در جدول، تکیه دارد. همه جداول به ترتیبی که کاربرد در پرس‌وجو مشخص کرده است الحاق می‌شوند.

بهینه‌ساز سعی در بهبود کارآیی این الحاق‌ها دارد به وسیله شاخص‌هایی (Index) که برای بازیابی داده‌ها نیز هستند.
این نوع از بهینه‌ساز هنگام دستیابی به داده‌ها در یک محیط نسبتا ایستا می‌تواند کارایی بسیار زیادی داشته باشد. بااستفاده از بهینه‌ساز نحوی هنگامی رخ می دهد که ساختار زیربنایی داده به صورت خوبی پویا داده‌ها را تغییر می دهند اغلب نیاز پیاده می‌کنند که مجدد کامپایل شوند تا کارایی دسترسی آنها به داده‌ها بیشتر شود. بهینه‌سازی بر مبنای ارزش (Cost – based optimizotion) جهت حل این قبیل مسائل مطرح می شود.

بهینه‌سازی بر مبنای هزینه (Cost – based optimization)
جهت اجرای بهینه‌سازی بر مبنای هزینه، بهینه‌ساز اطلاعات مشخصی در مورد داده‌های ذخیره شده نیاز دارد.
این اطلاعات بسیار زیاد به سیستم وابسته است و می‌تواند شامل اطلاعاتی نظیر اندازه فایل، نوع ساختار فایل ، شاخص‌های اولیه وثانویه (Primany and secondary Index) موجود، و صفات انتخابی (attribute selectivity) (درصد تابل هایی که انتظار می رود در یکانتخاب برابر بازیابی شوند).
از آنجا که هدف هر مرحله بهینه‌سازی بازیابی اطلاعات درخواست شده به صورت کالا کارا است، یک بهینه‌ساز بر مبنای ارزش از دانش خود در مورد داده‌های زیربنایی (underying data) و ساختار ذخیره‌سازی؟

به وسیله ارزیابی ترتیب‌های گوناگون از عملگرهای رابطه‌ای درخواست شده جهت تولید نتیجه، یک بهینه‌ساز بر مبنای هزینه می‌تواند یک طح اجرایی بر منای یک ترکیب از ترتیبات قابل استفاده وروش های دسترسی به داده‌ها ارائه دهد که کمترین زمان ارزیابی شده را از نظر سرباری سیستم داشته باشد.
همان طور که قبلا اشاره شد، هدف نهایی بهینه ساز بر مبنای هزینه توید یک طرح اجرایی کارا جهت بازیابی داده‌ها نیست، اما تولید یک طرح اجرایی معتدل را می‌توان به عنوان هدف نهایی آن درنظر گرفت.

برای پرس‌وجو های پیچیده، هزینه‌ای که محاسبه می‌شود برمبنای ازیابی تمام زیرمجموعه‌های ممکن و بر مبنای اطلاعات اماری که گزینندگی (Selectivity) هر عملکرد رابطه‌ای را تخمین می‌زنند، است.
به دلیل اینکه نگهداری این اطلاعات سبب به وجود آمدن سربار می شود، اغلب سیستم‌های مدیریت پایگاه داده ایناطلاعات را در جداول یا کاتالوگ‌های سیستمی نگهداری می کنند که به صورت دستی می توانند بروزرسانی شوند.
مدیر سیستم پایگاه داده باید این اطلاعات را نگهداری کند به دلیل این که بهینه‌ساز بر مبنای هزینه می تواند به دین وسیله هزینه عملکردهای مختلف را تخمین بزند.

بهینه‌ساز معنایی (Semantic optimization)
اگر چه هنوز تکنیک بهینه سازی پیاده‌سازی شده‌ای وجود ندارد اما تحقیقات قابل توجهی درمورد بهینه‌سازی معنایی در حال انجام است. عملکرد بهینه‌ساز معنایی بر مبنای این فرض است که بهینه‌ساز یک درک مقدماتی از شمای پایگاه داده واقعی دارد.
هنگامی یک پرس‌وجو ارائه می شود، بهینه‌ساز از دانش خود درمورد محدودیت‌های سیستمی جهت ساده کردن یا صرف نظر کردن از پرس‌وجو خاصی (البته اگر ضمانت شود که یک مجموعه تهی را بر می گرداند) استفاده می‌کند.

بهینه‌ساز پرس‌وجوی Microsoft SQL sevaer .
موتور پایگاه داده Microsoft SQL sevaer از بهینه‌ساز پرس‌وجو بر منای هزینه استفادهمی‌کند جهت بهینه‌سازی پرس‌وجوهایی که برای دستکاری داده‌ها با استفاده از SQL ارائه می‌شوند.

(یک پرس‌وجوی دستکاری می تواند هر پرس‌وجویی که از کلمات کلیدی Haoing, where پشتیبانی می‌کند. باشد؛ برای مثال (Update , Delete, select)
بهینه سازی در سه فاز زیر انجام می‌شود:
1 تحلیل پرس‌وجو (Query Analysis)
2. انتخاب شاخص (Index Selection)
3. انتخاب الحاق (Join Selection)
تحلیل پرس‌وجو (Query Andysis)
در فاز تحلیل پرس‌وجو، بهینه ساز SQL sevaer هر عبارت ارائه شده را ه وسیله درخت پرس‌وجو بررسی می‌کند و تشخیص می دهد که آیا می توان آن را بهینه کرد یا نه.
SQL sevaer سعی می‌کند عباراتی که یک پویش (Scan) را محدود می‌کند را بهینه کند؛ برای مثال ، عبارات الحاق و جستجو.اما،‌تمام عبارات صحیح در SQL قابل بهینه‌سازی نمی‌باشند، نظیر عبارتی که شامل عملکرد رابطه‌ای < > (نامساوی) باشد.
هنگامی که یک پرس‌وجوی رابطه‌ای شامل یک عبارتی است که قابل بهینه‌سازی نمی‌باشد، طرح اجرایی به این قسمت از پرس‌وجو با استفاده از پویش جدول دسترسی پیدا می کند.
اگر درخت پرس‌وجو شامل دستورات و عباراتی SQL باشد که قابل بهینه‌سازی است، بهینه‌ساز انتخاب شاخص را برای هر کدام از آن عبارات به کار می‌برد.
انتخاب شاخص (Index selection)

برای هر عبارت قابل بهینه سازی، بهینه ساز جداول سیستمی پایگاه داده را بررسی می‌کند برای این که ببیند آیا یک شاخص مفید برای دسترسی به داده‌ها وجود دارد یاخیر.
یا شاخص زمانی مفید تلقی می‌شود که یک مجموعه پیشونید از ستونها را شامل شود به طوری که دقیقا باس تونهای به کار رفته در پرس و جو دقیقا تطبیق پیدا کند. این تطبیق باید دقیقا وجود داشته باشد، زیر یک شاخص بر مبنای ترتیب ستونها در زمان ایجاد جدول، ساخته می‌شود.
برای یک شخاص کلاستر شده Clustered Index داده بر مبنای ترتیب ستونهای یک شاخص ذخیره می‌شوند.

تلاش جهت استفاده تنها یک ستون ثانویه از یک شاخص جهت دسترسی به داده‌ها شبیه تلاش جهت استفاده از یک دفترچه تلفن به صورت جستجو درتمام مداخل موجود با نام یکسان است. اگر یک شاخص مفید برای هر عبارت وجود داشته باشد، بهینه ساز سپس جهت تشخیص عبارات گزینندگی تلاش می کند.
درمبحث بهینه‌سازی بر مبنای هزینه، توضیح داده شده که بهینه‌ساز هزینه ارزیابی شده برای هر عبارات بر مبنای اطلاعات آ,اری محاسبه می کند.
این اطلاعات آماری برای ارزیابی عبارت گزینندگی Clauses selectivity) ) استفاده می‌شودند (درصد تاپل‌هایی که برای هر عبارت برگردانده می‌شود) Microsoft SQL server این اطلاعات آماری تنها در زمانهای زیر بروز رسانی می شوند:
در خلال ساخت ابتدایی شاخص (اگر داده در جدول وجود داشته باشد)

هنگامی که دستور UPDATE SRATIICS برای شاخص با جداول مرتبط شده اجرا می‌شود.
جهت آماده‌سازی SQL sever با اطلاعات آماری دقیق که بازتاب میزان توزیع دقیق تاپل‌ها در یک جدول دارای داده است، مدیر سیستم پایگاه داده باید اطلاعات آماری را برای شاخص‌های جداول نگهداری کند.
اگر هیچ اطلاعات آماری برای شاخص‌ها موجود نباشد، یک اکتشاف بر مبنای عملگر رابطه‌ا‌ی استفاده می‌شود برای تولید یک ارزیابی از گزینندگی .
اطلاعات در مورد گزینندگی عبارت ونوع شاخص موجود جهت محاسبه هزینه عبارت استفاده می‌شود.
SQL servaer میزان رخ دادن I/O دیسک را تخمین می‌زند، اگر شاخص برای بازیابی داده از جدول استفاده شود.
اگر این تخمین کمتر از هزینه I/O دیسک در حالت پویش تمام جدول باشد، طرح دسترسی که از این شاخص استفاده می کند ایجاد می شود.

انتخاب الحاق (Join selection)
هنگامی که انتخاب شاخص کامل می شود و همه عبارات دارای هزینه پردازش بر مبنای طرح دسترسی می‌باشند، بهینه ساز انتخاب الحاق را اجرا می‌کند.
انتخاب الحاق جهت یافتن یک ترتیب کارا برای ترکیب طرحهای دسترسی استفاده می‌شود.
برای اجرای این مورد. بهینه ساز ترتیب‌های مختلف عبارات را با هم مقایسه می‌کند و سپس طرح الحاق را انتخاب می‌کند با توجه به این که کمترین هزینه پردازشی I/O دیسک را داشته باشد.
از آنجا که تعداد ترکیبات ممکن از عبارات می تواند مانند پیچیدگی یک پرس‌وجوافزایش پیدا کند، بهینه ساز پرس‌وجو در SQL servar از تکنیک‌های هرس کردن درخت جهت کمینه کردن (minimize) سرباراین مقایسه‌ها استفاده می‌کند. هنگامی که فاز انتخاب الحاق کامل می شود، بهینه ساز پرس‌وجو در SQL Server یک طرح اجرایی پرس‌وجو بر مبنای هزینه تهیه می‌کند که از سودمندهای شاخص‌های موجود استفاده می‌کند هنگامی که آنها برای دسترسی به داده‌ها مفید هستند و این کار به این دلیل انجام می‌شود که سربار سیستم کمینه شود و کارایی بهبود یابد

تشریح روش کار بهینه ساز پرس‌وجو Microsoft SQL Server
Microsoft SQL Server دارای یک بهینه‌ساز پرس‌و‌جوبرمبنای هزینه است که یک پرس‌و‌جودریافت کرده و به سرعت بهترین روشرا جهت‌ بازیابی داده‌ها مشخص می‌کند، این روش دستیابی می‌تواند شامل ترتیب الحاق جداول یا استفاده از شاخص های گذاشته شده بر روی این جداول باشد.
با استفاده از یک بهینه ساز پرس و جو بر مبای هزینه‌ها مدیر سیستم یا کاربر نهاییی از بدست آوردن موثرترین راه کارها در ساختار دهی پرس‌و‌جوها جهت بدست آوردن کارایی بهیه ازاد می شوند اما در عوض بهینه‌ساز باید تمام ترتیب‌های ممکن در الحاق جداول و هزینه استفاده از شاخص‌های موجود بر روی جدول را بدست آورد و در نهایت طرحی را که کمترین هزینه را از لحاظ I/O صفحات دارد راانتخاب کند.

جزئیات اطلاعاتی در مورد روش دسترسی نهایی که بهینه ساز انتخاب کرده است را می‌توان با اجرای یک دستور Trans act – SQL با عنوان “set show plan on’ مشاهده نمود.
این دستور درهر مرحه نشان می دهد که بهینه‌ساز از کدام ترتیب الحاق جداول و یا کدام شاخص را که دارای کمترین هزینه جهت بازیابی داده‌ها استفاده می کند. این نمایش مراحل فوق‌العاده مفید است مخصوصا هنگامی که می‌خواهیم ببینیم آیا شاخص های تعریف شده بر روی جداول آن قدر سفید هستند که توسط بهینه‌ساز مورد استفاده قرار گیرند.

در این مقاله سعی شده است خروجی‌های Shawplop برای یک پرس وجوی خاص توضیح داده شود.
“STEP n”
این دستور در خروجی Showplan قرارمی‌گیرد برای هر پرس‌و‌جودر حقیقت n یک عدد صحیح است که می‌تواند به صورت SREP 1 شروع شود. برای بعضی از پرس‌و‌جو ها، SQL Server نمی تواند نتایج را به صورت مؤثر در یک مرحله بازیابی کند، و باید پرس‌و‌جورا به چندین گام بشکند.
برای مثال، اگر یک پرس‌و‌جوشامل عبارت Group By ، پرس‌و‌جوباید در دو کام شکسته شود: یک گام برای انتخاب سطرهای محدود شده از جدول، و گام بعدی برای گروه‌بندی آنها باید انجام شود. پرس‌و‌جوزیر یک پرس‌و‌جوی تک ـ گام را نشان می‌دهد.

Query:
SELECT au_lname, au_fname
FROM Authors
WHERE city = “Oakland”
SHOWPLAN: STEP 1
The type of query is SELECT
FROM TABLE
Authors
Nested iteration
Table Scan

نوع پرس‌و‌جوانتخاب است(در یک جدول موقت)
“The type of query is SELECT”
دستور Shawplan نشان می‌دهد که SQL Server نیاز دارد بعضی ازنتایج پرس‌و‌جورا بلافاصله در یک جدول موقت (warktable) درج کند، تا بعد از پردازش پرس‌و‌جومقادیر را از این جدول موقت انتخاب کند.

این موردبیشتر در پرس‌و‌جوکه با عبارت Group by درگیر می‌شوند اتفاق می‌افتد، به طوری که اولین نتیجه خروجی در یک جدول موقت قرار می‌گیرند، و سپس سطرهای قرار گرفته بر مبنای ستون مشخص شده در عبارت Group by گروه‌بندی می شوند. پرس‌و‌جوی زیر فهرستی از تمام شهرها و تعداد نویسندگانی که در هر شهرزندگی می‌کنند نشان می‌دهد.

طرح پرس‌و‌جوبه دوگام شکسته می شود:
اولین گام سطرها را از یک جدولموقت انتخاب می کند و دومین گام سطرهای گروه بندی شده را از جدول موقت بازیابی می‌کند:
Query:
SELECT city, total_authors = count(*)
FROM Authors
GROUP BY city
SHOWPLAN: STEP 1
The type of query is SELECT (into a worktable)

GROUP BY
Vector Aggregate
FROM TABLE
Authors
Nested iteration
Table Scan
TO TABLE
Worktable
STEP 2
The type of query is SELECT
FROM TABLE
Worktable
Nested iteration
Table Scan
نوع پرس‌و‌جو<query type> است
این عبارت نوع پرس و جو را در هر مرحله نشان می‌دهد. برای اغلب پرس‌وجوهای کاربر، نوع <query type> INSERT,UPDATE,SELECT و یا DELETE است. مثال‌های زیر خروجی های مختلف را برای پرس‌و‌جوها و دستورات گوناگون نشان می‌دهد:‌

Query 1:
CREATE TABLE Mytab (col1 int)
SHOWPLAN 1: STEP 1
The type of query is TABCREATE
Query 2: INSERT Publishers
VALUES (“9904”, “NewPubs”, “Seattle”, “WA”)
SHOWPLAN 2: STEP 1
The type of query is INSERT
The update mode is direct
Table Scan
TO TABLE
Publishers

حالت بروز رسانی به تعویق افتاده می‌شود
“The update mode is deferred”
دو روش یا دو حالت (mode) وجود دارد که SQL Server می‌تواند عملیات بروزرسانی نظیر SELECT INTO, UPDATE,INSERT,DELETE را اجرا کند. این دو روش عبارتند از : بروزرسانی به تعویق افتاده (deferred update) و بروزرسانی مستقیم (direct update) .
هنگامی که روش بروزرسانی به تعویق افتاده استفاده می شود، تغییرات برای تمامی سطرها انجام می‌شود به وسیله ایجاد رکوردهای log در log تراکنش (Tranaction log) منعکس کردن مقدار قدیم و جدید ستون ‌هایی که باید تغییر داده شود (در مورد عملیات UPDATE) یا مقادیری که باید درج و یا حذف شوند به درترتیب در مورد دستور DELETE,INSERT) .

هنگامی که همه رکوردهای log ساخته می‌شوند، آنگاه تغییرات در صفحات داده‌ای انجام خواهد شد. این روش رکوردهای log بیشتری نست به روش مستقیم (که در ادامه بررسی می شود) ایجاد می‌کند، اما در اجرای دستوراتی که جدول را به صورت آبشاری (cascade) تغییر می‌دهند سودمندی بیشتری دارد.
برای مثال، جدول را با یک ستون col 1 و یک شاخص یکتا برروی آن در نظر بگیرید، و مقادیری بین 1 تا 100 که در ستون col 1 قرار گرفته است . حال فرض کنید دستور UPDATE برای افزایش مقدار هر سطر به اندازه یک واحد اجرا می‌شود:

Query 1:
UPDATE Mytable
SET col1 = col1 + 1
SHOWPLAN 1: STEP 1
The type of query is UPDATE
The update mode is deferred
FROM TABLE
Mytable
Nested iteration
Table Scan
TO TABLE
Mytable

فرض کنید که قرار باشد از سطر اول تا سطر آخر تمام جدول بروزرسانی شود. بروزرسانی اولی سطر (که دارای مقدار 1 است) به مقدار 2 با خطا مواجه خواهد شد. چون با این کار شاخص یکتای تعریف شده بر روی جدول نقض می‌شود به دلیل این که مقدار 2 در جدول وجود دارد، همچنین بروزرسانی مقدار 2 به مقدار 3 نیز با خطا مواجه خواهد شد و به همین ترتیب بروزرسانی بقیه سطرها نیز با خطا مواجه می‌شوند به جز آخرین سطر.


برای دریافت پروژه اینجا کلیک کنید

يکشنبه هفتم 6 1395
(0) نظر
برچسب ها :
X