@ افزایش کارایی و سرعت دیتابیس
Performance and Tuning
سرعت واکشی داده ها، انتقال و هرگونه عملیات در بانک های اطلاعاتی شما را با هر حجم داده، افزایش خواهیم داد
افزایش سرعت بانک اطلاعاتی با تنظیمات خاص بدون نیاز به ارتقای سخت افزاری (برای بالا بردن سرعت نیاز به سخت افزارهای پیچیده نخواهد بود)
مشاوره در مورد سخت افزار ها و تجهیزات مورد استفاده شرکت یا سازمان و اعمال تنظیمات برروی آنها به منظور تاثیر آنها بر کارایی و استفاده از ویژگی buffer pool extension برای غلبه برمشکلات کمبود حافظه.
اعمال تنظیمات مناسب برروی ماشینهای مجازی مورد استفاده.
استفاده از روش های بهینه برای ذخیره مقادیر تاریخ و نمایش آن به صورت تاریخ شمسی
تنظیمات صحیح بانک اطلاعاتی TempDB به منظور افزایش کارایی دیتابیس
استفاده از جداول و TVPهای Memory Optimized برای افزایش سرعت اجرای کوئری ها در حد یک میکروثانیه.
افزایش کارایی در SQL Linux
مانیتورینگ و Tuning در SQL Server با استفاده از برنامه ها و ابزارهای حرفه ای زیر صورت خواهد گرفت:
برنامه Performance Monitor
برنامه SQL Server Profiler (به صورت Server Side)
برنامه Apex SQL Monitor
برنامه Extended Events
استفاده از ویژگی Query Store جهت آنالیز کندی سیستم
1.تنظیمات پایه
اعمال تنظیمات مناسب برای data fileها و log fileها.
تنظیمات ضروری سیستم عامل برای دیتا فایل ها
انجام تنظیمات مربوط به Instant file initialization
استفاده از تکنیک های مناسب برای استفاده از انواع data typeها
استفاده و یا تغییرات مناسب در انواع کلیدها برای تاثیر آن برری performance نرم افزار
2.تنظیمات ایندکس ها
ایجاد ایندکس های جدید (clustered, non-clustered) و یا ایجاد تغییرات در ایندکس های موجود و مانیتورینگ مستمر ایندکس ها جهت حذف ایندکس های تکراری و یا بلا استفاده و آنالیز جهت ایجاد ایندکس های جایگزین جهت بهبود کارایی و افزایش سرعت بانک اطلاعاتی و جلوگیری از بوجود آمدن Deadlock و کاهش مدت زمان Blocking.
اصلاح کوئری ها بر اساس ایندکس های موجود و انتخاب کلید ایندکس مناسب و همچنین استفاده به موقع از حالتهای دیگر ایندکس مانند filtered, covered, hypothetical,….. و آپشن های پیشرفته مربوط به آن. (استفاده از index viewها)
جلوگیری از اعمال تاثیر منفی ایندکس ها بر کارایی
ایجاد ColumnStore index ها برروی جداولی با workload و حجم رکوردهای بالا که سرعت کوئری هایی که برروی این جداول اجرا می شوند را به شدت بالا ببرد. (تعبیه آنها در data warehouse در طی پروسه BI به شدت کارایی خواهد داشت)
تنظیمات مربوط به Full Text Index ها و بکارگیری شیوه صحیح استفاده از آنها درکوئری ها در هنگام کار با LOB.
راه اندازی full text search به منظورپشتیبانی از جستجو در متون به زبان فارسی و پیکربندی به صورتی که سرعت جستجو در میان متون فارسی و انگلیسی افزایش یابد.
3.Plan Related
تجزیه و تحلیل دقیق Execution Plan جهت اجرای مناسب و بهینه کوئری ها با استفاده از SSMS و ابزارجانبی Apex SQL Plan.
تحلیل عمیق اپراتورها در پلن اجرایی و بررسی (درصورت لزوم) جهت هدایت کوئری ها به سمت پلن اجرایی Parallel.
ایجاد Statistics در کوئری ها و ایندکس ها و به رو رسانی آنها و درنتیجه افزایش سرعت بسیار بالا برای اجرای کوئری ها و پروسیجرها. همینطور جلوگیری از تاثیرات منفی استات ها روی بانک اطلاعاتی و بکارگیری filtered statistics.
حل مشکل Parameter Sniffing و مدیریت Plan cache.
استفاده از ویژگی Adaptive Query Processing برای بهبود پردازش و ایجاد پلن اجرایی مناسب.
4.Data Manipulating
ایجاد file group ها و بهره بردن از مزایای آن و همچنین گرفتن بکاپهای دوره ای از فایل گروه های خاص
ذخیره و بازیابی بهینه داده های BLOB ها و جداول در Filestream ها
استفاده از فایل گروه های filestream و پیکربندی و مدیریت آنها جهت افزایش کارایی بانک اطلاعاتی همچنین بکارگرفتن filestream در پروژه های .NET
بکارگیری File Tableها در SQL Server و پروژه های .NET
انجام عملیات فشرده سازی (data compression) روی کوئری ها ،ایندکس ها و همچنین عملیات بکاپ و ریستور برای کارایی و پرفورمنس هرچه بیشتر و کمک به وجود I/O کمتر و کاهش درگیرشدن حافظه.
بکارگیری روش های مختلف جهت کاهش Fragmentation در SQL Server و ایندکسها از جمله Rebuild کردن آنلاین ایندکس ها در مواقع لازم. انجام مانیتورینگ اصولی Fragmentation.
رفع مشکلات استفاده از Triggerها و در برخی مواقع جایگزین کردن آنها با کوئری های دیگر به دلیل بوجود نیامدن fragmentation .
بکارگیری انواع تکنیک های پارتیشن بندی در SQL Server و پارتیشن کردن ایندکس ها و استفاده از ویژگی Incremental statistics برای این منظور.
5.مدیریت منابع
پیکربندی Resource Governor جهت تخصیص منابع مشخص و محدود به کاربران و Sessionهای حوزه های مختلف و در برخی موارد محدود کردن استفاده از منابع برای یکسری از کاربران یا سرویس ها.
ارائه راه کارهای مناسب در ارتباط با کاهش Wait به ازای Session ها و کوئری ها.
رفع مشکلات Deadlock و همزمانی و کاهش آن.
طراحی استفاده از transaction در برنامه ها. (استفاده از مزایای اجرای کوئری ها به صورت تراکنشی)