PDA

View Full Version : سوال: بهینه سازی سرعت کوئری ها در EF



InvBoy01001
دوشنبه 21 اردیبهشت 1394, 10:48 صبح
سلام
دوستان من تازه شروع کردم از entity توو کد استفاده کنم
ولی دیتابیس من (sql server 2012) زیادی سنگین شده و search و insert و ... از نظر زمانی کند شده
دوستان میخواستم بدونم که میشه راهنمایی کنید من چی کار کنم؟
ممنون

SabaSabouhi
دوشنبه 21 اردیبهشت 1394, 10:57 صبح
سلام
دوستان من تازه شروع کردم از entity توو کد استفاده کنم
ولی دیتابیس من (sql server 2012) زیادی سنگین شده و search و insert و ... از نظر زمانی کند شده
دوستان میخواستم بدونم که میشه راهنمایی کنید من چی کار کنم؟
ممنون

سلام
باید دیتابیس رو بررسی کن، ممکنه با اضافه‌کردن اندیس مشکلت حل بشه، شاید هم نیاز به تغییر ساختار داشته باشه.
شاید هم مشکل Server مربوطه باشه. روی دیتابیس‌های خیلی بزرگ، تعداد و سرعت پردازنده‌ها و میزان حافظه تاثیر مهمی تو سرعت داره.
بدون دیدن ساختار دیتابیس نمی‌شه نظر داد.

صبا صبوحی

InvBoy01001
دوشنبه 21 اردیبهشت 1394, 11:10 صبح
ممنون
من دیتابیسمو معمولی ساختم
131103
همون طور که گفتم من زیاد وارد نیستم
ممنون میشم ساده توضیح بدید

ali_72
دوشنبه 21 اردیبهشت 1394, 11:21 صبح
سلام

چیزی که خود من رعایت میکنم ایناست:
1- اول اینکه تا toList استفاده نکنی در واقع کوئری به پایگاه داده داده نشده پس تمام شرط ها قبل از ارسال دستور باید داده شده
2- از صفحه بندی استفاده کنیم در این صورت ما همیشه تعداد خاصی رکورد از پایگاه داده می گیریم نه تمام رکوردها رو
3- از ASNoTraking قبل toList استفاده کنیم که دلیل استفاده مفصله
4- از لیزی لودینگ در ef حتما استفاده کنیم
5- فیلدهایی که نیاز دارید select شه نه تمام اطلاعات جدول
6- بهتره از viewmodel استفاده کنی از کلاس اصلی جدول استفاده نکنیم

SabaSabouhi
دوشنبه 21 اردیبهشت 1394, 11:23 صبح
سلام
این جدول چند سطر اطلاعات داره؟
آیا از Express Edition استفاده می‌کنی یا سرور جداگانه داری؟
سرعت و تعداد پردازنده‌ی سرور چطور هست؟ و میزان حافظه سرور
آیا جدولت Trigger داره؟

برای Insert آیا چند جدول رو توی یه Transaction به روز می‌کنی یا فقط تو همین جدول مقدار وارد می‌کنی؟

خواهش می‌کنم با دادن اطلاعات کافی به من و دیگر دوستان کمک کن تا بتونیم مشکل رو حدس بزنیم.

صبا صبوحی

InvBoy01001
دوشنبه 21 اردیبهشت 1394, 11:38 صبح
سلام
این جدول چند سطر اطلاعات داره؟
آیا از Express Edition استفاده می‌کنی یا سرور جداگانه داری؟
سرعت و تعداد پردازنده‌ی سرور چطور هست؟ و میزان حافظه سرور
آیا جدولت Trigger داره؟

برای Insert آیا چند جدول رو توی یه Transaction به روز می‌کنی یا فقط تو همین جدول مقدار وارد می‌کنی؟

خواهش می‌کنم با دادن اطلاعات کافی به من و دیگر دوستان کمک کن تا بتونیم مشکل رو حدس بزنیم.

صبا صبوحی
جدول من 183676 تا سطر داره
برای insert توو 2 جدول مقدار دهی میشه

ali_md110
دوشنبه 21 اردیبهشت 1394, 14:12 عصر
جهت تکمیل گفته های ali_72 وهله سازی اضافی دیتاکانتکس کاهش بدید و یکی از راههاش الگویSession/Context Per Request هست یعنی بگارگیری یک وهله از واحد کاری یا دیتاکانتکس در برنامه به نحوی که چند تراکنش با یک وهله سازی دیتاکانتکست برنامه انجام بشه به Unit of work هم مشهور هست
و نکته 4 اینکه lazy loading همیشه مفید نیست و بجای اون Eager Loading میتونه سرعت بالاتر ببره چون lazy باعث میشه بجای یک کوئری چند کوئری به دیتابیس ارسال بشه

RmeXXXXXXXXX
دوشنبه 21 اردیبهشت 1394, 23:04 عصر
http://www.dotnettips.info/learningpaths/details/2

nunegandom
سه شنبه 22 اردیبهشت 1394, 03:03 صبح
به Entity خوش اومدی
از Lazy Loading استفاده کن مشکلت حلم میشه