اکبر احمدی سرای
اکبر احمدی سرای
خواندن ۲ دقیقه·۲ ماه پیش

بهینه‌سازی عملکرد در Entity Framework Core با استفاده از عملیات Bulk

Entity Framework Core (EF Core) یکی از محبوب‌ترین ORM‌ها برای توسعه‌دهندگان .NET است که امکان کار با پایگاه داده‌های رابطه‌ای را به‌صورت شی‌گرا فراهم می‌کند. با این حال، در برخی مواقع نیاز داریم که عملیات روی مجموعه داده‌های بزرگ به‌صورت بهینه‌تری انجام شود. در این مقاله، روش‌های مختلف به‌روزرسانی داده‌ها در EF Core را بررسی می‌کنیم و به تفاوت بین روش عادی (Normal) و روش دسته‌ای (Bulk) می‌پردازیم.


عملیات ویرایش - روش عادی (Normal)

در روش عادی، ابتدا تمامی رکوردهای مورد نظر از پایگاه داده بارگذاری می‌شوند، سپس تغییرات لازم روی هر رکورد اعمال می‌شود و در نهایت تغییرات ذخیره می‌شوند. کد این روش به صورت زیر است:

بهینه‌سازی عملکرد در Entity Framework Core با استفاده از عملیات Bulk
بهینه‌سازی عملکرد در Entity Framework Core با استفاده از عملیات Bulk

معایب روش عادی:

  1. بارگذاری داده‌های تطبیق‌یافته در حافظه: تمام رکوردهای مورد نظر ابتدا به حافظه منتقل می‌شوند که این کار مصرف حافظه بالایی دارد.
  2. ویرایش رکوردها به‌صورت تک‌به‌تک: هر رکورد جداگانه ویرایش می‌شود که زمان‌بر است.
  3. ایجاد چندین کوئری SQL: متد SaveChangesAsync باعث تولید چندین کوئری برای به‌روزرسانی رکوردها می‌شود.
  4. عملکرد ضعیف‌تر برای مجموعه داده‌های بزرگ: این روش برای دیتاست‌های بزرگ بهینه نیست.
  5. مصرف بالای حافظه و round-trip بیشتر: این فرآیند نیاز به تبادل مکرر با پایگاه داده دارد و مصرف حافظه را بالا می‌برد.

عملیات ویرایش - روش دسته‌ای (Bulk)

برای بهینه‌سازی، می‌توان از عملیات دسته‌ای (Bulk Operation) استفاده کرد. در این روش، به‌جای بارگذاری رکوردها در حافظه، به‌روزرسانی به‌صورت مستقیم در پایگاه داده انجام می‌شود. به‌عنوان مثال:
مزایای روش دسته‌ای:


  1. ویرایش مستقیم در پایگاه داده: بدون نیاز به بارگذاری داده‌ها در حافظه.
  2. به‌روزرسانی یک‌باره: یک کوئری SQL واحد برای تمامی رکوردها ارسال می‌شود.
  3. عملکرد بسیار سریع‌تر: این روش به‌ویژه برای مجموعه داده‌های بزرگ بسیار سریع‌تر است.
  4. مصرف حافظه کمتر: چون داده‌ها در حافظه بارگذاری نمی‌شوند، مصرف حافظه به حداقل می‌رسد.
  5. فقط یک round-trip به پایگاه داده: نیازی به چندین بار ارسال و دریافت داده نیست.
  6. بدون نیاز به ردیابی تغییرات (Change Tracking): این امر نیز باعث بهبود عملکرد می‌شود.

مقایسه بین دو روش:

با توجه به مثال‌ها، روش Bulk به‌ویژه برای مجموعه داده‌های بزرگ، سرعت و بهینه‌سازی بیشتری به همراه دارد. هرچند در پروژه‌های کوچک، روش عادی نیز ممکن است به‌خوبی کار کند، اما برای پروژه‌هایی با مقیاس بزرگ‌تر، روش دسته‌ای توصیه می‌شود.

نتیجه‌گیری

بهینه‌سازی عملیات‌های مربوط به پایگاه داده یکی از جنبه‌های مهم در توسعه نرم‌افزارهای بزرگ است. استفاده از عملیات دسته‌ای (Bulk Operations) در EF Core می‌تواند تأثیر زیادی در عملکرد و کارایی سیستم داشته باشد. در این مقاله، روش‌های مختلف و مزایا و معایب هر کدام را بررسی کردیم.

برای آشنایی بیشتر و مشاهده نحوه پیاده‌سازی عملی این مفاهیم، می‌توانید ویدیوی آموزشی من در یوتیوب را از لینک زیر مشاهده کنید:

مشاهده ویدیوی آموزشی



entity framework core
توسعه دهنده ارشد نرم افزار
شاید از این پست‌ها خوشتان بیاید