بدترین زمان فراخوانی اطلاعات از بانک اطلاعاتی را چگونه محاسبه می کنید؟


#1

با درود خدمت دوستان و اساتید محترم . شما فکر کنید یک کوآری ساده دارید که کلا در آن ۲ الی ۳ سلکت انجام می شود؟

حال چند سوال برای بنده پیش امده

۱. بر اساس چه استانداردی می گویید سرعت فراخوانی داده از بانک اطلاعاتی خوب است یا خیر؟
۲. چطور قبل از پروداکشن این مورد را در مقیاس بزرگ چک می کنید ؟

بانگ اطلاعاتی به صورت مثال : postgresql

به صورت مثال بنده یک درخواستی رو به وب سرویسم می فرستم که در آن درخواست دو بار به دیتابیس سلکت می شود ۸۵ms طول می کشد وب سرویس پاسخ بدهند واگر بخواهیم به تنهایی فقط بانک اطلاعاتی بگویم ۵ms طول می کشد دیتابیس

  • هر جدولی حدود ۲۰ فیلد دارد که یا text هست یا بولین
  • در موارد متنی بیشتر از ۲۵۰ کارکتر نیز جا نگرفته

#2

:joy: :joy:


#3

ویرایش کردم تداخل پیدا نشه با فارسی :sweat_smile::sunglasses:


#4

برای تست نزدیک تر به محیط اصلی اول باید داده به اندازه نزدیک به محیط production در دیتابیس بگذاری بعد با استفاده از explain و explain analyze دقیقا عملکرد دیتابیس ببینی
زمان بندی خودت نشانگر هیچ چیز نیست
به نظر من خیلی خودتو درگیر سرعت query نکن الان تا زمانی که واقعا باید درستش کنی به optimazion وقتتو صرف نکن اکثر query ها هرگز نیاز به optimization ندارن و الان انرژی گذاشتن رو چیزی که مشکل نیست میتونه بدتر ضرر بزنه بهت
خلاصه اینکه optimization باید هدفمند و با حساب باشه و مشکلی و حل کنه وگرنه به بی راهه میری
مثلا باید بگی این query بیشتر از ۱ ثانیه طول میکشه و هدف optimization و میگذاریم که query
۵۰ درصد سریع تر بشه


#5

همانطور که سام عزیز فرمودید شاید بخاطر محیط دولپر باشه که خیلی منو حساس کرده . حتما باید یک نسخه اولیه ببرم روی یک سرور به حالت پروداکشن تست کنم

چون مثلا اینجا کوآری می زنم مثلا برای بار اول به دیتابیس بعد از ران شدن سرور می بنیم مثلا ۲۰۰ میلی ثانیه شده ولی همون کوآری با تکرار می شه ۸۰ میلی ثانیه با چند بار دیگه می شه ۵۰ میلی ثانیه . به همین منظور منو نسبت این موضوع حساس کرده

چون سیستم رو به صورت میکروسرویس هم دارم می نویسم البته هنوز به پروکسی نرسدیم که از کلاینت بگیره و به هر میکروسرویس بفرسته به هر صورت اینا هم این وسط وقت صرف می کنند …

بازم ممنون فقط در مورد مواردی که نام بردید یک تحقیق می کنم ببنیم می تونم چیزی پیدا کنم چون اولین بار هست مواردی مثل

به گوشم می خوره . اگر این سری ابزار ها (البته اگر ابزار باشه ) محیط واقعی رو کمی شبی سازی می کنند خیلی خوبه. فکر کنیم من همیشه موارد کوچیک رو تست می زنم و هیچ شبی سازی هم ندارم که اگر یک روز ترافیک تبلیغات بیارم تو اپم چه اتفاقی می افته ؟ تمام هزینه تبلیغاتم بخاطر اینکه سرویس down هست بخاطر شبی سازی نشده از بین می ره چون من پیشبینی نکردم که اگر ترافیک ۱۰ برابر بشه چه اتفاقی می افته


#6

EXPLAIN
در خوده postgresql هستش و جلو هر query بنویسی plan و مقدار زمان هر قسمت query نشون میده
۲۰۰ milisecond اصلا مهم نیست تو production

این سایت هم بصورت گرافیکی explain نشون میده
https://explain.depesz.com/


#7

بدترین زمان فکر کنم حدود ساعت … ممم فکر کنم متوجه سوال نشدم :thinking: