TGViewer
جنگولرن جنگولرن @djangolearn_ir · 4.48K subscribers
Post #935 2.28K
✅بهینه سازی Query Performance : متد Only در ORM جنگو

از لینکدین آقای عموزاده

یکی از فعالیتهای روزمرهام برای محصولات این است که بخش Issues و Performance سرویس Sentry رو بررسی کنم و از لیست مشکلات Performance ای که Sentry تشخیص داده، موارد مهم رو پیدا و به تیم ارجاع بدم و گاهی اوقات هم خودم برم سروقت حل شون و یادگیری ام حفظ بشه. تو گزارش ها، endpoint و background task هایی داریم که Response time یا failure rate شون بیشتر از انتظاره و یا گاهی اوقات سرویس زیر بار کلاً از دست میره (504 میگیریم برای مثال). یکی از روش هایی که میشه برای حل این دست مشکلات استفاده کرد، محدود کردن انتخاب ستونها به اونایی که واقعاً نیاز هستند است. در ORM ها معمولاً ستونهای بیشتر به معنی مصرف منابع بیشتر است و میتونه Capacity و Response time سرویس/محصول را تحت تأثیر قرار بده. در Django یکی از ابزار هایی که برای بهبود Query ها استفاده میکنم متد only است. به این شکل که اول جایی که نتیجه قراره استفاده بشه (مثلاً Template، REST یا …) رو اول بررسی میکنم تا ببینم که چه تعداد از ستونها ضروری هستند و اونا رو به عنوان آرگومان به متد only میدم. بعد با کمک ابزار های مشاهده Query (مثل Debug toolbar یا مشابهش) نتیجه کار رو از نظر دیتابیس چک میکنم. نکته مهم این است که مطمئن باشیم همه ستونهای مورد نیاز رو به متد داده ایم، اگر متدی جای دیگه ای استفاده بشه،ORM مجبور میشه مجدد کوئری بزنه و از هدف اولیه دور میشیم. نکته بعدی اینکه در تجربه و کیس های کاری من، استفاده از این متد، بیشتر مواقع باعث تحول سرویس نشد،قدم مثبتی به جلو بود و خودش رو برای مثال در تهیه گزارش ها (جایی که تعداد زیادی iteration داشتیم) بیشتر نشون داد و اکثر مواقع تفاوت محسوسی نداشت (تفاوت رو با اندازهگیری زمان DB response time، مقدار مصرف حافظه و HTTP response time اندازهگیری کردم). تفاوت Query بدون و با استفاده از Only رو توی تصویر میتونین ببینید و امیدوارم یک ابزار مفید توی جعبه ابزارتون باشه. 🙂
لینک مستندات:
https://docs.djangoproject.com/en/6.1/ref/models/querysets/#django.db.models.query.QuerySet.only

تصاویر در نظرات پست
Django Project QuerySet API reference | Django documentation The web framework for perfectionists with deadlines.
  • 👏 8
  • ❤ 3
  • 👍 3
More from @djangolearn_ir
  1. Oct 11, 2026توی جنگو alias کاربردش چیه؟ این کوئری 1: products = Product.objects.alias( discounted_pric…
  2. Oct 11, 2026فرق only با defer چیه؟ یادتونه توی form ها و orm میشد از exclude کرد. کار exclude توی form…
  3. Oct 10, 2026توی جنگو با only میشه مقداری پرفورمنس رو بهتر کرد. عکسهارو ببین. وقتی از only استفاده کرده…
  4. Oct 8, 2026از @ever_code ، منم آخر همین پست یه چیز اضافه کردم. تو دوران هوش مصنوعی، نه تنها سرعت تولی…
  5. Oct 4, 2026بالاخره منم دارم DRF رو شروع میکنم که یاد بگیرم جنگو رو که یاد نگرفتیم، شاید اینو با ai یا…
  6. Oct 3, 2026این پست از @dotnet_internals جالب بود. با دقت بخونیدش آندری کارپتی (Andrej Karpathy) یه تو…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →