دسته بندی ها
12:51 1401/06/21

خطای Connection attempt failed در Load میلیونها رکورد از دیتابیس توسط EF

مشخصات سوال کننده :
کاربر : mshosseini     امتیاز کاربر : 33     رتبه کاربر : 23
دسته بندی : Asp.net Core Entity Framework

به این سوال امتیاز بدهید    0
تعداد بازدید این سوال : 2801
3 نظر
saedbfd : کدی که برای فراخوانی اطلاعات از دیتابیس نوشتید هم قرار بدید

امتیاز کاربر : 1654   رتبه کاربر : 1   تاریخ ثبت : 12:57 1401/06/21
mshosseini : در انتهای سوال اضافه شد ، ممنون از پاسخ دهی و پشتیبانی سریعتون

امتیاز کاربر : 33   رتبه کاربر : 23   تاریخ ثبت : 01:02 1401/06/21
yasasemani : اگه هدف فقط نمایش اطلاعاته چرا از stored procedure استفاده نمی کنید سرعت خوانش اطلاعات از این طریق خیلی بالاتر میره

امتیاز کاربر : 6   رتبه کاربر : 80   تاریخ ثبت : 03:34 1401/06/21
ادامه نظرات ...
پاسخ دهنده : hamid_b 17:22 1401/06/21

استفاده از متد Take برای واکشی محدود اطلاعات در انتیتی فریم ورک

اما در مورد سوال شما، ببینید واکشی حدود 10 میلیون رکورد قطعا فشار زیادی به سرور و دیتابیس میاره و منابع سیستمی زیادی رو مصرف میکنه که باعث Crash کردن سیستم یا hang کردن سیستم به صورت طولانی میشه. اگر شما قصد دارید اطلاعاتتون رو نمایش بدید قطعا کاربر نیاز نداره به طور همزمان 10 میلیون رکورد رو ببینه.

بنابراین می تونید توسط دستور زیر مثلا 1000 رکورد آخر رو واکشی کنید و اگر کاربر نیاز داشت اطلاعات دیگه ای رو ببینه براش قابلیت جستجو بذارید و در هر بار جستجو هم نهایتا 1000 رکورد رو واکشی کنید.

List<Tbl_Data_Sim> sim09 = _context._data_SimUW.Get(a => a.Mobile == mobile, null, "").ToList().Take(1000);

 

استفاده از برنامه نویسی ناهمزمان Async

اگر فکر می کنید که عملیاتی دارید که ممکنه بار زیادی روی سرور بذاره و یا اطلاعات زیادی میخواید واکشی کنید برای جلوگیری از ایجاد مکث یا هنگ در سیستم می تونید تابع خودتون رو به صورت ناهمزمان تعریف کنید:

public async Task<IActionResult> Index()
{
   var myVar = _context.TableName.ToListAsync();
}

کد بالا به صورت نمونه نوشته شده. شما هم کافیه کدهاتون رو با توجه به دستورات بالا تغییر بدید.

 

به نظر خودم با توجه به اینکه می فرمایید حدود 10 میلیون رکورد دارید استفاده از Take بهتر باشه.

ضمنا بهتره سوالتون رو با جزییات کامل بپرسید و به نرم افزار یا آموزش دیگه ای ارجاع ندید چون ممکنه بازدیدکنندگان سوال شما اون آموزش رو ندیده باشن

ویرایش شده در دوشنبه 21 شهریور 1401 ساعت 17:22:58
به این پاسخ امتیاز بدهید    1
امتیاز: 510 رتبه: 4
برای ارسال پاسخ لطفا وارد حساب کاربری خود شوید.   ورود