انجمنهای فارسی اوبونتو
کمک و پشتیبانی => برنامهسازی => نویسنده: sajadspeed در 16 شهریور 1401، 12:44 قظ
-
سلام دوستان ببینید فرض کنید یه جدولی در یک دیتابیس رابطهای مثل Mysql داریم و برای واکشی اطلاعات این جدول، به دلیل زیاد بودن رکوردهای آن مجبور میشویم در لایه نرمافزار به شکل محدود شده درخواست اطلاعات به سمت دیتابیس ارسال کنیم. خوب این خیلی بدیهی است و همیشه این کار انجام میشه، مثل Pagination توی وب یا لیستهای بینهایت اپلیکیشنها، سوال اینجا پیش میاد که دقیقا چه مقدار واکشی رکوردها در هر درخواست مناسبترین عدد میتواند باشد؟ 10 تا؟ 20 تا؟ چطوری میشه مناسبترین عدد انتخاب کرد که بهترین گزینه از لحاظ پرفورمنسی باشه؟
عوامل تاثیرگذار دیگه مثل UX اینا رو کاری نداریم فعلا، در صفحات وب که معمولا به صورت صفحهبندی است شاید زیاد این عدد مهم نباشد ولی خوب در یک لیست بینهایت که کاربر ممکن دیوانهوار اسکرول کنه یا وقت زیادی رو برای مشاهده محتوای آن لیست صرف کنه، خیلی مهم میشه که LIMIT انتخاب بشه که هم تعداد درخواستها به سرور کمتر کنه و هم به دیتابیس فشار نیاد و برنامه هم روون و خوب اجرا بشه.
ممنون میشم تجربیاتتون به اشتراک بگذارید.
-
یک عدد کلی وجود نداره و بستگی به مواردی از لحاظ نوع کاربرد، قدرت سرور، تنظیمات سرور، نوع کشها و ... داره.
-
خوب دقیقاً، شاید من مینوشتم `نحوه محاسبه` بهتر منظورم میرسوند، الآنم دنبال عدد ثابت نیستم، دنبال شیوه رسیدن به تعداد مناسب، بر اساس همین فاکتورهایی که جنابعالی بهش اشاره کردید هستم.
-
یه برنامه بنویس که دائما اینکار رو انجام بده. بعد با تغییر مقداری که می خونی می تونی پرفرمنس رو ببینی و به این بررسی که بر اساس سخت افراز و ساختار دیتابیس تو، چه عددی تقریبا بهینه است.﴾
-
خوب همیشه همینطور بوده و از روی تجربه، شخص اون عدد انتخاب میکنه. خود بنده اول زمان واکشی اطلاعات به شکل دستی در چند تا عددی که به نظرم مناسب میاد تست میکنم و با توجه به محدودیت رم اگه داشته باشم سعی میکنم این اعداد پایینتر باشن، یا اگه محدودیت رم نبود و بیشتر روی پردازنده و کمتر درگیر کردن اون تمرکز داشتم، تعداد بالاتر میبرم.
البته طبیعی است که همیشه اول کار با یک تعداد مناسبی شروع میشه و در طول کار همانطور که شما عرض کردید تغییر پیدا میکنه.
این عدد اینجا برام اینقدر حساس شده که قراره از یک سرور تقریبا ضعیف به دلیل محدودیت منابع مالی و... بیشترین بهرهوری را داشته باشیم.
الان به فکر این افتادم یه اسکریپت بنویسم که با توجه به این چند تا فاکتور و تست کردن تمام این عوامل در عمل، یک بازه کاملا مناسب با بهرهوری بالا پیشنهاد بده، البته هنوز یه سری عوامل انسانی و اینکه شروع این عدد از روی تجربه خود برنامهنویس باشه یا نه واسم گنگه و باید روش فکر بشه، ولی فکر کنم بشه ;D به نظرتون میتونه اینقدر مفید باشه که بهتر از راهحلهای تجربی و تستهای دستی جواب بده؟