قالب وردپرس قالب وردپرس آموزش وردپرس قالب فروشگاهی وردپرس وردپرس
خانه / اموزش / دلیل مصرف زیاد دیتابیس MySQL و نکاتی برای بهینه سازی آن

دلیل مصرف زیاد دیتابیس MySQL و نکاتی برای بهینه سازی آن

دلیل مصرف زیاد دیتابیس MySQL و نکاتی برای بهینه سازی آنReviewed by سالار on Mar 19Rating: 5.0

سلام به همه ی همراهان

*این مطلب در تاریخ ۹۵/۱۲/۳۰ به روز شد . 

همه مردم  وارد وب سایتی می شوند که در کمترین زمان به نیازی که دارند پاسخ دهد . کیفیت پاسخ دادن از یک طرف به سرعت بارگذاری و طراحی  وب سایت بر میگردد و از طرفی دیگر به مطالب شما. امروز به توضیح راجع به  قسمت اول اختصاص داده ایم پس با ما همراه باشید

ممکن است شما جزء کاربران و وبمسترهایی باشید که بعد گذشت مدتی از راه اندازی سایت خود با اخطار پشتیبان هاست خود مبنی بر مصرف بیش از حد منابع هاست یا سرور مواجه شده باشید اما از طرفی نتوانید درک کنید که دلیل آن چیست زیرا اغلب این مورد بدون افزایش چشمگیر مصرف پهنای باند و میزان فضا که معمولا نمودار آنرا در پنل مدیریت هاست به شما نمایش میدهند صورت می گیرد.

بسته به میزان قدرت سرور به هر وبسایت تا درصد خاصی از منابع سرور تعلق می گیرید هر گاه این میزان بیش از حد از پیش تعیین شده باشد به کاربر اخطار استفاده ی بیش از حد از منابع داده می شود که البته این مساله برای هاست ها و سرویس هایی که به صورت اشتراکی هستند (مانند هاست اشتراکی و سرور مجازی) به وجود می آید و سرویس های اختصاصی (مانند سرور اختصاصی) از آنجا که تمام منابع متعلق به خودشان است تا جایی که سرور با کاهش کیفیت (و گاه قطعی سرور) مواجه نشوند کسی به آنها اخطاری برای مصرف بیش از حد منابع نخواهد داد.

دلایل مصرف بیش از حد منابع سرور

مسائلی که مصرف منابع را افزایش می دهند به ترتیب زیر هستند:

  • افزایش بازدید از سایت شما: هر یک از سرویس های میزبانی اعم از هاست اشتراکی، سرور مجازی و یا اختصاصی امکان پشتیبانی از تعداد محدودی بازدید در لحظه را دارند و البته خود اینکه هاست شما چه تعداد بازدید را بتواند پاسخ دهد بستگی به پارامترهایی دارد که در ادامه به آنها اشاره خواهد شد.
  • حجم قالب سایت: اینکه شما از گرافیک بالایی برای سایت خود استفاده کنید به معنای آن است که تعداد زیادی فایل گرافیکی قرار است روی سایت خود بارگذاری نمایید که علاوه بر کاهش سرعت لود سایت برای کاربر مصرف منابع سرور شما را نیز افزایش خواهد داد.
  • استفاده از حد از پلاگین ها و امکانات جانبی: برخی پلاگین ها حتی ممکن است به شدت دیتابیس را درگیر نمایند که سبب پردازش سنگین بر روی سرور می گردند و همین مساله مصرف پردانده و حافظه موقت را افزایش خواهد داد و البته گاهی ممکن است پلاگینها پرمصرف نباشند اما کثرت آنها زیاد باشد که باز هم این مساله به معنای مصرف بیش از حد منابع هاست می باشد.
  • حملات DOS: این نوع حملات با هدف افزایش استفاده از منابع سرور تا زمانی موجب قطع دسترسی به سایت در اثر عدم توان سرور به درخواست های جدید شود انجام می گردد و روشهای مختلفی دارد و ممکن است این مساله سبب اخطار پیشتیبان هاست به شما به دلیل افزایش بیش از حد منابع سرور باشد.

 

دلیل مصرف زیاد دیتابیس MySQL و نکاتی برای بهینه سازی آن

هر سایت داینامیک جهت اجرا و نمایش مطالب نیاز به برقراری ارتباط با پایگاه داده دارد. تمامی اطلاعات مورد نیاز از طریق اجرا دستورات دیتابیس در قالب query استخراج شده و به اسکریپت سایت برگردانده می شوند. و با انجام هر فرایند و باز نمودن هر صفحه ای در سایت، اسکریپت سایت query هایی را روی پایگاه داده اجرا می کند. برای اجرای این دستورات لازم است تا کانکشن جدیدی به اسکریپت اجرا کننده اختصاص داده شود. این کانکشن ها باید بعد از اتمام فرآیند بازیابی و نمایس اطلاعات حتما بسته شوند، زیرا در غیر اینصورت موجب انباشت آنها و وارد آمدن بار زیاد به سرور mysql می شود. بعلاوه تعداد زیاد کانکش های همزمان به سرور mysql نیز از دیگر عواملی است که موجب مصرف بالا و وارد آمدن بار زیاد به سرور mysql می شود.
اغلب بهینه نبودن کدهای سایت و یا کدنویسی های نادرست موجب بوجود آمدن مشکل مصرف بالای mysql می شود  به عنوان پیشنهاد، حتی الامکان از مکانیزم های Cache استفاده نمایید تا علاوه بر کاهش بار سرور mysql بازدهی سایت شما نیز به حداکثر ممکن ارتقا یابد.
همواره ایجاد Index از بهترین راه هایی است که می توان به یک نوع داده دسترسی پیدا کرد. بصورت مثال در صورتی که شما یک table با ۲۰ ستون داشته باشید و یکی از ستون های آن بصورت متناوب مورد استفاده و دستیابی قرار بگیرد شما می توانید جهت تسریع در دسترسی به آن یک Index برای آن تعریف کنید. در صورتی که در نبود این index، سرور بایستی یک scan کلی از table مربوطه داشته باشد که به تبع آن روند دستیابی به data زمان بر تر خواهد شد.
در حقیقت تعریف index ها موجب می شود که mysql بصورت ساخت یافته عمل کرده و در زمان نیاز به data بجای انجام scan کلی بین record ها به index ها مراجعه کند، و این مورد موجب می شود که استفاده از منابع سرور کمتر شده و درگیری کمتری بوجود آید.
راه دیگری که می توان جهت بهینه سازی دیتابیس از آن بهره برد قطعه بندی (partition) کردن جداول است. البته این روش برای جداولی بزرگ با تعداد بالای هزار سطر و ستون می باشد. البته متد جستجو و دستیابی mysql در این قسمت نیز تقریبا مشابه با متد قبلی است که بجای بررسی و scan تمامی record ها جستجو تنها در partition مربوطه انجام خواهد گرفت که این مورد نیز باعث صرفه جویی بسزایی در زمان و بار وارده به سرور خواهد شد.
از دیگر مواردی که می توان به آن اشاره نمود بهینه سازی ساختار دیتابیس با اعمال موارد زیر است:
۱- تا حد ممکن جداول دیتابیس را کوچک نمایید:
این مورد تاثیر چشمگیری در میزان استفاده از RAM و I/O سرور دارد و علاوه بر این موجب کمتر شدن تعداد Index ها می شود.
۲- استفاده از procedure ANALYSE :
این مورد بازخوردی از اجرای هر query میدهد. در حقیقت این پرویسجر بعد از آنالیز data های موجود در جداول راهکارهایی ارائه میدهد که باعث شده تا data ها بهینه و جداول کوچکتر شوند. جهت استفاده از این پرویسجر آن را در انتهای دستور select با فرمت زیر بکار ببرید:
[SELECT … FROM … WHERE … PROCEDURE ANALYSE([max_elements,[max_memory])
بصورت مثال :
SELECT col1, col2 FROM table1 PROCEDURE ANALYSE(10, 2000);
توجه داشته باشید در صورتی که تعداد زیادی جدول در یک دیتابیس داشته باشید اعمال open, close, and create بر روی آنها کند و زمان بر خواهد بود.
در ادامه به موارد زیر حتما توجه خاص مبذول دارید:
بعد از باز شدن هر connection به دیتابیس سرور حتما در برنامه نویسی دقت نمایید که connection مربوطه بسته شود.
در phpmyadmin این امکان وجود دارد که در هر دیتابیس table های مورد نظر را انتخاب نموده و با استفاده از گزینه Optimize Table جداول مربوطه را بهینه سازی نمود.
همچنین در صورت تمایل شما می توانید سرویس خود را به سرویس های VIP تغییر دهید. در سرویس های VIP ضریب اشتراک بسیار کم بوده و در نتیجه منابع بیشتری در اختیار شما قرار خواهد گرفت. همچنین دیتابیس شما نیز در سرور اختصاصی و مجزایی میزبانی می گردد. در این حالت سایت شما می توانید بدون اینکه موجب ایجاد اختلال بر روی سایت دیگری گردد، منابع بسیار بیشتری مصرف نماید
شاد باشید

مطلب پیشنهادی

شی Screen در جاوا اسکريپت – صفحه نمایش

شی Screen در جاوا اسکريپت - صفحه نمایشReviewed by سالار on Dec 4Rating: 5.0شی Screen …

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

 
در خبرنامه ما عضو شوید

در خبرنامه ما عضو شوید

در خبرنامه ما عضو شوید تا بهترین پست هفته مارو در ایمیل خودتون دریافت کنید :)

تبریک ! شما عضو خبرنامه ما شدید