رویداد به پایان رسیده است!
دوره آموزشی Performance Tuning در SQL Server در تاریخ دوشنبه ۱۴ خرداد به پایان رسیده است. (جزئیات بیشتر)

دوره آموزشی Performance Tuning در SQL Server

شروع:
دوشنبه ۲۵ دی ۹۶ ۱۷:۳۰
پایان:
دوشنبه ۱۴ خرداد ۹۷ ۲۰:۳۰
دوره آموزشی Performance Tuning در SQL Server
برگزارکننده‌ی رویداد
مهلت ثبت‌نام برای این رویداد به پایان رسیده است.

توضیحات بیشتر


 آیا می‌دانید!؟
هر چقدر با جزئیات و ریزه کاری‌های مربوط به SQL Server آشنا شوید رفتارتان با آن عوض می‌شود و به خوبی می‌توانید از عهده مشکلات مربوط به کارایی بانک‌های اطلاعاتی برآید.

لطفا فقط نسخه سخت افزاری نپیچید!!
بیشتر وقت‌ها برای انجام پروژه‌های مختلف که مراجعه می‌کنیم، متاسفانه شاهد این هستیم که کارفرما تقریبا یک هیولا در اختیار دارد ولی بازهم سرعت بانک اطلاعاتی پایین است. وقتی سوال می‌کنیم چرا این سرور قدرتمند را خرید کرده‌اید، پاسخ میدهند برای افزایش سرعت اولین کاری که کردیم افزایش قدرت سخت افزار بود!! دوستان همیشه اشاره کردیم، سخف افزار ۴۰ درصد قضیه است و مباحث خود SQL Server و کدهای برنامه نویسی شما ۶۰ درصد قضیه، پس تا می‌توانید سمت نرم افزار را بالا ببرید و نسخه های چند صد میلیونی سخت افزاری نپیچید!

آمار و ارقام استخدام چه می‌گوید؟
آيا مي دانيد يکي از پولسازترين شغل ها هم اکنون در ايران بالا بردن سرعت بانک اطلاعاتي SQL Server شرکت ها و سازمان ها مي باشد؟ قبل از اينکه رقباي شما زياد شوند خود را متخصص Performance & Tuning کنيد.

سرفصل‌های دوره آموزشی Performance Tuning در SQL Server


۱- آشنایی اولیه با معماری SQL Server

۱- آشنایی با مفهوم DMV و DMF در SQL Server
۲- بررسی مفهوم Database
۳- بررسی مفهوم Data File و Log File
۴- بررسی معماری Log File
۵- بررسی معماری منطقی Log File
۶- برررسی معماری فیزیکی Log File
۷- بررسی نحوه اعمال تنظیمات مناسب برای Data File و Log File
۸- بررسی تنظیمات مفید سیستم عامل برای فایل‌های بانک اطلاعاتی
۹- بررسی تنظیمات Database Instant File Initialization
۱۰- آشنایی با Buffer Pool در SQL Server
۱۱- بررسی مفهوم Checkpoint
۱۲- چه کارهایی در هنگام Checkpoint رخ می‌دهد؟
۱۳- بررسی پروتکل TDS و نحوه استفاده SQL Server از آن
۱۴- بررسی اولیه مفهوم Lock
۱۵- بررسی اولیه مفهوم Latch
۱۶- آشنایی با DMVها و DMFهای مهم و پرکابرد در این حوزه
۱۷- معرفی ابزارهایی کاربردی برای مشاهده محتوای Pageها

Log File و اعمال تنظیمات مناسب برای آن
همه ما می‌دانیم که بانک‌های اطلاعاتی در SQL Serverحداقل از یک Data File و یک Log File تشکیل شده است. چنانچه ما معماری ذخیره‌سازی داده در هر کدام از این فایل‌ها را بدانیم رفتارمان نسبت به این فایل‌ها عوض می‌شود.
یکی از مواردی که من همیشه در بانک‌های اطلاعاتی بزرگ تنظیمات مناسبی بر روی آن اعمال می‌کنم. Log File است. نوع دسترسی در این فایل به صورت Sequential (دسترسی ترتیبی) می‌باشد و برای افزایش کارایی بانک اطلاعاتی باید تنظیمات مناسبی بر روی آن اعمال نمود. ما در این دوره با نحوه اعمال تنظیمات مناسب برای این فایل‌ها آشنا می‌شویم

 

 

۲-آشنایی با Pageها و انواع آن در SQL Server

۱- بررسی مفهوم Page در Data File
۲- بررسی معماری ذخیره‌سازی داده‌ها در Page
۳- بررسی انواع Pageها و کاربرد هر کدام از آنها
۴- بررسی دقیق Allocation Page
۵- بررسی مفهوم Row-Overflow
۶- بررسی مفهوم LOB و نحوه ذخیره‌سازی آن در SQL Server
۷- بررسی تکنیک‌های استفاده مناسب از Data Typeها
۸- Select * و مشکلات آن
۹- بررسی مفهوم Extent
۱۰- معرفی انواع Extentها در SQL Server
۱۱- نحوه ویرایش رکوردها در SQL Server
۱۲- Alter کردن جداول در SQL Server

چرا باید جزئیات نحوه ذخیره سازی داده‌ها در جداول را تا به این حد یاد بگیرم؟
این سوالی بود که در یکی از کورس‌های Performance Tuning در SQL Server از من پرسیده شده بود. جوابی که من به این سوال می‌دهم این هر چقدر با جزئیات و ریزه کاری‌های مربوط به SQL Server آشنا شوید رفتارتان با آن عوض می‌شود و به خوبی می‌توانید از عهده مشکلات مربوط به کارایی بانک‌های اطلاعاتی برآید.

 

۳-بررسی File Groupها

۱- بررسی مفهوم File Group
۲- بررسی کاربردهای File Group
۳- بررسی مزایای استفاده از File Group
۴- بررسی انواع File Groupها
۵- بررسی نحوه تعریف اصولی File Groupها
۶- بررسی نحوه رشد Data Fileهای مربوط به File Group
۷- بررسی نحوه قرار دادن جداول در File Groupها
۸- بررسی نحوه قرار دادن ایندکس در یک File Group
۹- بررسی نحوه ذخیره و بازیابی BLOBها در File Groupهای جداگانه
۱۰- بررسی فایل‌گروه‌های Filestream
۱۱- بررسی نحوه استفاده از فایل گروه‌های Filestream در جهت افزایش کارایی بانک اطلاعاتی
۱۲- بررسی نحوه ایجاد و مدیریت فایل گروه‌های Filestream
۱۳- بررسی نحوه پیکربندی SQL Server برای کار با Filestream
۱۴- بررسی نحوه کار با Filestream در .NET
۱۵- بررسی جداول FileTable
۱۶- بررسی نحوه استفاده از FileTable در .NET

نحوه ارتباط دات نت با Filestream و File Table
ما در این دوره شما را با نحوه استفاده از تکنولوژی Filestream و همچنین File Table در دات نت آشنا می‌کنیم. از این سبک کد نویسی خودم به شخص در اغلب پروژه‌ها استفاده کرده‌ام و کارایی بانک اطلاعاتی را افزایش داده‌ام.

 

۴-معرفی Execution Plan و نحوه کار با آن

۱- بررسی مفهوم Logical Read و Physical Read
۲- بررسی دستور Set Statistics IO
۳- بررسی دستور Set Statistics Time
۴- بررسی ترتیب اجرای منطقی و فیزیکی دستورات SQL Server
۵- بررسی مفهوم Execution Plan و انواع آن
۶- بررسی نحوه Compare کردن Execution Planها در SQL Server
۷- بررسی نحوه ذخیره و بازیابی Execution Plan

معرفی دو ابزار حرفه‌ای برای آنالیز Execution Plan

ما در SSMS می‌توانیم Execution Planها را مشاهده و آنالیز کنیم، اما SSMS امکانات محدودی برای آنالیز Plan دارد ما در این دوره شما را با دو ابزار خیلی قوی برای آنالیز Execution Plan آشنا خواهیم کرد.

 

 

 

۵- بررسی ایندکس‌ و معماری آنها

۱- بررسی Heap Table
۲- برررسی معماری جداول Heap در SQL Server
۳- آشنایی با Forwarding Pointer در Heap Table
۴- بررسی چند سناریو کاربردی برای استفاده از Heap Table
۵- آشنایی با Clustered Index
۶- بررسی معماری Clustered Index
۷- بررسی تاثیر انتخاب درست کلید Clustered Index در کارایی بانک اطلاعاتی
۸- چگونه Where Condition مناسب جهت استفاده از Clustered Index بنویسیم؟
۹- مقایسه Heap و Clustered Index
۱۰- بررسی انتخاب کلید ایندکس به صورت ترکیبی و تاثیر آن بر کارایی بانک اطلاعاتی
۱۱- بررسی ویژگی‌های مهم و کاربردی برای انتخاب کلید ایندکس
۱۲- بررسی Non Clustered Index و معماری مربوط به آن
۱۳- بررسی مفهوم lookup هنگام استفاده از ایندکس‌های Non Clustered
۱۴- بررسی Key Lookup
۱۵- بررسی RID Lookup
۱۶- Tipping Point و مفهوم آن در SQL Server

 

 

 

۶- ایندکس و نکات پیشرفته مربوط به آن

۱- بررسی مفهوم Cover Index در SQL Server
۲- بررسی نحوه حذف هزینه Lookup با استفاده از Cover Index
۳- بررسی Filtered Indexها در SQL Server
۴- بررسی Sparse Column و تاثیر اعمال ایندکس بر روی آنها
۵- بررسی استفاده از GUID به عنوان کلید ایندکس و مشکلات مربوط به آن
۶- Computed Column و اعمال ایندکس بر روی آنها
۷- بررسی تاثیر عملیات Shrink بر روی ایندکس‌ها
۸- بررسی تاثیر منفی ایجاد بیش از حد ایندکس‌ها در کارایی بانک اطلاعاتی
۹- بررسی Hypothetical Index
۱۰- بررسی Optionهایی که هنگام ایجاد ایندکس باید در نظر داشت

 

 

۷-فشرده‌سازی جداول و ایندکس

۱- بررسی فشرده‌سازی هنگام استفاده از نوع داده Decimal
۲- بررسی مفهوم Data Compression در SQL Server
۳- بررسی فشرده سازی به روش Row Compression
۴- بررسی فشرده‌ سازی به روش Page Compression
۵- بررسی تاثیر فشرده‌سازی بر عملیات Select
۶- بررسی تاثیر فشرده‌سازی بر عملیات Insert,Update,Delete
۷- بررسی تاثیر فشرده‌سازی بر کارایی بانک اطلاعاتی
۸- بررسی تاثیر فشرده‌سازی بر روی Clustered Indexها
۹- برررسی تاثیر فشرده‌سازی بر روی Non Clustered Indexها
۱۰- بررسی تاثیر عملیات فشرده‌سازی بر روی کارایی عملیات تهیه و بازیابی نسخه پشتیبان

تاثیر فشرده‌سازی جدول بر کارایی بانک اطلاعاتی
در یکی از پروژه‌هایی که در آن درگیر بودم یکی از جداول بانک اطلاعاتی دارای حجم زیادی از داده بود که
با توجه به اینکه حجم Selectهای این جدول خیلی زیاد بود تصمیم گرفتیم Data Compression را بر روی این جدول راه‌اندازی کنیم. با انجام این کار حجم داده‌های موجود در ایندکس‌های این جدول کاهش پیدا کرد و این موضوع باعث شد که IO کوئری‌ها کمتر شود.
تصویر زیر نمونه‌ای از فضای یک جدول قبل از فشرده و پس از فشرده‌سازی به روش‌های مختلف را نمایش می‌دهد.

 

 

۸-Statistics و کاربرد آن در SQL Server

۱- بررسی مفهوم Statistics
۲- بررسی کاربرد Statistics در SQL Server
۳- بررسی مفهوم Query Selectivity در SQL Server
۴- بررسی تاثیر Statistics در هنگام انتخاب یک ایندکس مناسب
۵- بررسی اجزاء مربوط به Statistics (Stat Header , Density Vector , Histogram)
۶- بررسی روش‌های ایجاد Statistics در SQL Server
۷- بررسی شرایط به روز رسانی Statistics در SQL Server
۸- بررسی روش‌های به روز رسانی Statistics در SQL Server
۹- بررسی تغییرات Statistics در نسخه ۲۰۱۴ (بازنویسی روال‌های مربوط به آن توسط مایکروسافت)
۱۰- بررسی تاثیر منفی تغییرات Statistics نسخه ۲۰۱۴ بر روی بانک‌های اطلاعاتی
۱۱- بررسی مشکلات به روز نبودن Statistics
۱۲- بررسی مشکل Spill to Disk
۱۳- بررسی Filtered Statisticsها

 

 

۹-Constraintها و تاثیر آن بر کارایی بانک اطلاعاتی

۱- بررسی مفهوم Primary Key و Unique Key
۲- نحوه انتخاب صحیح Primary Key در جداول
۳- Primary Key & Unique Key و ایندکس‌های مرتبط به آنها
۴- بررسی مفهوم Check Constraint و تاثیر آن بر کارایی بانک اطلاعاتی
۵- بررسی مفهوم Foreign Key و تاثیر آن بر کارایی بانک اطلاعاتی

خیلی از دوستانی که فیلد یا فیلدهایی را به عنوان Unique Key ایجاد می‌کنند اطلاعی ندارند که Unique Key توسط یک Unique Non Clustered Index کنترل می‌شود.
چنانچه ما با این مفهوم و همچنین معماری داخلی این ایندکس آشنا باشیم می‌توانیم به خوبی از این ویژگی در پروژه‌های عملیاتی خود استفاده کنیم.

 

 

 

۱۰-Fragment شدن ایندکس‌ها

۱- بررسی مفهوم Fragmentation
۲- بررسی انواع Fragmentation در SQL Server
۳- بررسی تاثیر استفاده از Fillfactor و Pad_Index بر روی Fragmentation
۴- بررسی روش‌های کاهش Fragmentation ایندکس‌ها در SQL Server
۵- بررسی نحوه تنظیم اصولی Fillfactor برای ایندکس‌ها
۶- بررسی نحوه مانیتور کردن Fragmentation
۷- بررسی Rebuild کردن ایندکس‌ها و کاهش Fragmentation
۸- بررسی روش‌های مختلف Rebuild کردن ایندکس‌ها
۹- بررسی حالت‌های مختلف Rebuild کردن ایندکس‌ها به صورت آنلاین و حالت‌های مختلف آنView

 

 

۱۱-مانیتور کردن ایندکس‌ها

۱- معرفی DMVهای مربوط به مانیتور کردن ایندکس‌ها
۲- بررسی ویو مدیریتی Index Usage Stats
۳- بررسی ویو مدیریتی Index Operational Stats
۴- بررسی ویو مدیریتی Index Physical Stats
۵- پیدا کردن ایندکس‌ها تکراری و تصمیم‌گیری در خصوص وجود یا عدم وجود آن
۶- پیدا کردن ایندکس‌های بلا استفاده در SQL Server
۷- بررسی و آنالیز Missing Indexها در SQL Server

پیدا کردن ایندکس‌های بلا استفاده
یکی از کارهایی که من همیشه بر روی بانک‌های اطلاعاتی انجام می‌دهم پیدا کردن ایندکس‌های بلا استفاده بر روی سرور است. وجود ایندکس‌های اضافی بر روی سرور باعث بالا رفتن افزایش Fragmentation ایندکس، افزایش مدت زمان Blocking، افزایش احتمال وجود Deadlock و…. می‌شود. ما در SQL Server می‌توانیم ایندکس‌های بلا استفاده را با استفاده از بررسی تعدادی DMV مدیریتی بدست آوریم.

 

 

۱۲-استفاده از Full text Indexها در SQL Server

۱- بررسی مفهوم Full text Index
۲- بررسی اصطلاحات تخصصی مربوط به Full text Index در SQL Server
۳- نحوه تنظیم استفاده از Full text Index در هنگام کار با داده‌های رشته‌ای
۴- نحوه تنظیم استفاده از Full text Index در هنگام کار با LOB
۵- بررسی نحوه به روز رسانی ایندکس‌های Full text
۶- بررسی نحوه کار استفاده از Full text index در زبان فارسی
۷- بررسی نحوه استفاده از Full text indexها در کوئری‌های
۸- معرفی چند بانک‌های اطلاعاتی NOSQL در حوزه Full Text
۹- معرفی چند Case Study موفق فارسی در حوزه Full Text با استفاده از NOSQL

پشتیبانی از جستجو به زبان فارسی در Fulltext Search
چند سال پیش در یکی از شرکت‌های معتبر نرم‌افزاری دنبال روشی بودیم که بتوانیم سرعت جستجو در میان متن نامه افزایش دهیم. برای افزایش سرعت جستجو از Full Text Index استفاده کردیم اما روش جستجو با استفاده از این ایندکس Prefix Search است، در این روش جستجو ملاک Search شروع لغات موجود در ایندکس با متن مورد جستجو است برای رفع این مشکل روشی ارائه دادیم که توانستیم جستجو را مانند Like ‘%xxxx%’ در Full text Index پیاده‌سازی کنیم.

 

 

۱۳-Triggerها و تاثیر آن بر کارایی بانک اطلاعاتی

۱- بررسی مفهوم Trigger
۲- بررسی انواع DML Trigger
۳- بررسی کنترل Business Ruleها با استفاده از Trigger و تاثیر آن بر کارایی بانک اطلاعاتی
۴- بررسی استفاده از توابع پر کاربرد هنگام کار با Trigger
۵- بررسی Triggerهای تو در تو و بازگشتی
۶- بررسی تعیین اولویت برای Triggerها

استفاده از تریگر و کاهش کارایی بانک اطلاعاتی
چند سال پیش با مجموعه‌ای که با SQL Server 2008 کار می‌کرد همکاری داشتم. در یکی از جداول بزرگ این مجموعه در جهت ثبت سوابق تغییرات رکوردهای این جدول از After Trigger استفاده شده بود. پس از آنالیز و بررسی تریگر موجود در جدول متوجه دو موضوع مهم شدیم.
۱- ارتباط After Trigger با Fragment شدن جدول
۲- افزایش مدت درج و به روز رسانی رکوردهای موجود در جدول
برای رفع این مشکلات راهکاری خوب ارائه دادیم.

 

 

۱۴-Viewها و تاثیر آن بر کارایی بانک اطلاعاتی

۱- بررسی مفهوم View
۲- بررسی نحوه ایجاد Partition View و تاثیر آن بر کارایی بانک اطلاعاتی
۳- بررسی نحوه ایجاد ایندکس بر روی Viewها
۴- بررسی نحوه اعمال Clustered Index بر روی Viewها
۵- بررسی نحوه اعمال Non Clustered Index بر روی Viewها

استفاده به جا از Index View
در یکی از پروژه‌هایی که برای افزایش کارایی آن درگیر بودم با تعداد زیادی از جداول اطلاعات پایه درگیر بودم که هزینه Join آنها بالا بود با بررسی نوع جداول و فیلدهای مورد استفاده در کوئری‌ها تصمیم به ایجاد Index View در بانک اطلاعاتی مربوط به پروژه گرفتم. استفاده از این ویژگی باعث شد که هزینه مربوط به Join کوئری‌ها حذف گردد.

 

 

۱۵-Functionها و تاثیر آن بر کارایی بانک اطلاعاتی

۱- بررسی مفهوم Function
۲- بررسی انواع Functionها
۳- بررسی Scalar Function و تاثیر آن بر کارایی بانک اطلاعاتی
۴- بررسی In Line Function و تاثیر آن بر کارایی بانک اطلاعاتی
۵- بررسی Multi Statement Function و تاثیر آن بر کارایی بانک اطلاعاتی
۶- بررسی مشکلات مربوط به Cardinality Estimation هنگام کار با Functionها

تاریخ شمسی و چالش‌های مربوط به آن
یکی از روش‌های ذخیره تاریخ در بانک‌های اطلاعاتی ذخیره آن به صورت میلادی است اما مشکل زمانی است بخواهیم این تاریخ را به صورت شمسی نمایش دهیم. برای انجام این کار در SQL Server ما می‌توانیم Scaler Function استفاده کنیم. این روش توسط اکثر شرکت‌های نرم‌افزاری استفاده می‌شود، اما زمانی که حجم داده‌های موجود در جداول شما زیاد باشد دیگر این روش جوابگوی کار نخواهد بود و باید از روش‌های بهینه و مناسبی استفاده کنید.

 

 

 

۱۶- پارتیشن‌بندی جداول

۱- پارتیشن‌بندی چیست؟
۲- چه زمانی باید سراغ پارتیشن‌بندی جداول برویم.
۳- چگونه یک جدول را پارتیشن‌بندی کنیم؟
۴- چگونه ایندکس‌های خود را پارتیشن‌بندی کنیم؟
۵- معرفی انواع تکنیک‌های پارتیشن‌بندی
۶- آشنایی با تابع $Partition
۷- بررسی نحوه استفاده از File Groupها هنگام کار پارتیشن‌بندی جداول
۸- پارتیشن‌بندی و فشرده‌سازی داده‌ها
۹- انجام عملیات Merge و Split به ازای پارتیشن‌ها در SQL Server
۱۰- استفاده از ویژگی Incremental Statistics هنگام پارتیشن‌بندی
۱۱- معرفی Best Practices برای پارتیشن‌بندی جداول

پارتیشن بندی یک جدول با حجم ۹۰۰GB
در یکی از پروژه‌های بزرگی که درگیر بودم جدولی در حدود ۹۰۰ گیگابایت حجم داشت. برای افزایش سرعت عملکرد این جدول تصمیم به پارتیشن‌بندی جدول بر اساس ماه گرفتیم.
مهمترین مزیتی که این تکنیک به ما داد این بود که توانستیم Active Partitionها یا پارتیشن‌هایی که مراجعه به آنها زیاد می‌باشد را در دیسک‌های پرسرعت قرار دهیم. همچنین ما ویژگی Incremental Statistics را در این جدول فعال کردیم که تاثیر بسیار مناسبی در عملکرد کوئری‌هایمان داشت.
رفتن به سمت Data Partitioning اصولی دارد که ما در این دوره این اصولی دارد که در این دوره این اصول را به خوبی یاد می‌گیریم.

 

 

۱۷-جداول موقت و تنظیم TempDB و تاثیر آن بر کارایی بانک اطلاعاتی

۱- Temp Table یا جداول موقت چیست؟
۲- تاثیر استفاده از Temp Table بر کارایی بانک اطلاعاتی
۳- Table Variable چیست؟
۴- تاثیر استفاده از Table Variable بر کارایی بانک اطلاعاتی
۵- TVP چیست ؟
۶- تاثیر استفاده از TVP بر کارایی بانک اطلاعاتی
۷- بررسی بانک اطلاعاتی TempDB
۸- بررسی نحوه پیکربندی صحیح بانک اطلاعاتی TempDB
۹- بررسی مفهوم Latch Contention و نحوه کاهش آن در بانک اطلاعاتی TempDB
۱۰- بررسی Trace Flagهای وابسته به Tempdb

تنظیم صحیح بانک اطلاعاتی TempDB
بانک اطلاعاتی TempDB یکی از مهمترین بانک‌های اطلاعاتی سیستمی موجود در SQL Server است که تنظیم صحیح آن به طور مستقیم در کارایی بانک اطلاعاتی تاثیر دارد. یکی از راه‌های بهینه‌سازی TempDB افزایش تعداد Data Fileهای آن به نسبت CPU Coreهای سرور است. اما این افزایش تعداد Data Fileها همراه با آیتم‌های دیگر باید انجام شود. خود من این موضوع را در اکثر پروژه‌های Tuningی که درگیر می‌شوم انجام می‌دهم.

 

۱۸-Execution Plan Query (نقشه اجرایی کوئری‌ها)

۱- بررسی پیشرفته اپراتورها در Execution Plan
۲- بررسی Trivial Plan
۳- بررسی اپراتورهای فیزیکی مربوط به Join (Nested Loop, Merge Join , Hash Join)
۴- بررسی اپراتورهای فیزیکی Aggregate (Stream Aggregate , Hash Aggregate)
۵- بررسی Table Spool
۶- بررسی Parallelism
۷- بررسی Index Query Hint
۸- بررسی Force Order Hint
۹- بررسی Loop, Merge, Hash join Hint
۱۰- بررسی ForceSeek , ForceScan Hint
۱۱- بررسی NoExpancd Expand Hint
۱۲- بررسی Fast N Hint

هدایت کوئری به سمت اجرا به صورت Parallel
در کورس قبلی Performance & Tuning یکی از دوستان شرکت کننده در دوره کوئری داشت که پلن اجرایی آن به صورت Serial بوده و زمان اجرای آن بیش از ۳ دقیقه بود ما با بازنویسی کوئری مربوطه توانستیم روند اجرای کوئری را به حالت Parallel در بیاوریم. طی این حالت ردیف‌های بازگشتی به ازای هر کدام از اپراتورها توانایی اجرای بر روی CPU Coreهای مختلف دارند.

 

۱۹-بررسی Plan Caching

۱- مروری بر مکانیزم Cache کردن Execution Plan در SQL Server
۲- آشنایی با Plan Cache در SQL Server
۳- بررسی DMVهای مربوط به مشاهده Plan Cache
۴- بررسی دستورات مدیریت Plan Cache
۵- بررسی استفاده مجدد از Execution Plan
۶- Parameter sniffing چیست و چگونه بوجود می‌آید؟
۷- راه‌حل رفع مشکل Parameter Sniffing چیست؟
۸- بررسی تاثیر استفاده از پروسیجرها در افزایش کارایی کوئری‌ها
۹- بررسی تکنیک‌هایی کاربردی برای ایجاد پروسیجرهای بهینه
۱۰- بررسی استفاده از Dynamic SQL در دستورات TSQL
۱۱- مشکلات Ad-Hoc Queryها چیست؟
۱۲- Auto Parameterization چیست؟
۱۳- Plan Guides چیست؟
۱۴- استفاده ویژگی Adaptive Query Processing در SQL Server 2017
۱۵- استفاده از ویژگی Automatic Query Tuning در SQL Server 2017
۱۶- بررسی تاثیر استفاده از Plan Regression در SQL Server 2017

استفاده از ویژگی Adaptive Query Processing
یکی از ویژگی‌های جالبی که در SQL Server 2017 ارائه شده مربوط به بهبود پردازش و تهیه Execution Planهای مناسب می‌باشد. زمانی که کوئری شما در SQL Server اجرا می‌شود با توجه به Statisticsهای موجود در جدول تعداد رکوردهای بازگشتی تخمین زده شده و بهترین Execution Plan ایجاد می‌شود. با توجه به اینکه همیشه مقدار Statisticsها به روز نمی‌باشد امکان ایجاد Planهای نامطلوب در SQL Server وجود دارد، در SQL Server 2017 با استفاده از ویژگی Adaptive Query Processing می‌توانیم بر مشکلات مربوط به تخمین تعداد رکوردهای بازگشتی غلبه کنیم. در طی این دوره ما به این ویژگی و همچنین راه‌کارهای استفاده شده در آن آشنا می‌شویم.

 

 

۲۰-بررسی Wait و انواع آن

۱- بررسی مدل اجرایی SQL Server
۲- آشنایی با مفهوم SQL OS
۳- بررسی SQLOS و معماری آن در SQL Server تحت ویندوز
۴- بررسی SQLOS و معماری آن در SQL Server تحت لینوکس
۵- بررسی مفهوم Schedulers در SQL Server
۶- بررسی مفهوم Task در SQL Server
۷- بررسی مفهوم Workers در SQL Server
۸- آشنایی با مفهوم Wait
۹- آشنایی با انواع Waitها
۱۰- بررسی DMVها و DMFها مربوط به استخراج اطلاعات Waitها
۱۱- آشنایی با با CX_PACKET Wait
۱۲- آشنایی با PAGELATCH_ and PAGEIOLATCH Wait_
۱۳- آشنایی با ASYNC_NETWORK_IO Wait
۱۴- آشنایی با SOS_SCHEDULER_YIELD Wait
۱۵- آشنایی با IO_COMPLETION Wait
۱۶- آشنایی با راهکارهای مربوط به کاهش Waitها مشهور
۱۷- آشنایی با تنظیمات Processor و Thread در SQL Server

بدست آوردن وضعیت Waitها به ازای هر Session
از SQL Server 2016 به بعد یک DMV جدید به نام sys.dm_exec_session_wait_stats ایجاد شده است که وظیفه آن استخراج اطلاعات مربوط به Waitهای هر کدام از Sessionها می‌باشد. ما با این DMV کارهای خوبی می‌توانیم انجام دهیم برای مثال می‌توانیم یک کوئری را بر روی سرور اجرا و Waitهایی که این کوئری به ازای انجام کار درگیر می‌شود را استخراج کنیم.

 

 

۲۱-مانیتورینگ SQL Server

۱- آشنایی با برنامه Performance Monitor
۲- آشنایی با مفهوم Counter و نحوه کار با Counterها در برنامه Performance Monitor
۳- آشنایی با مفهوم Counter و نحوه کار با Counterها در SQL Server
۴- بررسی Counterهای کاربردی مخصوص SQL Server
۵- ایجاد Data Collector در برنامه Performance Monitor
۶- معرفی برنامه مانیتور Apex SQL Monitor

استفاده از برنامه‌های Monitoring
استفاده از برنامه‌های مخصوص مانیتورینگ باعث می‌شود که بتوانیم یک Performance Baseline خوب ایجاد کنیم. معمولاً برنامه‌های مانیتورینگ تعداد زیادی Metric قوی از پیش تعریف شده برای SQL Server دارند که وضعیت هر کدام از آنها را در بانک اطلاعاتی خود ذخیره می‌کنند. ما می‌توانیم با نصب یکی از آنها بر روی سرور مانیتورینگ کارایی بانک اطلاعاتی خود را مانیتور کنیم.

 

۲۲-استفاده از برنامه SQL Server Profiler

۱- بررسی نحوه ایجاد Trace و اعمال فیلترهای پیشرفته بر روی آن
۲- آشنایی با اصطلاحات رایج در Profiler
۳- بررسی نحوه تعریف Trace برای پیدا کردن کوئری‌های کند
۴- بررسی نحوه تعریف Trace برای پیدا کردن Blocking
۵- بررسی نحوه تعریف Trace برای پیدا کردن Deadlock
۶- بررسی ایجاد Server Side Traceها
۷- آشنایی با نحوه آنالیز خروجی برنامه SQL Profiler
۸- بررسی ترکیب خروجی برنامه Performance Monitor و SQL Profiler

ایجاد Traceهای Server Side در برنامه SQL Profiler
یکی از بهترین برنامه‌هایی که با آن می‌توان مشکلات مربوط به کارایی کوئری‌ها را کشف کرد برنامه SQL Server Profiler است ما با استفاده از این برنامه می‌‌توانیم کوئری‌هایی که مدت زمان اجرای طولانی دارند را پیدا کرده و مشکلات مربوط به آنها را حل نماییم. فقط باید توجه داشت که برای این که Batch Request سرور کاهش پیدا نکند و سرور بتواند تعداد زیادی Request در ثانیه را پاسخ دهد باید Traceهای خود را به صورت Server Side ایجاد کنیم.

 

 

۲۳-استفاده از ویژگی Query Store

۱- برررسی معماری Query Store
۲- بررسی نحوه پیکربندی بانک اطلاعاتی برای استفاده از Query Store در SQL Server
۳- بررسی DMVهای مرتبط با Query Store در SQL Server
۴- بررسی نحوه Force کردن Planها با استفاده از Query Store
۵- بررسی نحوه استفاده از گزارش‌‌های تکمیلی Query Store

آنالیز کندی سیستم بدون نصب ابزارهای جانبی
بانک اطلاعاتی یکی از پروژه‌‌هایی که درگیر آن بودم SQL Server 2016 بود در جهت افزایش سرعت کوئری نیاز داشتیم به سریع‌ترین نحو ممکن از وضعیت اجرای کوئری‌ها و همچنین Execution Plan آنها اطلاع یابیم. یکی از بهترین ابزارهایی که از نسخه ۲۰۱۶ به بعد در SQL Server تعبیه شده است Query Store نام دارد این ابزار به راحتی آب خوردن امکان انجام این کار را به ما می‌دهد.

 

۲۴-سخت‌افزار و تاثیر آن بر کارایی SQL Server

۱- آشنایی با اصطلاحات موجود در حوزه سخت‌افزار سرور
۲- آشنایی با چالش‌ها و مسئال مربوط به Memory
۳- آشنایی با چالش‌ها و مسئال مربوط به Processor
۴- آشنایی با چالش‌ها و مسئال مربوط به Disk
۵- آشنایی با چالش‌ها و مسئال مربوط به Network
۶- آشنایی با مفهوم RAID
۷- آشنایی با انواع RAID
۸- معرفی SSD و تاثیر استفاده از آن در کارایی
۱۰- بررسی تنظیم Maximum Memory در SQL Server
۱۱- بررسی تنظیمات وابسته به سخت‌افزار در SQL Server

انتخاب RAID و تاثیر آن در عملکرد SQL Server
یکی از پارامترهای مهم در عملکرد SQL Server عملیات IO می‌باشد. نوع RAID یکی از فاکتورهای مهمی است که در کارایی SQL Server و همچنین کارایی عملیات IO تاثیر دارد. ما در این دوره با انواع RAID و پارامترهای موثر در آن آشنا می‌شویم تا بتوانیم به حداکثر Throughput در عملیات IO برسیم.

 

۲۵-ماشین مجازی و استفاده از آن در SQL Server

۱- بررسی مفهوم مجازی ‌سازی
۲- بررسی انواع روش‌های مجازی ‌سازی
۳- بررسی Applicationهای مخصوص مجازی ‌سازی
۴- بررسی مفهوم Hypervisor
۵- بررسی انواع Hypervisor
۶- بررسی تنظیمات مناسب ESX برای SQL Server
۷- بررسی تنظیمات مناسب Hyper-V برای SQL Server

آیا از Virtual Machineها باید استفاده کنیم؟
این سوالی است که خیلی از سازمان‌ها از من می‌پرسند. در پاسخ باید بگویم که با توجه به شرایط و وضعیت برنامه‌ها امکان استفاده از VMها وجود دارد. در اغلب موارد اگر تنظیمات مناسبی بر روی VMها انجام شود می‌توانیم کارایی بانک‌های اطلاعاتی خود را افزایش دهیم.

۲۶-معرفی ویژگی Buffer Pool Extension

۱- آشنایی با معماری Buffer Pool Extension
۲- بررسی دلیل استفاده از SSD به عنوان RAM
۳- آشنایی با نحوه خواندن و نوشتن Pageها در SSD
۴- آشنایی با Extended کردن Buffer Pool در SQL Server بر روی SSD

غلبه بر مشکلات کمبود حافظه RAM
یکی از قابلیت‌های SQL Server 2014 به بالا امکان Extended کردن Buffer Pool در این روش چنانچه ما مشکل Memory داشته باشیم می‌توانیم به کمک SSD بخشی از داده‌هایی که قرار است در Buffer Pool قرار گیرد را بر روی SSD منتقل کنیم تا کارایی بانک اطلاعاتی به نحوه مناسبی افزایش یابد.

 

۲۷-معرفی ویژگی Resource Governor

۱- بررسی Resource Governor
۲- بررسی سناریوهای قابل استفاده برای Resource Governor در SQL Server
۳- بررسی نحوه محدود کردن CPU با استفاده از Resource Governor
۴- بررسی نحوه محدود کردن Memory با استفاده از Resource Governor
۵- بررسی نحوه محدود کردن IO با استفاده از Resource Governor
۶- بررسی نحوه ایجاد Classifier Function برای کار با Resource Governor

فراخوانی وب سرویس و افزایش Workload بانک اطلاعاتی
چند سال پیش در یکی از سازمان‌های دولتی درگیر رفع مشکلات مربوط به کارایی بانک اطلاعاتی بودیم با بررسی که روی سرور انجام دادیم مشخص شد که یک کوئری بهینه (Index Seek) به تعداد زیادی روی سرور در حال اجرا می‌باشد به طوری که در طی ساعتی خاص امکان کار با سرور مهیا نبوده و سرور به علت فراخوانی مکرر این کوئری بهینه Busy می‌باشد. با بررسی دقیق‌تر متوجه شدیم که این کوئری توسط یک وب سرویس در حال فراخوانی است. برای اینکه این وب سرویس کلی Resourceهای سرور را در اختیار نگیرد Resource Governor را پیکربندی کردیم.

 

۲۸-بررسی Lock & Block & Concurrency

۱- آشنایی با مفهوم Lock
۲- بررسی مفهوم Concurrency
۳- بررسی انواع مشکلات رایج هنگام کار با Resourceها به صورت همزمان
۴- بررسی انواع Lock
۵- بررسی مفهوم Blocking
۶- بررسی نحوه بوجود آمدن Blocking
۷- بررسی نحوه پیدا کردن Blocking
۸- بررسی مفهوم Deadlock
۹- بررسی حالت‌های مختلف بوجود آمدن Deadlock
۱۰- بررسی روش‌های کشف Deadlock
۱۱- بررسی نحوه رفع مشکلات Deadlock و کاهش آن
۱۲- بررسی مفهوم Lock Escalation
۱۳- بررسی مفهوم Isolation Level
۱۴- بررسی انواع Isolation Level
۱۵- بررسی Application Lock
۱۶- بررسی Schema Lock
۱۷- بررسی نحوه طراحی استفاده از Transaction در برنامه‌ها
۱۸- بررسی Delay Durability Transaction و

Blocking و عوامل بوجود آمدن آن
خیلی از دوستان فکر می‌کنند که وقتی کوئری به کندی اجرای می‌شود عامل آن عدم وجود ایندکس مناسب است. در صورتی که یکی از عوامل کندی اجرای کوئری‌ها Blocking است. یکی از کارهایی که من همیشه در پروژه‌های خودم انجام می‌دهم کشف و بررسی عوامل Blocking است. برای انجام این کار باید حتماً با مفهم Blocking آشنا باشید پس از آن می‌توان عوامل آن را با استفاده از ابزارهای موجود در SQL Server کشف و مشکلات مربوط به آنها را رفع کرد.

 

۲۹-Memory Optimized

۱- بررسی معماری Memory Optimized Table
۲- بررسی ویژگی‌های Memory Optimized Table
۳- بررسی دلایل استفاده از Memory Optimized Table
۴- بررسی انواع ایندکس‌های موجود در Memory Optimized Table
۵- بررسی پروسه Garbage Collection
۶- بررسی Offline CheckPoint Thread در هنگام کار با Memory Optimized Table
۷- بررسی وضعیت Log File در هنگام استفاده از Memory Optimized Table
۸- بررسی Statistics هنگام کار با Memory Optimized Table
۹- Transactionها و چالش‌های مربوط به آن هنگام کار با Memory Optimized Table
۱۰- بررسی Delay Durability Transaction و تاثیر استفاده از آن در Memory Optimized Table
۱۱- بررسی Native Compiled Stored Procedure
۱۲- بررسی استفاده از TVP از نوع Memory Optimized Table
۱۳- آشنایی با DMVهای و SPهای سیستمی مربوط Memory Optimized Table
۱۴- آشنایی با تغییرات مربوط به SQL Server 2017 به ازای Memory Optimized Table
۱۵- بررسی چند Case Study مناسب برای استفاده از Memory Optimized Table

انجام درخواست‌ها در کمتر از یک میکرو ثانیه
زمانی که SQL Server 2014 ارائه شد یکی از مهمترین ویژگی‌های آن Memory Optimized Table بود، در آن زمان در یکی از شرکت‌‌های مسئولیت تیم طراحی و توسعه بانک اطلاعاتی با من بود به اصرار من و یکی دیگر از دوستانم قرار بر این شد که بانک اطلاعاتی جداول اصلی این پروژه از نوع Memory Optimized Table انتخاب شود. ما عملیات CRUD مربوط به این جداول را با Natively Compiled Stored Procedure پیاده کردیم و از آن در Entity Framework استفاده کردیم. پس از گذشت چند سال هر موقع به سوابق اجرای کوئری‌های مربوط به این پروژه بزرگ نگاه می‌کنم سرعت اجرای اغلب کوئری‌های مربوط به این جداول در حد یک میکرو ثانیه می‌باشد.(توجه داشته باشید هر یک میکرو ثانیه برابر است با یک میلیونوم ثانیه)

 

 

۳۰-Column Store Index

۱- آشنایی با برخی مباحث موجود در Data Warehouseها
۲- آشنای با Columnstore Index
۳- بررسی معماری مربوط به Columnstore Index
۴- آشنایی با مفهوم Batch Mode Processing
۵- بررسی مفهوم Row Group
۶- بررسی Delta store و Delete Bitmap در Columnstore Index
۷- آشنایی با روش‌های فشرده‌سازی مربوط به Columnstore Index
۸- آشنایی با DMVهای مربوط به مانیتور کردن Columnstore Index
۹- بایدها و نبایدهای مربوط به Columnstore Index
۱۰- آشنایی با تغییرات مربوط به SQL Server 2017 به ازای Columnstore Index
۱۱- بررسی نحوه اعمال تنظیمات مناسب برای Bulk Insert در Columnstore Indexها
۱۲- بررسی تاثیر استفاده از Columnstore Index در Data Warehouseها
۱۳- بررسی نحوه استفاده از Columnstore Index در OLTPها
۱۴- بررسی استفاده از Columnstore Index هنگام کار با Memory Optimized Table

استفاده از Columnstore Index در Data Warehouse
در یکی از پروژه‌هایی که درگیر بودم جدولی با حدود ۲ میلیارد و ۴۰۰ میلیون رکورد داشتم که روزانه بیش از ۱۰ میلیون رکورد به جدول مربوطه اضافه می‌شود. هدف ما در این پروژه افزایش سرعت کوئری‌ها بود. با توجه به اینکه اغلب کوئری‌های مربوط به این جدول از جنس تحلیلی می‌باشد. تصمیم گرفتیم از Columnstore Index در آن استفاده کنیم همانطور که در تصویر دقت مشاهده می‌کنید سرعت اجرای کوئری‌ها به طرز وحشتناکی افزایش پیدا کرد، کوئری که بیش از دو میلیارد و چهارصد میلیون رکورد را در خود درگیر می‌کند در کمتر از یک ثانیه (۳۰۰ میلی ثانیه) روی سرور اجرا شد.

 

۳۱-SQL Linux و نکات مربوط به افزایش کارایی در SQL Server تحت لینوکس

۱- آشنایی با نحوه نصب SQL Server در Linux
۲- بررسی ویژگی‌های پشتیبانی شده توسط SQL Linux
۳- آشنایی با معماری SQL Linux
۴- معرفی PAL (Platform Abstraction Layer)
۵- بررسی تنطیمات مخصوص Kernel Setting در لینوکس برای SQL Server
۶- مقایسه کارایی SQL Server for Linux و SQL Server for Windows
۷- بررسی تنظیمات Database Instant File Initialization در SQL for Linux
۸- پیاده‌سازی یک Case Study و اعمال workload بر روی آن در SQL Linux

کارایی SQL Linux
خیلی از دوستان از من در خصوص کارایی SQL Linux می‌پرسند و من هم در پاسخ TPC Benchmark را به آنها معرفی می‌کنم. در کلاس H مربوط به این Benchmark اوضاع SQL Linux خیلی خوب است و حتی در برخی موارد از SQL Server تحت ویندوز هم عملکرد بهتری داشته است.
برای اطلاعات بیشتر در این خصوص می‌توانید به این لینک مراجعه کنید.
راستی تا یادم نرفته بگم هر موقع لینوکس را می‌بینم یاد پنگوئن کوچولوی مربوط به اون می‌افتم.

 

 

مدرس دوره مسعود طاهری کیست؟

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

۱-سخنران بخش هوش تجاری همایش مورد تایید مایکروسافت در سال ۲۰۱۷ در ایران
۲-مدیر واحد پروژه های هوش تجاری و دیتابیس در نیک آموز
۳-رئیس بخش دیتابیس شرکت خدمات نوین سداد
۴-کارشناس ارشد تحلیل و طراحی شرکت تجارت الکترونیک پارسیان (PECco).
۵-مدرس دوره ۱۵ جلسه ای آموزش Performance & Tuning در SQL Server
۶-مدرس دوره ۱۵ جلسه ای دوره SQL Server ویژه برنامه نویسان
۷-سخنران همایش معرفی قابلیت های جدید SQL Server 2016
۸-مشاور SQL Server در شرکت های رایورز، سازمان بورس، کشتیرانی و…
۹-برگزاری دوره SQL Server 2008 به عنوان مدرس برای سازمان بورس و اوراق بهادار تهران.
۱۰-برگزاری دوره به روز رسانی به SQL Server 2014 در سازمان کشتیرانی کل کشور
۱۱-برگزاری دوره به روز رسانی به SQL Server 2014 در سازمان زندان‌های کل کشور
۱۲-برگزاری دوره SQL Server 2012 برای تیم DataCenter شرکت ParsOnline (پارس آنلاین).
۱۳-برگزاری دوره SQL Server 2012 Performance & Tuning برای شرکت مهندسی رایورز.
۱۴-برگزاری دوره High Availability with SQL Server 2008 برای تیم فنی شرکت پخش البرز.

 

 

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

اگر خارج از تهران هستید یا پُرمشغله هستید چرا در دوره غیرحضوری شرکت نمی‌کنید!؟
اگر خارج از تهران هستید، اگر پُرمشغله هستید: بصورت غیرحضوری ثبت نام کنید، کلاس را زنده ببینید و فیلم با کیفیت فوق حرفه‌ای به همراه جزوات کاملا رنگی و دستورالعمل اجرا دریافت کنید.

 

 

نمایش Live و زنده دوره برای افراد غیرحضوری

دوستانی که بصورت غیرحضوری ثبت نام کرده‌اند می‌توانند دسکتاپ و صدای مدرس را به صورت کاملا زنده مشاهده کنند. در هر کجای جهان هستید بدون هیچ محدودیتی در کلاس باشید.

 


منبع: دوره آموزش Performance Tuning نیک آموز

آدرس: تهران یوسف آباد- خیابان سید جمال الدین اسدآبادی- میدان فرهنگ- خیابان 33 - پلاک 31 - طبقه 4