سلام دوستان ببینید فرض کنید یه جدولی در یک دیتابیس رابطهای مثل Mysql داریم و برای واکشی اطلاعات این جدول، به دلیل زیاد بودن رکوردهای آن مجبور میشویم در لایه نرمافزار به شکل محدود شده درخواست اطلاعات به سمت دیتابیس ارسال کنیم. خوب این خیلی بدیهی است و همیشه این کار انجام میشه، مثل Pagination توی وب یا لیستهای بینهایت اپلیکیشنها، سوال اینجا پیش میاد که دقیقا چه مقدار واکشی رکوردها در هر درخواست مناسبترین عدد میتواند باشد؟ 10 تا؟ 20 تا؟ چطوری میشه مناسبترین عدد انتخاب کرد که بهترین گزینه از لحاظ پرفورمنسی باشه؟
عوامل تاثیرگذار دیگه مثل UX اینا رو کاری نداریم فعلا، در صفحات وب که معمولا به صورت صفحهبندی است شاید زیاد این عدد مهم نباشد ولی خوب در یک لیست بینهایت که کاربر ممکن دیوانهوار اسکرول کنه یا وقت زیادی رو برای مشاهده محتوای آن لیست صرف کنه، خیلی مهم میشه که LIMIT انتخاب بشه که هم تعداد درخواستها به سرور کمتر کنه و هم به دیتابیس فشار نیاد و برنامه هم روون و خوب اجرا بشه.
ممنون میشم تجربیاتتون به اشتراک بگذارید.
@hesammousavi
به نظرم به هیچ وجه نمیشه به یک عدد عمومی و استاندارد برای تعداد واکشی رکوردها در هر بار درخواست دست پیدا کرد. چون تعداد تنها یک پارامتر هست و کلی پارامتر دیگه در این تصمیم گیری دخیل هستند. مثلا اینکه:
برای آماده کردن هر ردیف رکورد چه مقدار پردازش باید روی اطلاعات انجام بشه؟
چند تا کوئری و سابکوئری برای گرفتن relation هاش باید اجرا بشه؟
هر رکورد چه تعداد فیلد (ستون) داره؟ سر و کار ما با چند تاشون هست و چجوری لودشون میکنیم؟
نوع (type) این فیلدها چیه؟ مثلا خیلی فرقه بین int و varchar
آیا بصورت صحیح index گذاری شدند یا خیر؟
منابع سختافزاری خودتون و میانگین مخاطبینتون به چه صورت هست؟
به همین خاطر به نظرم منطقی ترین کار تست و آزمون و خطا باشه. به این صورت که اول ببینید عدد رایج و مرسوم در نمونه های مشابه چنده. بعد با چند بار آزمون و خطا و آنالیز نتایج مصرف منابع مثل RAM و همچنین زمان لود و .... و در نهایت با بالا و پایین کردنش به یک عدد بهینه خواهیم رسید.
فارغ از بحث فنیش ملاحظات UX هم اینجا مطرح میشن که البته خودتون هم اشاره کردید و در مواقعی حتی اگر برای ما ۲۰۰ ردیف رکورد در هر بار درخواست هم امکان پذیر باشه اما باعث پایین اومدن نمره تجربه کاربری و سختی کار کاربران میشه.
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟