امروزه یکی از بزرگترین دغدغه های موجود در حوزه دیتابیس، کاهش کارایی و سرعت عملیات، همزمان با افزایش حجم اطلاعات است. از آن جا که یکی از عوامل مهم در موفقیت هر برنامه نرم افزاری، رضایتمندی کاربران آن برنامه از سرعت انجام عملیات روزمره مانند: خواندن اطلاعات، درج، حذف، ویرایش است اهمیت این موضوع را دوچندان می کند. شاید به عنوان اولین راه کار جهت رفع مشکل سرعت اجرای برنامه ها، افزایش منابع سرور مانند Ram، Cpu و ... با پرداخت هزینه های گزاف پیشنهاد شود اما تجارب عملی نشان داده است که این راه کار مقطعی بوده و بعد از مدت زمان کوتاهی مجدداً با مشکلات قبلی مواجه خواهید شد!
از مهمترین عوامل کاهش سرعت انجام عملیات بر روی حجم زیاد اطلاعات می توان به سه مورد زیر اشاره کرد:
1. آموزش مفاهیم پایه ای و ضروری جهت بهینه سازی کارایی:
یک متخصص Performance Tuning الزاماً بایستی با برخی مباحث Internal در SQL SERVER آشنایی داشته باشد. به عنوان مثال تا زمانی که شما با مفهوم page، ساختار B-Tree و معماری ایندکس ها در SQL SERVER آشنایی نداشته باشید. مباحثی مانند ایندکس، انواع آن، تأثیر ایندکس بر جستجو، ایندکس های بدون کاربرد یا تکراری، عوامل کاهش کارایی ایندکس و ... را مسلط نخواهید شد اگرچه صدها ایندکس ایجاد کرده باشید!
جهت بهینه سازی و رفع مشکلات کارایی یک دیتابیس، باید سه مرحله بررسی، کشف علت و یافتن راه حل مشکل را طی کنیم. در ابتدا با استفاده از ابزارهایی مانند Execution Plan مراحل اجرای کوئری را بررسی می کنیم. با تحلیل و بررسی عملگرهای موجود در پلن اجرایی، دلیل یا دلایل ایجاد مشکل کارایی را کشف می کنیم و در مرحله آخر نیز راه حل متناسب با مشکل ایجاد شده را اعمال می کنیم. همگی این مراحل نیازمند آشنایی یک متخصص با مباحث Internal در SQL SERVER است.
2. بررسی مشکلات رایج کارایی و ارائه برترین راه حل ها برای هر یک:
بدون شک داشتن تجربه و آشنایی با انواع مشکلات کارایی و راه حل آن ها تأثیر زیادی در کیفیت کار و مهارت یک متخصص Performance Tuning خواهد داشت. به عنوان مثال اینکه شما قادر باشید با مشاهده یک Execution Plan و توجه به یک سری علائم و مقادیر، به مشکل کارایی یک کوئری پی ببرید نیازمند مطالعه و تجارب عملی بسیار زیادی است. اینکه بتوانیم مشکلات کارایی مرتبط با بهینه نبودن طراحی کوئری را از مشکلات طراحی دیتابیس و جداول و یا حتی تنظیمات سطح سرور تفکیک کنیم.
در طول دوره آموزشی Performance Tuning انواع سناریوهای مشکل کارایی(کوئری، طراحی، تنظیمات) شبیه سازی و مرحله به مرحله(بررسی، تشخیص، راه حل) بهینه سازی را انجام می دهیم.
3. آموزش تکنیک ها و ابزارهای بهینه سازی کارایی در سطح سرور، دیتابیس، جدول و به ویژه کوئری ها:
واقعیتی انکارناپذیر در موفقیت یک متخصص Performance Tuning استفاده از ابزار کمکی مناسب است. به عبارتی دیگر، برخورداری از سطح مناسب دانش و مهارت، شرط لازم برای موفقیت و استفاده از ابزار کمکی مناسب، شرط کافی برای این مورد به شمار می رود. همانطور که می دانید در SQL SERVER امکانات زیادی از Execution Plan و Profiler گرفته تا DMV, DBCC و DMF جهت استخراج انواع اطلاعات مرتبط با کارایی وجود دارند اما تجربه نشان داده است که استفاده از ابزارهای طراحی شده توسط شرکت های Third Party مانند Redgate، Appex، Idera و ... از نظر سرعت و بهره مندی از ابزارهای ویژوال چون نمودارها و گزارشات کاربردی فراوان، بسیار مناسب تر از ابزارهای داخلی SQL SERVER هستند. اگرچه این ابزارهای کمکی نیز در عمل از امکانات داخلی SQL SERVER استفاده می کنند.
در طول دوره آموزشی Performance Tuning، متناسب با موضوع بهینه سازی، ابزارهای کمکی معرفی خواهند شد و در پایان دوره از یک جعبه ابزار حرفه ای جهت شناسایی مشکلات کارایی برخوردار خواهید بود. لازم به ذکر است که اسکریپت های آماده و تست شده که توسط افرادی چون paul randa ,kimberly ، kendra little، Holger Schmeling و... تهیه شده اند را پس از بررسی مختصر و آشنایی با کاربرد آن ها به این جعبه ابزار اضافه خواهیم کرد.
در پایان این دوره آموزشی، متناسب با مهارت کسب شده و از طریق آزمون، از دانشجویان دعوت به کار صورت می گیرد.
آموزش ایندکس در SQLSERVER چیست؟
آشنایی با مفهوم ایندکس
دلیل استفاده از ایندکس
معرفی انواع ایندکس
آموزش Page در SQLSERVER چیست؟
آشنایی با مفهوم PAGE
معرفی انواع PAGE در SQL
بررسی ساختار داخلی یک PAGE
نحوه ذخیره داده ها در PAGE
مشاهده محتویات یک PAGE
محاسبه فضای اشغال شده و آزاد
آموزش B-Tree در SQLSERVER چیست؟
آشنایی با B-Tree
مزایای استفاده از B-Tree
شبیه ساز B-Tree
معماری B-Tree همراه با مثال
آموزش معماری ایندکس کلاستر و نان کلاستر در SQLSERVER
مروری بر ایندکس چیست
معماری Clustered Index
ترتیب فیزیکی و منطقی رکوردها
معماری Non Clustered Index
جستجو در ایندکس ها
جداول Heap و Clustered
معماری جدول دارای چند ایندکس
آموزش Execution Plan چیست؟
آشنایی با Execution Plan، کاربردها و انواع
مراحل اجرای یک کوئری در SQL(زمان ایجاد Execution Plan)
معرفی اجزای یک Execution Plan
نحوه خواندن و تحلیل Execution Plan
تکنیک های کشف مشکل با استفاده ازExecution Plan
معرفی انواع فرمت های نمایش
خودکارسازی ذخیره Execution Plan
معرفی ابزار (Devart – Sql Sentry)
آموزش عملیات Seek وScan در SQLSERVER
معرفی عملیات Seek وScan
آشنایی با Table Scan
آشنایی با Logical/Physical Read
آشنایی با Index Scan
آشنایی با Index Seek
انجام عملیات در ایندکس کلاستر و نان کلاستر
انجام عملیات در Clustered/Heap Table
آموزش عملیات Lookup درSQLSERVER و نحوه مدیریت آن
آشنایی بامفهوم Bookmark Lookup
معرفی انواع Lookup و مقایسه کارایی آن ها
روش های حذف Lookup در اجرای کوئری
مقایسه کارایی(Column Key/Nonkey(Include
oMissing Index، کاربرد و نحوه ایجاد آن
دلایل عدم استفاده از Select * در کوئری
عملیات Join درSQLSERVER
آشنایی بامفهوم Join – معرفی Tools
آشنایی کامل با Nested Loops Join
آشنایی کامل با Sort Merge Join
آشنایی کامل با Hash Match Join
محدودیت الگوریتم های جوین در انجام جوین های منطقی
مقایسه کارایی الگوریتم های جوین
STATISTICS درSQLSERVER چیست
آشنایی باStatistics و اصطلاحات مربوطه
کاربرد Statistics و تخمین رکوردهای بازگشتی
انواع Statistics و نحوه ایجاد هر یک
آشنایی با Filtered Index
معرفی قسمت های مختلف در Statistics
تنظیمات Statistics در سطح دیتابیس و جدول
STATISTICS و افزایش سرعت اجرای کوئری در SQLSERVER
تفاوت تخمین رکوردها در نسخه های مختلف SQLSERVER
Missing Statistics
متغیر محلی و Statistics
Parameter Sniffing
تأثیر طراحی صحیح کوئری در تخمین صحیح
دقیق نبودن Statistics و راه حل آن
ستون های به هم مرتبط در شرط های کوئری
مشاهده Statisticsهای استفاده شده در کامپایل یک کوئری
کشف Statisticsهای تکراری وبدون کاربرد
استخراج Statisticsهای کم دقت و ایجاد مجدد آن ها با Sampled مناسب
تشخیص زمان بروزرسانی Statistics و تأثیر انتخاب Sample بر کارایی
ترتیب اجرای دستورات یک کوئری در SQLSERVER
مروری بر مدل رابطه ای و SQL
مفهوم اجرای منطقی و فیزیکی دستورات کوئری
ترتیب نوشتاری و ترتیب منطقی اجرای کوئری
کنترل ترتیب اجرای منطقی و فیزیکی جوین
ترتیب منطقی اجرای عملگر PIVOT
آموزش ایندکس گذاری صحیح در SQLSERVER
دلیل اهمیت ایندکس ها در SQLSERVER
کاربرد ایندکس ها در SQLSERVER
معیارهای انتخاب کلید ایندکس کلاستر
تأثیر انتخاب صحیح کلید ایندکس در حجم دیتابیس
مفهوم Page Split، دلیل رخ دادن آن و تأثیر آن بر کارایی
تأثیر وجود مقادیر تکراری در کلید ایندکس بر کارایی
تفاوت کاربرد کلید اصلی وکلید ایندکس کلاستر
GUID و IDENTITY به عنوان کلید ایندکس - معرفی چند کلید ایندکس نمونه
مزایا و معایب ایندکس نان کلاستر
تعداد مناسب ایندکس ها در یک جدول
مراحل گام به گام ایندکس گذاری یک جدول
ایندکس گذاری صحیح و افزایش کارایی عملیات در SQLSERVER
ایندکس گذاری کلید خارجی
ایندکس گذاری بر اساس توابع تجمعی، گروهبندی و مرتب سازی
تأثیر صعودی یا نزولی بودن (Asc - Desc) فیلدهای ایندکس بر کارایی
اهمیت ترتیب فیلدها در ایندکس مرکب (Multi-Column)
ایندکس کلاستر سریعتراست یا ایندکس نان کلاستر
بررسی کارایی جدول Heap , Clustered
بررسی عملیات جدول Heap
Forwarding Pointer در جدول Heap
مفهوم Tipping Point و تأثیر آن در استفاده یا عدم استفاده از یک ایندکس
کشف ایندکس های مفقودی و تست کارایی ایندکس قبل از ایجاد آن
فرآیند بهینه سازی ایندکس ها در Sqlserver
روش های استخراج کوئری های نیازمند ایجاد ایندکس جهت بهبود کارایی
استخراج لیست ایندکس های مفقودی با استفاده از DMV
نحوه انتخاب مناسب ترین ایندکس از بین ایندکس های پیشنهادی
استخراج کوئری های دارای عملیات پرهزینه ازplan cache
ادغام نتایج DMV و plan cache جهت انتخاب بهترین ایندکس
معرفی Hypothetical Index و کاربرد آن در تست کارایی ایندکس
مهمترین عوامل کاهش کارایی ایندکس ها و مدیریت آن ها در SQLSERVER
استخراج ایندکس های بدون کاربرد و ملاحظات حذف آن ها
استخراج ایندکس های تکراری
تشخیص ایندکس های دارای همپوشانی و ادغام آن ها
معرفی سه Stored Procedure جهت مانیتور کارایی ایندکس ها
Page Split و Fragmentation
روش های رفع مشکل Fragmentation
معرفی ابزار (Devart –Redgate)
نکات مربوط به Rebuild و Reorganize ایندکس ها
مهمترین نکات افزایش کارایی کوئری در SQLSERVER
دستور SELECT در SQLSERVER
تأثیر آرگومان های جستجو در کارایی کوئری
تکنیک Optimize-For-Unknown
تأثیر ستون های شرط کوئری بر کارایی
مقایسه کارایی توابع موجود در شرط کوئری
معرفی توابع Sargable و Non-sargable
بررسی عملیات Seek Predicate و Predicate
(Table Value Parameter (TVP و درج دسته ای
آشنایی با Window Function و نکات مرتبط با کارایی این توابع
طراحی SP بهینه جهت فرم های جستجو دارای تعداد پارامتر زیاد
مهمترین نکات افزایش کارایی در SQLSERVER
جداول موقت در Sqlserver
تنظیمات Tempdb و رفع مشکل Contention
ایجاد فایل های لاگ و دیتا در یک دیتابیس
File group و افزایش کارایی دیتابیس
فعال سازی Instant File Initialization
شبیه سازی محیط عملیاتی
معرفی ابزار جهت مانیتور کارایی کوئری ها و سرور (Apex - Idera)
در پایان این دوره آموزشی، متناسب با مهارت کسب شده و از طریق آزمون، از دانشجویان دعوت به کار صورت می گیرد.
نام دوره: Query Performance Tuning
پیش نیاز دوره: آشنایی با طراحی دیتابیس و زبان T-Sql(طراحی کوئری)
ظرفیت کلاس: 10 نفر، اولویت با افرادی است که زودتر ثبت نام کنند.
شروع دوره: نیمه دوم آذرماه 98
محل دوره: اصفهان، خیابان آتشگاه، چهار راه قدس، کوچه شهید جوادی، شماره 62، پلاک 1802
ساعت دوره: جهت اطلاع از جزییات بیشتر با آموزشگاه تماس حاصل نمایید(ساعات تماس 15 الی 20)
تلفن آموزشگاه: 09039970652
مدرس: محسن بندامیر