آموزش Performance Optimization در SQL Server

سرفصل و محتوای دوره رفع مشکلات سرعت سیستم های بانک اطلاعاتی مبتنی بر SQL Server


طول مدت دوره: 60 ساعت

پیش نیاز دوره : دوره ی آموزش کوئری نویسی در SQL Server

مخاطبین دوره: 

مدیران سازمان ها که در زمینه ی IT تصمیم گیرنده اند 
مشاوران سازمان ها که توصیه کننده یا تصمیم سازند
مدیران فناوری اطلاعات که مسئولیت زیرساخت های حیاتی را به عهده دارند
کارشناسان بانک اطلاعاتی که راهبر و امین داده های سازمان اند و مسئول عملکرد بهینه و موثر سیستم های سازمانی شان هستند.
مدیران شبکه و زیر ساخت که مدیریت بانک اطلاعاتی سازمانی شان به ایشان تحمیل شده است 

معرفی دوره:


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

چرا کند شده است؟ 

- چون اطلاعات زیادی درون آن وارد کرده ایم.

- چون سیستم ما به خوبی در سازمان مان جای خود را باز کرده است 

- و چون روزهای اول که اطلاعاتش کم بود خیلی خوب کار می کرد 

اما به نظر می رسد ظرفیت سرور هایمان در حال پرشدن است

 حالا چه باید بکنیم؟ دو راه داریم:

راه حل اول سرمایه گذاری و خرید سخت افزار است تا از سرمایه نرم افزاری مان و انرژی صرف شده برای راه اندازی و جا اندازی آن حفاظت کنیم؛ و همچنین از داده های سازمان مان که خیلی هم گرانقیمت است مراقبت کنیم.

-- > خبر خوب اینکه تا مدتی مشکلاتمان حل می شود. جای خوشبختی است 

--> و خبر بد اینکه متاسفانه این راه حل بسیار گران است و نیازمند صرف مبالغ هنگفت و تامین بودجه

--> خبر بدتر اینکه متاسفانه این راه کار نوعی مسکّن است یا به اصطلاح معلمان مدیریت IT یک work around است و دوامش زیاد نیست.

معنایش این است که مدتی که بگذرد دوباره سر و کله ی مشکلات کندی پیدا می شود! متاسفم

راه حل دوم پایش پایگاه داده مان و سپس انجام تنظیمات هوشمندانه و آگاهانه بر اساس توصیه هایی است که همکاران شما در فراتر از دانش با شما به اشتراک می گذارند. زیرا مدرسانِ این دوره، تجربه هایی مشابه در سازمان های دیگر داشته اند؛ و به نظر می رسد که این سرمایه گذاری موثرتر و پایدارتر است. 

-->خبر خوب این است که این راه حل این فرصت را به شما و تیمتان می دهد تا در کنار همکاران سازمانهای دیگر بنشینید و حول محور سرفصل های دوره برای مشکلات مشابهی که برخورد کرده ایم (یا قرار است برخورد کنید) راه کارهای ارائه شده را به اشتراک گذاریم و بیاموزیم و در سازمان مان اجرا کنیم و نتیجه بگیریم. 

ما در این دوره می آموزیم که بهبود عملکرد بانک اطلاعاتی یک فرایند گام به گام است و طبیعتا طعم لذت بخش بهبود مستمر عملکرد سیستم های سازمان مان را نیز به همراه دارد. 

این دوره شامل سرفصل های زیر است تا از پراکندگی دوری شود اما شکل اجرای کلاس عموما پویا و دو طرفه است و هدف گذاری دوره این است که با شما چگونه مساله حل کردن را در حوزه ی مدیریت performance بانک اطلاعاتی تجربه کنیم.

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

سرفصل دوره:

بهبود Performance یک فرایند است. 

       - آنالیز هزینه و فایده (Cost and Benefit Analysis)

       -  "خوب به اندازه ی کافی" یعنی چقدر خوب؟

       - قاتلان Performance کدامند؟

        -  پس کی باید سخت افزار بخریم؟       

 کمی از داخل SQL Server بدانیم

       - آناتومی جدول چیست؟  

       (data type, computed column, GUID, sparse column, xml, timestamp)

       - انواع ایندکس کدام است؟ 

       (clustered, non-clustered, column store, …)

       - دقیقا view چه فایده ای دارد؟

       - ایندکس در view چه فایده دارد ؟ آیا قابلیت جالب materialized view در SQL Server هم وجود دارد؟

       - کدام منطقی تر است؟ دسترسی به داده با view یا با stored procedure؟

  آنالیز حافظه سرور بانک اطلاعاتی

       - کانتر های مهم Memory که باید مورد بررسی قرار دهیم کدامند

       - درمان درد سروری که حافظه گلوگاهش شده است چیست؟

آنالیز دیسک سرور بانک اطلاعاتی

       - کانتر های مهم Disk که باید مورد بررسی قرار دهیم کدامند

       - درمان درد سروری که دیسک گلوگاهش شده است چیست؟

آنالیز موتور بانک اطلاعاتی SQL Server

       - بررسی کانتر هایی که حال عمومی موتور بانک اطلاعاتی SQL Server را پایش می کنند

       - تعریف خط شاخص در یک پایش حرفه ای و کارامد

       -  آنالیز کارایی Query

       - استفاده از Profiler

       -  آیا Extended Event به دوران پروفایلر پایان می دهد؟

       - بررسی Query های پر هزینه

ایندکس ...

       - معماری ایندکس

       - طراحی ایندکس

       -تکنیک ها، توصیه ها، امکانات نوین 

- Column store index

       -  ایندکسِ (Spatial / Full-text / XML)

       - امکاناتی که درباره ی ایندکس در دسترس هستند

Data Engine و Database Engine Tuning Advisor

آشنایی با Query Store    

مشکلات Key Lookup و حل آنها

آمار ... (Statistics)

از هم گسیختگی ایندکس ( Index Fragmentation )

       -کدام یک از ابزارهای بهبود وضعیت Index را می شناسید؟

       - Maintenance Plan component for index fragmentation

       - بررسی یک اسکریپت خوش دست همراه با توصیه های مایکروسافت در این موضوع

       -  آیا ابزارهای دیگری را هم میشناسید؟

مفهوم Execution Plan دقیقا چیست؟

       - بررسی جزئیات با کمک Execution Plan

       -  بررسی منفعت ها و مضرات Cache کردن

       - Plan reuse و Parameter Sniffing

کامپایل Query

      مگر T-SQL هم کامپایل می شود؟

بررسی کامپایل مجدد (Re Compile)

المان های یک Query که باید مراقبشان باشیم

- بررسی المان های بد

- کد نویسی در جهت استفاده از Index

    - بررسی نحوه ی Join نویسی در جهت استفاده از Index

 - بررسی نحوه ی طراحی برای مصرف کمتر منابع سرور

قفل و بست یک بانک اطلاعاتی

      - بررسی مفهوم بلوکه شدن

   مفهوم lock و latch

         +رابطه ایندکس با قفل بانک

             + آشنایی با dead lock و راهکارهای پیشنهادی

        + درمان های Dead lock کدامند؟

آیا cursor واقعا بد است؟ یا موارد مصرف خوبی هم دارد؟

مقدمه ای بر تکنولوژی In Memory OLTP در SQL Server

      - آیا لازم است همه چیز In Memory شود؟ یا راه حل ترکیبی هم مجاز است؟

      - آماده سازی یک بانک اطلاعاتی عملیاتی برای مهاجرت گام به گام

      - محدودیت ها نسبت به ساختار بالغ Disk based

      - مروری بر هسته ی اصلی تکنولوژی - Native Compilation

      - کلید سری در رسیدن به کارایی 40 برابری

      - آناتومی جدول چیست؟ 

      -  بررسی یک مثال