آموزشگاه برنامه نویسی تحلیل داده
آموزشگاه برنامه نویسی تحلیل داده

مولفه های طرح Graphical query

دوره های مرتبط با این مقاله

مولفه های طرح Graphical query

در این بخش ما از دیتابیس AdventureWorksDW برای توضیح بخش هایی از یک طرح Graphical Query استفاده می کنیم. نمونه ی DB از سایت Codeplex site قابل دانلود می باشد.

توضیحات

دو Query اصلی را در یک batch اجرا خواهیم کرد و طرح Graphical Execution را تجزیه می کنیم. Query های زیر را در SQL Server Management Studio در یک پنجره ی جدید وارد کنید:

SELECT ProductKey,ProductSubcategoryKey
FROM AdventureWorksDW..DimProduct
WHERE ProductKey< 100 ‎
SELECT ProductKey,ProductSubcategoryKey
FROM AdventureWorksDW..DimProduct
WHERE Color<>'Silver'

ابتدا اجازه بدهید طرح Estimated Query را مشاهده کنیم. این گزینه را با استفاده از CTRL + L روشن کرده و سپس query را اجرا کنید. ( نکته: تنها طرح ایجاد می شود و query اجرا نمی شود. )

آموزش SQL Server

اکنون اجازه بدهید طرح Actual Execution را با CTRL + M وارد پنجره کرده و سپس query را اجرا کنیم. ( نکته: در واقع را query را اجرا کرده و داده را گزارش می دهد.)

آموزش SQL Server

همانطور که مشاهده می کنید Actual و Estimated تقریبا یکسان هستند، به جز اینکه یک Missing Index اضافه داریم که به طرح Estimated Query اشاره دارد. بنابراین مشاهده می کنید که می توانید یک نمای خوب از طرح query بدون نیاز به اجرای query داشته باشید.

تجزیه

اکنون تمام عناصر طرح Actual Query را بررسی خواهیم کرد.

همانطور که مشاهده می کنید هر دو query در batch در طرح query نیز وجود داشتند. Query ها شماره گذاری شده اند و می توانید هزینه های نسبی را در مقایسه با هزینه ی کل batch چک کنید.

آموزش SQL Server

زیر عنوان query ی توانید query اجرا شده را مشاهده کنید.

آموزش SQL Server

همچنین برای Query 2 بهینه ساز query (query optimizer) در می یابد که query می تواند با استفاده از یک ایندکس جدید ، که توصیه ها را به رنگ سبز نشان می دهد، خیلی موثرتر اجرا شود. در صورت وجود ایندکس، این اشاره دارای تاثیر بالقوه روی هزینه ی اجرا و وضعیت SQL نیز می باشد.

آموزش SQL Server

هر باکس در طرح Query یک عملکرد فیزیکی را نشان می دهد که توسط query parser ایجاد شد و به وسیله ی موتور دیتابیس اجرا شد. باکی ها به وسیله ی نوارهایی که جریان داده را نشان می دهند، به یکدیگر متصل می شوند. آنها باید از راست به چپ خوانده شوند، بنابراین پیکان به سمت چپ میباشد. نوارهای ضخیم تر بین عملکردها نشان می دهد که ردیف های بیشتری بین اپراتورها منتقل می شوند.

آیتم های زیر در تصویر بعدی های لایت شده اند.

یک اپراتور در طرح query

یک نوار نسبتا ضخیم تر که جریان داده ی اصلی را نشان می دهد.

درضد منابع استفاده شده برای اجرای اپراتور. این مقدار بسته به هزینه ی اجرایی کل query دارد.

خلاصه ی اپراتور

اجازه بدهید نگاه دقیق تری به پراپرتی های مربوط به اپراتورهای طرح Graphical Query داشته باشیم، که می توانند در ToolTips نمایش داده شوند. شما به سادگی به آیکن یک اپراتور حرکت کرده و ماوس خود را روی آن قرار می دهید، لیستی از پراپرتی های اپراتور نمایش داده خواهد شد، مانند تصویر زیر. تصویر زیر ToolTip مربوط به عملکرد Clustered Index Scan می باشد.

لیست پراپرتی ها به قرار زیر می باشد:

  • Physical Operation : عملکرد فیزیکی اجرا شده.
  • Logical Operation: عملکرد منطقی که توسط عملکرد فیزیکی اجرا می شود.
  • Actual Number of Rows : تعداد حقیقی ردیف های گزارش داده شده توسط اپراتور.
  • Estimated I/O Cost: این مقدار مصرف I/O را نشان می دهد. به هرحال یک مقدار نسبی می باشد که می توانید مشاهده کنید که چگونه با مقادیر دیگر اپراتورها در Query Plan مقایسه می شود. هرچه عدد بزرگتر باشد، منابع بیشتری استفاده می شوند.
  • Estimated CPU Cost: این مقدار مصرف COU را نشان می دهد. این مقدار نیز یک مقدار نسبی است، بنابراین فقط اگر از اپراتورهای دیگر در طرح query بزرگتر باشد، می توانید آن را مشاهده کنید.
  • Number of Executions: تعداد دفعاتی که عملکرد برای تکمیل query اجرا می شود.
  • Estimated Number of Executions: تعداد دفعاتی که عملکرد باید برای تکمیل query اجرا شود.
  • Estimated Operator Cost: شما می توانید این درصد را تحت آیکن عملکرد مشاهده کنید. این مقدار کل هزینه های برآورد شده ی I/O و CPU میباشد، بنابراین یک مقدار نسبی می باشد.
  • Estimated Subtree Cost : هزینه ی کل این اپراتوور و اپراتورهای قبلی می باشد.
  • Estimated Number of Rows: تعداد ردیف های گزارش شده به وسیله ی query. این مقدار براساس استاتیک هاست.
  • Estimated Row Size: طول برآورد شده از ردیق های گزارش شده به وسیله ی query. این مقدار نیز براساس استاتیک هاست.
  • Actual Rebinds: این مقادیر تعداد دفعات فراخوانی روش Init() را نشان می دهند.
  • Ordered: یک مقدار Boolean می باشد که نشان می دهد ردیف ها در عملکرد مرتب می باشند.
  • NodeID: هر اپراتور در طرح Execution دارای یک NodeID مجزا می باشد. این یک مقدار ترتیبی است. اگر صفر باشند، عدد حقیقی ردیف ها و عدد برآورد شده ردیف ها قابل مقایسه می باشند.
  • Cached plan size: مقدار حافظه ای است که برای طرح query در برنامه ی حافظه ی پنهان (Procedure cache) رزرو شده است. این پراپرتی فقط در اپراتور Result نمایش داده می شود.

باید در جستجوی چه باشیم؟

در طی بهینه سازی query باید به دنبال قوی ترین منبع و عملکردهایی با مطلوبیت کمتر باشیم. آیتم های زیر تحقیق عمیق تری را ضروری می کنند: درصدهای بالاتر، نوارهای ضخیم تر، اسکن ها و غیره.

در این مثال ساده Query 2 از 97 درصد منابع استفاده کرده و Index Scan برای Query 2 صد درصد از آن بود. بنابراین براساس این طرح query باید روی این عملکرد تمرکز کنید. همچنین SQL Server اشاده ای به ایجاد یک ایندکس جدید دارد، که به میزان بالایی اجرای این query را بهبود می بخشد.

  • 2434
  •    828
  • تاریخ ارسال :   1394/07/27

دانلود PDF دانشجویان گرامی اگر این مطلب برای شما مفید بود لطفا ما را در GooglePlus محبوب کنید
رمز عبور: tahlildadeh.com یا www.tahlildadeh.com
ارسال دیدگاه نظرات کاربران
شماره موبایل دیدگاه
عنوان پست الکترونیک

ارسال

آموزشگاه برنامه نویسی تحلیل داده
آموزشگاه برنامه نویسی تحلیل داده

تمامی حقوق این سایت متعلق به آموزشگاه تحلیل داده می باشد .