مقاله بهینه ساز پرسوجو چیست؟ در فایل ورد (word) دارای 120 صفحه می باشد و دارای تنظیمات در microsoft word می باشد و آماده پرینت یا چاپ است
فایل ورد مقاله بهینه ساز پرسوجو چیست؟ در فایل ورد (word) کاملا فرمت بندی و تنظیم شده در استاندارد دانشگاه و مراکز دولتی می باشد.
توجه : در صورت مشاهده بهم ریختگی احتمالی در متون زیر ،دلیل ان کپی کردن این مطالب از داخل فایل ورد می باشد و در فایل اصلی مقاله بهینه ساز پرسوجو چیست؟ در فایل ورد (word)،به هیچ وجه بهم ریختگی وجود ندارد
بهینه ساز پرسوجو چیست؟
بهینهساز پرسوجو از اهمیت زیادی برای پایگاه داده ارتباطی برخوردار است، مخصوصا برای اجرای دستورات پیچیده 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 نیز با خطا مواجه خواهد شد و به همین ترتیب بروزرسانی بقیه سطرها نیز با خطا مواجه میشوند به جز آخرین سطر.
برای دریافت اینجا کلیک کنید
تعداد کل پیام ها : 0