@ افزایش کارایی و سرعت دیتابیس

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 در برنامه ها. (استفاده از مزایای اجرای کوئری ها به صورت تراکنشی)