mojtaba79

مشکل بهینه نبودن دیتابیس و کوری های بالا

11 پست در این موضوع قرار دارد

با سلام.

توی یکی از سایتهای ما یه مشکل داریم که متاسفانه نمیتونیم حل کنیم.
کوری های زیادی مثل کوری زیر به سرور داده میشه که از دید سرور (که خیلی هم معرفو هست توی ایران) اینکار غیر عادی هستش.

`SELECT wp_posts.* FROM wp_posts INNER JOIN wp_postmeta ON ( wp_posts.ID = wp_postmeta.post_id ) INNER JOIN wp_postmeta AS mt1 ON ( wp_posts.ID = mt1.post_id ) WHERE 1=1 AND ( ( wp_postmeta.meta_key = '_start_date_gdate' AND wp_postmeta.meta_value != '' ) OR ( mt1.meta_key = '_start_time' AND mt1.meta_value != '' )) AND wp_posts.post_type = 'product' AND (wp_posts.post_status = 'publish') GROUP BY wp_posts.ID ORDER BY wp_posts.post_date DESC:`


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


فقط اینکه wp_postmeta سه برابر wp_posts هستش. آیا از این میتونه باشه؟
اگر شخصی هست که میتونه کمک کنه ممنون میشم اطلاع بده با پرداخت هزینه از ایشون استفاده کنیم.

 

 

0

به اشتراک گذاری این پست


لینک به پست

سلام

از افزونه WP Optimize برای بهینه سازی میتوانید استفاده کنید.

0

به اشتراک گذاری این پست


لینک به پست
در 2 دقیقه قبل، sir1 گفته است :

سلام

از افزونه WP Optimize برای بهینه سازی میتوانید استفاده کنید.

ممنونم.
اینکار انجام شده.

حتی بعد از اون از افزونه Advanced DB cleaner

و همچنین ترنسکشن های اضافه هم پاک شدن.

نتیجه تقریبا هیچ فرقی نکرد.

 

همه کوری ها دور wp_postmeta میگرده.

این تیبل هنوز خیلی بزرگ تره. سه برابر تیبل wp_posts 

 

برای بهینه کردن این تیبل هیچ پلاگینی نیست.

 

0

به اشتراک گذاری این پست


لینک به پست

با سلام

مطمئن باشید کوئری‌های خود وردپرس بهینه ترین حالت ممکن رو دارند، این افزونه‌های جانبی هستند که گاها با کوئری های غیر استاندارد پرفورمنس وردپرس رو پایین میارن.

کوئری که درج کردید یکی از بهینه ترین کوئری‌های ممکن هست چرا که با یک کوئری بین چندین جدول ارتباط برقرار میکند که همین کوئری رو به برنامه نویس سطح متوسط بگید بزنند ممکنه با پنج تا کوئری به دیتابیس هم نتونه خروجی کوئری بالا رو بده.

مشکل یا بهتره بگم علت افت پرفورمنس وردپرس (بخش مربوط به دیتابیس) فقط در تعداد سطرهای دیتابیس می‌باشد. همونطور که میدونید وقتی مطلبی رو مینویسید یا ویرایش می‌کنید نسخه‌ای از اون هم در دیتابیس ذخیره میشه، و موقع کوئری زدن باعث میشه اونام مورد پایش قرار بگرید و این باعث میشه زمان دریافت اطلاعات با کوئری بالا بره.

حالا شما فرض کنید سایت شما ۱۰۰۰ مطلب داره و برای هر مطلب حدود ۴ رونوشت ذخیره شده!! این یعنی ۴ برابر زمان دریافت اطلاعات از دیتابیس کمتر خواهد بود!!!

برای حل این مشکل میتونید از افزونه حذف رونوشت استفاده کنید: 
https://farhad.in/wordpress/wordpress-plugins/wordpress-plugin-delete-revision/

علاوه بر حذف رونوشت می‌تونید از مطالب قدیمی که دیگر بازدید ندارند رو از دیتابیس حذف کنید.

نکته پایانی و حائز اهمیت که باید بیشتر بهش توجه کنید هاست/سرور سایت می‌باشد. هر چقدر سایت شما سنگین باشه، کوئری‌های غیراستاندارد و بازدید بالایی داشته باشه با منابع سرور بالا قابل رفع می‌باشد. بنا براین می‌توانید با افزایش منابع سرور خود بکار خودتون ادامه دهید کما اینکه موارد ذکر شده رو هم رعایت کنید.

موفق باشید.

1

به اشتراک گذاری این پست


لینک به پست
در 11 ساعت قبل، farhad.in گفته است :

با سلام

مطمئن باشید کوئری‌های خود وردپرس بهینه ترین حالت ممکن رو دارند، این افزونه‌های جانبی هستند که گاها با کوئری های غیر استاندارد پرفورمنس وردپرس رو پایین میارن.

کوئری که درج کردید یکی از بهینه ترین کوئری‌های ممکن هست چرا که با یک کوئری بین چندین جدول ارتباط برقرار میکند که همین کوئری رو به برنامه نویس سطح متوسط بگید بزنند ممکنه با پنج تا کوئری به دیتابیس هم نتونه خروجی کوئری بالا رو بده.

مشکل یا بهتره بگم علت افت پرفورمنس وردپرس (بخش مربوط به دیتابیس) فقط در تعداد سطرهای دیتابیس می‌باشد. همونطور که میدونید وقتی مطلبی رو مینویسید یا ویرایش می‌کنید نسخه‌ای از اون هم در دیتابیس ذخیره میشه، و موقع کوئری زدن باعث میشه اونام مورد پایش قرار بگرید و این باعث میشه زمان دریافت اطلاعات با کوئری بالا بره.

حالا شما فرض کنید سایت شما ۱۰۰۰ مطلب داره و برای هر مطلب حدود ۴ رونوشت ذخیره شده!! این یعنی ۴ برابر زمان دریافت اطلاعات از دیتابیس کمتر خواهد بود!!!

برای حل این مشکل میتونید از افزونه حذف رونوشت استفاده کنید: 

https://farhad.in/wordpress/wordpress-plugins/wordpress-plugin-delete-revision/

علاوه بر حذف رونوشت می‌تونید از مطالب قدیمی که دیگر بازدید ندارند رو از دیتابیس حذف کنید.

نکته پایانی و حائز اهمیت که باید بیشتر بهش توجه کنید هاست/سرور سایت می‌باشد. هر چقدر سایت شما سنگین باشه، کوئری‌های غیراستاندارد و بازدید بالایی داشته باشه با منابع سرور بالا قابل رفع می‌باشد. بنا براین می‌توانید با افزایش منابع سرور خود بکار خودتون ادامه دهید کما اینکه موارد ذکر شده رو هم رعایت کنید.

موفق باشید.

ممنون از وقتی که گذاشتید و توضیح کاملی که دادید.

من کارهای زیر رو پیشتر انجام دادم.

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

ترنسکشن های باطل شده پاک شدن.

تمامی دیتابیس اوپتیمایز شده.

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

با بهینه کردن کامل دیتابیس خیلی از بار سایت کم شده ولی هنوز این کوری مرتبا تکرا میشه و گاهی سایت رو دان میکنه.

از نگاه پشتیبانی هاست این اصلا بهینه نیست. و اصولا این کوری غیر عادی هستش.

 

من تمامی دیتابیس رو بهینه کردم ولی فقط یه تیبل رو نتونستم بخوبی بهینه کنم.

wp_postmeta

این تیبل حجم بالایی داره. چطور میتونم این تیبل رو بهینه کنم؟

شاید با این کار مشکل کوری مطرح شده برطرف بشه.

 

0

به اشتراک گذاری این پست


لینک به پست
در 12 ساعت قبل، mojtaba79 گفته است :

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

 

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

در 12 ساعت قبل، mojtaba79 گفته است :

من تمامی دیتابیس رو بهینه کردم ولی فقط یه تیبل رو نتونستم بخوبی بهینه کنم.

wp_postmeta

این تیبل حجم بالایی داره. چطور میتونم این تیبل رو بهینه کنم؟

این جدول در بر گیرنده زمینه‌های دلخواه، پست تایپ مطالب می‌باشد که به طبع اگر زمینه دلخواه در قالبتون زیاد تعریف شده باشه به همون اندازه سطر ایجاد خواهد شد. برای مثال فرض کنید در قالب شما ۱۰ زمینه دلخواه تعبیه شده است بنا برا این برای هست پستی که ارسال کنید ۱۰ سطر در این جدول اضافه خواهد شد!!! حالا شما تعداد ۱۰۰۰ پست رو در نظر بگیر ببین چقدر سطر ایجاد خواهد شد!!!

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

در کل متاسفانه دیتابیس MYSQL در دیتا‌های بزرگ بسیار کند میشه، اگر میتونید به دیتابیس MariaDB مهاجرت کنید که پرفورمنس بهتری از MySQL داره و نیازی نیست در کدهای وردپرس یا اطلاعات دیتابیس خود تغییری بدهید (توصیه اکید میکنم اگر قصد همچین کاری داشتید با یک متخصص مطرح کرده و این کارو بر عهده ایشون قرار بدید).

با آرزوی موفقیت

1

به اشتراک گذاری این پست


لینک به پست

ممنونم از راهنمایی هاتون.

پس شما معتقد هستید ایراد خاصی (بسیار غیر معمول) در کوری مطرح شده بالا نیست؟

صرفا یه کوری معمولی برای یه قالب با تعدادی زمینه دلخواه هستش؟

که ممکن تعداد بالای محصول و مقاله باعث افزایش فشار روی سرور شده.

بخاطر اینکه پشتیبانی معتقد بود این خیلی غیر معمول هستش.

 

0

به اشتراک گذاری این پست


لینک به پست

ایرادی که مشکل ساز بشه وجود ندارد.

فکر کنم این کوئری شما برای فیلتر/جست‌و‌جو کردن محصولات/پست‌ها یا همچین چیزی باشه؟!

این نوع کوئری ها تمامی سطرهای موجود در جدول رو آنالیز می‌کنند بخاطر هم فشار بیشتری به سرور/هاست وارد میشه.

بله تعداد بالا سطرها باعث میشه این نوع کوئری ها فشاری بیشتری به هاست/سرور وارد کنند.

شما میتونید با محدود سازی این کوئری ها به مثلا ۱۰ سطر آخر جدول جلوی آنالیز کل سطور دیتابیس رو بگیرید البته با اینکار ممکنه محصولات/پست دلخواه کاربر در نتایج ظاهر نشه!

خود قسمت جست و جوی ودپرس هم در سایتایی که مطالب بیشتری دارند با چند جست و جوی همزمان بعلت فشار زیاد به هاست موقتا سایت از دسترس خارج میشه :-) 

0

به اشتراک گذاری این پست


لینک به پست

خیلی ممنون از راهنماییتون.

خیالم تا حدود زیادی راحت شد.

فقط اینکه شنیدم تیبل wp_postmeta نباید بزرگ تر از wp_posts  باشه.

 

با اینکه دیتابیس بهینه شده این تیبل هنوز خیلی بزرگ تره. سه برابر تیبل wp_posts 

این ایراد نیست؟

0

به اشتراک گذاری این پست


لینک به پست

موضوع مشکلی بود که بخاطر سورت شدن محصولات ایجاد میشد.

با بستن صفحه ویژه مشکل برطرف شد.

ممنونم از شما

0

به اشتراک گذاری این پست


لینک به پست
در در 2/2/2018 at 23:41، mojtaba79 گفته است :

ممنونم.
اینکار انجام شده.

حتی بعد از اون از افزونه Advanced DB cleaner

و همچنین ترنسکشن های اضافه هم پاک شدن.

نتیجه تقریبا هیچ فرقی نکرد.

 

همه کوری ها دور wp_postmeta میگرده.

این تیبل هنوز خیلی بزرگ تره. سه برابر تیبل wp_posts 

 

برای بهینه کردن این تیبل هیچ پلاگینی نیست.

 

من با همون افزونه ای که گفتم حجم wp-option را 900 مگا بایت به 6 مگ کاهش دادم و کلیه جداول اضافی را پاک کرد.

همونجدوا 1 میلیون کوری داشت که به چند هزار کاهش یافت

0

به اشتراک گذاری این پست


لینک به پست

برای ارسال نظر یک حساب کاربری ایجاد کنید یا وارد حساب خود شوید

برای اینکه بتوانید نظر ارسال کنید نیاز دارید که کاربر سایت شوید

ایجاد یک حساب کاربری

برای حساب کاربری جدید در انجمن ما ثبت نام کنید. عضویت خیلی ساده است !


ثبت نام یک حساب کاربری جدید

ورود به حساب کاربری

دارای حساب کاربری هستید؟ از اینجا وارد شوید


ورود به حساب کاربری