دسته بندی ها
20:12 1399/08/19

افزایش سرعت برنامه های WPF سی شارپ در کار با Database

مشخصات سوال کننده :
کاربر : mojtabahakimian     امتیاز کاربر : 155     رتبه کاربر : 10
دسته بندی : WPF سی شارپ Entity Framework Sql Server

به این سوال امتیاز بدهید    0
تعداد بازدید این سوال : 3003
پاسخ دهنده : fateme 21:59 1399/08/20

افزایش سرعت دیتابیس در Sql Server

ببینید شما برای افزایش سرعت عملیات مربوط به دیتابیس بیشتر کاری که باید انجام بدید این هست که دیتابیس خودتون رو Tuning کنید. چون در سمت اپلیکیشن کار زیادی نیست برای انجام. (البته به شرطی که کدهای مخرب ننوشته باشید)

 

کارهایی که برای افزایش سرعت دیتابیس باید انجام داد

 

database tuning

در مبحث دیتابیس موضوعی به نام Database Tuning وجود دارد. در این مبحث عواملی که باعث افزایش سرعت و کارایی دیتابیس می باشد مطرح می شود. برخی از مهمترین موضوعاتی که باعث افزایش سرعت دیتابیس می شود به شرح زیر می باشد.

  • ایندکس گذاری به صورت اصولی روی فیلدها. دقت کنید که اگر ایندگس گذاری به صورت صحیح انجام نشود خود این موضوع باعث کندی دیتابیس می شود. معمولا بر روی فیلدهایی که احتمال سرچ بیشتری در آنها می باشد ایندکس گذاری می شود.
  • Rebuild یا ReOrgnize کردن ایندکس ها به صورت منظم و دوره ای. ایندکس ها در واقع صفحاتی هستند که برای دسته بندی و نظم دادن به ردیف های دیتابیس مورد استفاده قرار می گیرد. اما بعد از مدتی خود این صفحات دچار بهم ریختگی و نامنظمی می شود. (Fragment) بنابراین باید با تعریف Job هایی ایندکس ها را Rebuild یا Reorgnize کرد. اگر درصد بهم ریختگی یا Fragment کمتر از 40 درصد باشد Reorgnize و اگر بالای 40 درصد بود باید ایندکس ReBuild شود.

Rebuild کردن ایندکس ها

 

  • نرمال سازی دیتابیس تا سطح 4nf. داشتن یک دیتابیس Normal به افزایش سرعت کمک چشمگیری می کند. تعریف کلید های خارجی و اصلی، عدم وجود اطلاعات تکراری، جلوگیری از آنومالی و ... از قواعد پایه ای دیتابیس نرمال می باشد.
  • فشرده سازی اطلاعات. یکی از موضوعاتی که بعد از مدتی شما را دچار مشکل می کند حجم بالای اطلاعات می باشد. اگر شما دارای یک دیتابیس با حجم بسیار زیادی از اطلاعات هستید علاوه بر اینکه حجم دیتابیس شما بسیار بالا می رود سرعت کوئری های شما هم خیلی افت پیدا می کند. بنابراین باید توسط روشهایی اطلاعات را فشرده کنید. یکی از دستوراتی که به فشرده سازی اطلاعات کمک می کند عملیات Shrink می باشد.
  • استفاده از FTS. گاهی اوقات حجم داده های شما بسیار بالا می رود. به عنوان مثال ممکن است جداول شما چند میلیون رکورد داشته باشند. در این مواقع اجرای یک کوئری بسیار ساده هم میتواند بسیار زمانبر باشد. بنابراین در این موارد می توانید از روش Full Text Search استفاده کنید. در این روش سرعت کار با دیتابیس بسیار بالاتر می باشد.
  • پارتیشن بندی جداول. اگر حجم داده ها و جداول شما بسیار بالاست یکی دیگر از روشهایی که میتوانید از آن برای نگهداری جداول استفاده کنید پارتیشن بندی جدول می باشد. در این روش جدول با حجم بسیار بالا به چندین فایل کوچکتر شکسته می شود و به همین خاطر سرعت اجرا کوئری ها افزایش می یابد.

Start and Use the Database Engine Tuning Advisor

ببینید مواردی که در بالا گفته شد همه با هم استفاده نمی شود. مثلا ممکنه شما بعد از مدتی نیاز به فشرده سازی اطلاعات پیدا کنید اما دلیلی نیست که جداولتون رو پارتیشن بندی کنید یا اینکه از FTS استفاده کنید. ضمنا موارد بالا همگی در سمت Sql Server می باشد.

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

  • استفاده کمتر از دستور SaveChange
  • استفاده کمتر از کتابخانه mapper
  • استفاده کمتر از متغیرهای String و کار کردن با StringBuilder ها
  • استفاده از DataReader به جای DataSet وقتی فقط نیاز به خواندن اطلاعات دارید نه ویرایش یا ثبت
  • نوشتن دستورات به صورت async یا ناهمزمان
به این پاسخ امتیاز بدهید    1
امتیاز: 1617 رتبه: 2
برای ارسال پاسخ لطفا وارد حساب کاربری خود شوید.   ورود