رفتن به نوشته‌ها

دسته: Software

Explain در MySQL و بهبود کوئری- قسمت اول

بهبود کارایی یک App بسته به شرایط می‌تواند راهکار‌های متفاوتی داشته باشد و در شرایط مختلف نیازمند روش‌های تحلیل مختلف است اما یکی از رایج‌ترین سناریوها برای بهبود سرعت پاسخگویی app ها بهینه‌سازی کوئری‌هایی است که از دیتابیس می‌پرسند، روشی که من معمولا برای این گونه بهینه‌سازی استفاده می‌کنم معمولا چنین گام‌هایی رو شامل میشه:

  1. مشاهده نیاز به بهبود کارایی، (سری که درد نمی‌کنه رو دستمال نمیبندند…نه؟)
  2. پیدا کردن کوئریی که زمانش قابل کاهشه
  3. تحلیل کوئری و لیست کردن راهکار‌های بهبود کوئری
  4. تست کردن راهکارها به ترتیب با کمترین هزینه اجرا و بیشترین تاثیر

در این مجموعه از پست‌ها میخوایم راجع به مرحله سوم صحبت کنیم، یعنی یکی از روش‌های تحلیل کوئری که استفاده از EXPLAIN در MYSQL است.(البته تمام RDBMS‌ها تا جایی که اطلاع دارم دستور مشابه‌ای دارند)

در این پست قصد داریم روی چند تا کوئری مختلف Explain رو اجرا کنیم و خروجی رو بررسی کنیم. منبع مطالبی که عنوان می‌کنم در داک رسمی MySQL در آدرس اینجا و اینجا است، در صورت نیاز به توضیحات دقیق‌تر و بیشتر توصیه می‌کنم حتما داک رو با دقت مطالعه کنید.

قواعد ۱۲گانه ساخت SaaS – قسمت اول codebase

این روز‌ها بیشتر نرم‌افزار‌ها به عنوان یک SaaS یا Software as a Service طراحی می‌شوند، یعنی یک آدرسی روی اینترنت که روی یک پروتکلی مثل HTTP یک خدمتی رو به کاربرانش ارائه میده، مثل انواع سرویس‌هایی که گوگل در اختیار کاربرانش قرار میده.
حدس می‌زنم شما به عنوان مهندس نرم‌افزار یا تا به حال چنین نرم‌افزار‌هایی طراحی کردید یا نرم‌افزاری طراحی کردید که نقش کلاینت رو برای چنین سرویسی بازی می‌کنه(مثل یک اپ اندرویدی یا یک اپ وبی)، توی این سری از پست‌ها میخوام در مورد یک متدولوژی توضیح بدم به نام ۱۲-Factors app که یک سری بایدها و نباید‌ها در مورد طراحی و پیاده‌سازی SaaSها ارائه میده که حاصل سال‌ها تجربه طراحان این متدولوژی هستش.
این مجموعه بلاگ پست شامل ترجمه آزاد از متن اصلی هستش به علاوه توضیحات یا تجربیاتی که خودم در مورد هر کدوم از اون قواعد داشتم، اگر مایل بودید می‌تونید متن اصلی این متدولوژی رو در آدرس https://12factor.net مطالعه کنید.
ضمنا لازمه که هشدار بدم این قواعد وحی منزل نیست، بعضی وقتا رعایت کردن بعضی از این اصول باعث افزایش پیچیدگی نرم‌افزار میشه و فوایدی که براتون به ارمغان میاره اصلا مورد نیاز شما نیست!

در قسمت اول قصد داریم راجع به codebase یا همون کد نرم‌افزار صحبت کنیم، این که چطور باید نگه‌داری بشه، چه چیز‌هایی باید داخلش باشه چه چیز‌هایی نباید داخلش باشه و چطور باید بهش نگاه کرد.