سئو برای زندگی

joomla layout overrides
لاگ کردن مای اس کیو ال کوئری های (MySQL Queries ) بدون ایندکس

اگر شما پیش از این بسیاری از کوئری های کند وب سایت جوملا خود را با استفاده از مای اس کیو ال (حذف کوئری های کُند) لاگ کرده اید ولی هم چنان مای اس کیو ال فشار زیادی به سرور برای لود شدن می آورد، بهترین راه حل برای رفع این مشکل بررسی کردن کوئری های بدون ایندکسی است که توسط مرکز داده های سرور شما در حال اجرا می باشد. منظور از کوئری های بدون ایندکس، آن کوئری هایی هستند که مرتب و دسته بندی شده اند ولی در فیلدی که این کوئری ها در آن مرتب یا فیلتر شده اند، ایندکس گذاری نشده است.
به طور مثال اگر شما در وب سایت جوملای خود کوئری به شکل زیر دارید:

SELECT * FROM #__content WHERE cat_id=5 ORDER BY created DESC";

در نتیجه شما باید هم cat-id و هم ایندکس ایجاد شده را داشته باشید.
حال سوال این است که چطور می توان به راحتی فهمید که کدام کوئری بدون ایندکس است؟ اگر به روت سرور دسترسی داشته باشید، خوشبختانه یک راه ساده برای این کار در مای اس کیو ال وجود دارد.
کافی است مراحل زیر را دنبال کنید:
•    از طریق اس اس اچ (SSH) به سرور هاست پایگاه داده های وب سایت جوملا متصل شوید
•    فایل my.cnf را که در فولدر /etc قرار دارد باز کنید (این فایل ممکن است در جای دیگری قرار داشته باشد ولی در بیشتر سرور ها در همان مکان ذکر شده قرار دارد)
•    دستورات زیر را به انتهای فایل اضافه کنید:

slow-query-log=1
long-query-time=1
log_queries_not_using_indexes=1
slow-query-log-file="/var/lib/mysql/slow.log

•  فایل را ذخیره کنید (اگر شما از vi استفاده می کنید می توانید با کلیک بر روی ESC و سپس تایپ کردن :wg و زدن اینتر، فایل را خیلی سریع ذخیره کنید)
•    با استفاده از دستور زیر مای اس کیو ال را ریست کنید
/etc/init.d/mysql restart
•    حال مراقب فایل slow.log که در مسیر /var/lib قرار دارد، باشید. متوجه خواهید شد که این فایل خیلی سریع با انواع کوئری ها پر خواهد شد.
در صورتی که به اندازه کافی کوئری داشتید، باید indexless query logging (ایندکس کوئری لاگینگ) را از طریق زیر غیر فعال کنید:
فایل my.cnf را که در فایل /etc قرار دارد باز کنید
دستور زیر را کپی کرده و ابتدای آن # بگذارید

log_queries_not_using_indexes=1

در نتیجه دستور بالا به شکل # log_queries_not_using_indexes=1 خواهد بود
فایل my.cnf را ذخیره کرده و mysql را ریست کنید.
حالا می توانید تمام کوئری های بدون ایندکس را در فایل slow.log امتحان کرده و مشکل آنها را بطرف کنید. باید ابتدا بر روی کوئری های که بیش از همه در فایل slow.log می بینید تمرکز کنید. هنگامی که آن مشکل کوئری ها را بر طرف کردید، مراحله بالا را دوباره انجام دهید (فعال و غیر فعال کردن لاگینگ کوئری هایی که بدون ایندکس هستند)  تا جایی که تمام (یا بیشتر) کوئری ها کاملا تنظیم و بهینه سازی شده باشند.
باید توجه داشته باشید که برای تعمیر و رفع اشکال کوئری ها شما باید مهارت بالایی در کار با پایگاه داده ها داشته باشید. اگر به کمک نیاز داشتید با ما تماس بگیرید.

5 1 1 1 1 1 1 1 1 1 1 Rating 100% (1 Vote)
sd-logos-part1
sd-logos-part2

منتخب از مشتریان با ارزش ما

مشتریان ما سرمایه ما
themeforest-logo
codecanyon--logo
graphicriver-logo
audiojungle-logo
photodune-logo
activeden--logo