بهینه ساز پایگاه داده قسمت پنجم (ويژگي هاي جديد و بهبود يافته)

بهینه ساز پایگاه داده قسمت پنجم (ويژگي هاي جديد و بهبود يافته)

عمق و انعطاف پذیری sql سرور اکسپرس می بایست شما را متقاعد کرده باشد که فراگیری sql سرور اکسپرس نسبتاً زمان بر است .خبر خوشایند آن است که پیاده سازی آن ،آسان و سریع است .نیازی به دانستن همه چیز نیست .


ویژگی های جدید و بهبود یافته
عمق و انعطاف پذیری sql سرور اکسپرس می بایست شما را متقاعد کرده باشد که فراگیری sql سرور اکسپرس نسبتاً زمان بر است .خبر خوشایند آن است که پیاده سازی آن ،آسان و سریع است .نیازی به دانستن همه چیز نیست .
ویژگی ها و موارد پیشرفته ذیل ،گزینه هایی هستند که احتمالا بیش تر در اجزایی که اغلب به کار خواهید برد ،خواهید دید:
* دستیابی به داده ها : sql سرور اکسپرس از همان "provider " های سرور 2005 پشتیبانی می کند ،این بدین معناست که برنامه های sql سرور اکسپرس ،با سایر نگارش های sqlسرور اکسپرس قابل استفاده خواهند بود .
*امنیت :پروتکل های کار در شبکه sql server به طور پیش فرض غیر فعال هستند برای مدیریت هر دو آنها می توانید از configuration manager استفاده کنید .
*تکثیر:به کاربردن این ویژگی، امکان می دهد تا چندین نسخه از یک بانک اطلاعاتی را در سایت های مختلف داشته باشید.
Sqlسرور اکسپرس از مشترکین تکثیر پشتیبانی می کند. با استفاده از (Replication management object) یا همان RMO یا windows sync manager می توانید عملیات مشترکین را زمانبندی کنید .
SSB (SQL SERVER BROKER) * : فناوری کاملاً جدیدی به نام SERVICE BROKER توسط SQL سرور اکسپرس ارائه شده است .نقش این فناوری جدید ،کمک به ساخت برنامه های کاربردی امن ،قابل اطمینان و قابل انتقال به سایت های مختلف است .حجم کارها در بانک اطلاعاتی عموماً در این برنامه ها بسیار زیاد بوده و به صورت توزیع شده هستند .این ویژگی ها تنها با نگارش های SQL سرور 2005 قابل استفاده است .
نمونه کار بران : این ویژگی به شما امکان می دهد تا بانک های اطلاعاتی خود همچون فایل ها برخورد کند .به عنوان مثال ،هر بانک اطلاعاتی محلی را می توانید انتقال دهید ،کپی نمایید و یا از طریق پست الکترونیک ارسال کنید .

"hint " هاي بهينه ساز

موضوعات T-SQL پیشرفته

T-SQL نیز همچون سایر زبان های برنامه سازی دارای ویژگی های متنوع و کامل ،ویژگی های دیگری علاوه بر مواردی که بتوان در یک مقدمه کوتاه بررسی نمود دارد. در این فصل به برخی از ویژگی های پیشرفته T-SQL را معرفی خواهیم کرد دلیل انتخاب این ویژگی در T-SQL آن است که می توانند بسیار قدرتمند و مفید باشند،اما این ویژگی ها به یقین کل مجموعه ویژگی های این زبان را پوشش نمی دهد .

"Hint" های بهینه ساز

وقتی ویویی را در sql سرور اکسپرس ذخیره می کنید ،" نقشه اجرای " آن توسط سرور ذخیره می شود .این نقشه اجرا ،فهرست مراحلی است که sql server اکسپرس برای نمایش نتایج طی خواهد کرد. این نقشه بر اساس اطلاعات آماری که سرور درباره مواردی چون تعداد سطر های دو جدول ،تعداد شاخص های منحصر به فرد و غیره ذخیره می کند ، تهیه می شود .sql server اکسپرس بر اساس این اطلاعات درباره سریعترین استراتژی تصمیم گیری نموده و از همان استراتژی برای " نقشه اجرا " استفاده می کند .

این سیستم بهینه سازی بر اساس احتمال بنا شده است .sql سرور اکسپرس یکایک پرس وجوهای برای تصمیم گیری درباره کارآمد ترین استراتژی اجرا نمی کند.بلکه در عوض بر بهترین "حدس" اتکا می کند. این حدس گاهی اوقات ممکن است اشتباه باشد. در این گونه شرایط می توانید استفاده از "hint " های بهینه ساز برای سرور مشخص کنید که فایل به انجام مراحل مطرح در اجرا هستید .

در قسمت های زیر به بررسی "hint " های موجود و اثرات آن خواهیم پرداخت .البته ،از این تکنیک تنها در شرایطی استفاده کنید که کاربرد "hint " ها موجب بهبود سرعت پرس و جو ها می شود .

بهینه ساز از کاربرد سه نوع از " hint " ها پشتیبانی می کند :

*تذکرات مربوط به جدول

*تذکرات مربوط به join ها

*تذکرات مربوط به پرس و جو ها

هر یک موارد مذکور در قسمت های زیر بررسی شده اند .برای آشنایی با فرامین sql ای که می توان از این "hint " ها در آنها استفاده نمود.

"hint " های مربوط به جدول

"hint " های مربوط به جداول برای بهینه ساز مشخص می کنند که چگونه داده ها را از یک جدول بازیابی کند .بیشترین این "hint " ها در واقع روش هایی برای تنظیم رفتار قفل کردن جدول به شمار می آیند .

در کل "hint " تذکر،در این خصوص وجود دارد :

*INDEX مشخص می کند که از کدام شاخص استفاده شود چنانچه جدول دارای شاخص کلاستری باشد ، INDEX0 موجب استفاده از آن شاخص می شود. اگر جدول فاقد شاخص کلاستری باشد ،INDEX0 موجب اسکن شدن کل جدول می شود .INDEXn یاINDEXnameموجب استفاده از شاخص متناظر با شماره یا نام مورد نظر می شود .

*FAST FIRST ROW به جای کل سطرها ،موجب بازیابی سریع نخستین سطر از مجموعه نتایج می شود .

*HOLD LOCK سبب حفظ قفل ها تا پایان ترا کنش جاری ،به جای آزاد سازی آنها به محض پایان کار SQL سرور اکسپرس با یک جدول خاص می شود .

*NOW LOCK سبب می شود تا سطرها ی خوانده شده تا قفل نشود ،و این امر ممکن است منجر به خواندن غلط داده ها یی شود که تغییرات آنها در حال لغو شدن است .

*PAGLOCK موجب استفاده از قفل های مشترک صفحات به جای قفل های مشترک سطر ها یا قفل های مشترک جداول می شود .

*READ COMMITTED موجب استفاده از قفل های مشترک در حین خواندن داده ها می شود گزینه READ COMMITED SNAPSHOTموجب نادیده انگاشته شدن این تذکر می شود .

*READ COMMITTED LOCK ،صرفنظر از گزینه READ –COMMITTED-SNAPSHOT موجب استفاده از قفل های مشترک در حین خواندن داده ها می شود .

*READ PAST مشخص می کند که سطر های قفل شده هنگام اسکن جدول نادیده انگاشته شوند .

*READ UN COMMITTEDهمچون UN LOCK است.

*REAPEATABLEREAD موجب استفاده از قفل های انحصاری هنگام خواندن داده ها می شود .

*ROW LOCK مشخص می کند که به جای قفل های صفحه ،از قفل رکورد ها استفاده شود .

*SERIALIZABLEهمچون HOLD LOCK است .

*TAB LOCK مشخص می کند که قفل جداول استفاده شود .

*UPD LOCK مشخص می کند که به جای قفل های مشترک از قفل های به روز رسانی استفاده شود .

*X LOCK مشخص می کند که از قفل های انحصاری استفاده شود و این قفل ها تا پایان ترا کنش حفظ شوند.

"hint " های مربوط به join ها

از "hint" های مربوط به joinها برای استفاده از یک استراتژی خاص به هنگام goin کردن جداول استفاده می شود چهار نوع از این "hint " ها وجود دارد:

*loop مشخص می کند که از یک loop joinاستفاده می شود.

*HASH مشخص می کند که از یکhash join استفاده شود.

*MERGEمشخص می کند که از یک hash joinاستفاده شود.

*REMOTE مشخص می کند که هنگام join شدن جداول دو سرور مختلف ،عمل join به جای سرور محلی ،توسط سرور راه دور انجام شود .

از بین "hint " های فوق الذکر،امتحان مفید واقع شدن REMOTE بیش از "hint" های دیگر است .اگر یک جدول راه دور بزرگ را با یک جدول محلی کوچک join می کنید استفاده از این "hint" موجب افزایش قابل توجه کارآیی می شود.

"Hint" های مربوط به پرس و جو ها

"Hint" ها ی پرس و جو ها به کل پرس و جو اعمال می شوند.15 مورد از این "hint" ها وجود دارد:

●HASH GROP مشخص می کند که عمل جمع بندی و خلاصه سازی در عبارت GROP BYیا COMPUTE از طریق " hashing" انجام شود .

●ORDER GROP مشخص می کند که عمل جمع بندی و خلاصه سازی در عبارت GROP BYیا COMPUTE از طریق مرتب سازی انجام شود.

●MERGE UNION مشخص می کند که عمل "union " از طریق " ترکیب کردن " انجام شود.

●HASH UNION مشخص می کند که عمل "union " از طریق " hashing" انجام شود.

●FAST UNION مشخص می کند که پرس و جو باید برای باز گرداندن n سطر نخست بهینه شود .

●FORS ORDER سبب حفظ و نگهداری ترتیب JOIN پرس و جو در فرایند بهینه سازی می شود .

●MAX DOP n حداکثر تعداد پرونده ها را برای اجرای یک پرس و جوی موازی مشخص می کند .

●OPTIMIZE FOR (@ variable name = literal constant ) مشخص می کند که هنگام بهینه سازی پرس و جو از چه مقداری برای یک تغییر محلی استفاده شود .

●RECOM PILE از کش کردن نقشه های اجرا توسط SQL سرور اکسپرس جلو گیری می کند .

●ROBUTS PLAN موجب استفاده از نقشه اجرایی برای پرس و جو می شود که می تواند با بزرگترین سطر ممکن کار کند .

●KEEP PLAN از تولید یک نقشه اجرایی جدید هنگام افزودن داده های جدید جلو گیری می کند .

●KEEP FIXED PLAN از تولید نقشه اجرای جدید به دلیل تغییر در شاخص یا تغییرات آماری جلو گیری می کند.

●EXPAND VIEW مشخص می کند که ویوهای دارای شاخص ،با تعاریف مربوطه خود جایگزین شوند .

●MAXRECURSION n حداکثر تعداد دفعات " بازگشت " مجاز را برای اجرای پرس و جو مشخص می کند .

"hint " های مربوط به و یو ها

"hint " های مربوط به و یو ها ، چگونگی بر خورد با و یو های شاخص دار را برای بهینه سازی مشخص می کنند . دو نوع از این "hint " ها وجود دارد :

● INDEX مشخص می کند که از کدام شاخص استفاده شود .INDEX 0موجب اسکن شدن شاخص کلاستری می شود INDEX n یا INDEX NAMEموجب استفاده از شاخص متناظر با شماره یا نام مشخص شده می شود .

●NDEXPAND برای بهینه ساز مشخص می کند که به جای باز کردن و بهینه سازی اجزای ویو ،با آن همچون یک جدول دارای شاخص کلاستری بر خورد کند .

خلاصه

در این فصل با برخی از مهارت های پیشرفته تر جهت استفاده از T-SQL آشنا شدید :

● کار با ترا کنش ها

● استفاده از توابع ROWSET

● استفاده از CUR SOR ها

● بازیابی داده های جانبی

● استفاده از "hint " های بهینه ساز

ما در این فصل به استفاده از " hint " های بهینه ساز پرداختیم .

هادی یدالهی

هادی یدالهی

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


0 نظر درباره‌ی این پست نوشته شده است.

ثبت نظر