چه زمانی و با چه روشی از preload استفاده کنیم در Ecto

درود خدمت شما دوستان و اساتید محترم.
یک مطلبی رو امروز از خبرنامه هفتگی الکسیر ارسال شد با تیتر Preload, or not preload, that is the question
و همینطور خبرنامه رو می تونید در لینک زیر پیدا کنید (البته برای این هفته است)

در این مطلب توضیح داده است که چه زمانی از پریلود استفاده کنیم و چه زمانی نه و همینطور در یک کوآری بیاریم یا در ۵ کوآری

خوب من این مطلب رو خوندم برای چندین سوال پیش اومده یک سری رو از دوستان پرسیدم راهنمایی کردن و خوب اگر اساتید مثال ساده تری دارند به فارسی بیان کنند که بهتر می شه

سوال اول : طبق مطلب بالا چه زمانی باید بیاییم preload را دریک query بنویسیم چه زمانی در ۵؟
سوال دوم: در زمانی که تبدیل به ۱ کوآری می شه سرعت بهتر و رم بیشتری رو مصرف می کنه حالا سوال اینجاست شما در کدام ساختار یا مکان کدام مدل را پیشنهاد می دهید.

بیشتر دنبال مثال می گردم تا درک بهتری پیدا کنم. به عنوان مثال

ما یک مطلب داریم که هزار تا کامنت داره و ۵۰۰ تا یوز شرکت کردند و هر مطلبی هم چندتا لایک داره!!! یک بلاگ ساده شما در این مثال چی پیشنهاد می دهید؟

1 Like

به طور کلی نمیشه گفت که چه زمانی باید preload کرد و چه زمانی نباید کرد به دیتا و ساختار جدول ها و دیتابیس مربوط میشه در متن بالا هم به همین دلیل همه تغییرات و محاسبه کرده
همیشه ببین query که داره اجرا میشه چیه دقیقا و بر اساس اون تصمیم بگیر
ایراد همه orm ها همینجاست . خیلی موقع ها با magic بیشتر کار دستت میدن

1 Like

درود خدمت سام عزیز . کاشکی نویسنده ابزار های تست خودشو برای سرعت و مصرف رم می گفت. یا شاید بنده ندیدم.

یعنی شما می فرمایید با همه توضیحات باز باید یک آزمون خطا انجام داد و روند مصرف و سرعت رو در این چند نوع فراخوانی و کوآری تست زد؟!!

1 Like

برای اکثر query های ساده نیاز نیست ولی وقتی چندین join داری و… همیشه ببین چه query هایی داره تولید میشه احتمال داره کار درست انجام نده
وقتی با sql خوب آشنا باشی query های بد و سریع متوجه میشی وقتی به log نگاه کنی

1 Like

بهترن ابزار logs میباشد :slight_smile:

بیشتر توضیح می دی توماج جان یا لینکی در این زمینه ؟

من با grep لاگ های دیتابیس و در dev چک میکنم واقعا ابزار خاصی نمیخواد فقط باید سعی کنی بین eager load و مدیریت حافظه یک تعادل منطقی بوجود بیاری

1 Like