| کانال توسعهدهندگان وب |
عکس
عکس
در نمونهکد بالا در نسخهی اول هر درخواست HTTP یک connection جدید به دیتابیس باز میکند و با هر کوئری یک round-trip اضافه به MySQL میزند. این الگو هم روی Performance (بهخصوص در ترافیک بالا) اثر منفی دارد، هم ریسک Connection Exhaustion را بالا میبرد. در نسخهی بهینه با استفاده از Connection Pooling و اجرای کوئریهای وابسته در قالب یک Transaction، هم تعداد round-tripها کم شده، هم ثبات دادهها حفظ میشود.
اگر در یک Web API Node.js با mysql2 یا هر Driver مشابه کار میکنید، بهتر است به جای باز کردن connection در هر handler، در لایهی Infrastructure یک pool مشترک بسازید و در handlerها فقط از آن pool borrow کنید؛ این کار هم مقیاسپذیری سرویس را بهتر میکند، هم در شرایط ترافیک سنگین فشار روی دیتابیس و OS را کاهش میدهد.
برای مطالعهی بیشتر دربارهی Connection Pooling در Node.js میتوانید مستندات رسمی mysql2 را ببینید.
🔖 #Web #وب #Frontend #Backend
👤 Developix
💎 Channel: @DevelopixWeb
6 · 1.2K ·