رفتن به مطلب

اپتیمایز کردن جدول wp-usermeta در دیتابیس


sir1

پست های پیشنهاد شده

با سلام
این جدول حدود 580000 هزار رکورد گرفته و به سرور فشار وارد می کند. میخواستم بهینش کنم و تعداد رکورداشو بیارم پایین.
به صورت دستی در دیتابیس و با افزونه wp-optimize بهینه سازی کردم ولی رکودها پایین نمیاد.

wp-usermeta.thumb.jpg.d30e65fdd3e5f6e6a463a1807cc28dbb.jpg

لینک به ارسال
  • 1 سال بعد...

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

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

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

سلام. وارد جدول wp_usermate بشید و search رو بزنید و user_id رو برابر با آیدی کاربری که بنظرتون بیشترین تعامل داشته رو بزنید. بعد بررسی کنید که فیلدهایی که میاد چی هستن. قاعدتا اگه هر روز در حال رشد هست، افزونه هایی دارید که دارن دیتا اضافه میکنن برای هر کاربر. اگه این حالت باشه، افزونه هاتون به مشکل میخورن. مثلا ووکامرس برای کاربر چندین ایتم اضافه میکنه که با حذفشون، کاربر در زمان پزداخت به مشکل میخوره و اذیت میشه. بنظرم باید روی افزونه هاتون بررسی بهتری داشته باشید و افزونه های بهینه تری رو انتخاب کنید.

لینک به ارسال

مهندس یک سری کوئری ها الکی به usermeta اضافه میشن و حجم اون را بالا میبرن. دیروز با استفاده از دستور زیر حدود 400 هزار کوئری را حذف کردم و الان تعداد کوئری ها 600 هزار است.

DELETE 
FROM    wp_usermeta 
WHERE   meta_key = 'last_login'

حالا نگا کردم برای کاربران جدید که ثبت نام میکنند باز همون کوئری ها اضافه میشن. کد یا دستوری وجود داره که بگه مثلا meta-key کوئری no_captcha ، hide_user_email، را در usermeta ذخیره نکن؟ اگر همچین کدی وجود داشته باشه کار ما راحت میشه.

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

مهندس یک سری کوئری ها الکی به usermeta اضافه میشن و حجم اون را بالا میبرن. دیروز با استفاده از دستور زیر حدود 400 هزار کوئری را حذف کردم و الان تعداد کوئری ها 600 هزار است.


DELETE 
FROM    wp_usermeta 
WHERE   meta_key = 'last_login'

حالا نگا کردم برای کاربران جدید که ثبت نام میکنند باز همون کوئری ها اضافه میشن. کد یا دستوری وجود داره که بگه مثلا meta-key کوئری no_captcha ، hide_user_email، را در usermeta ذخیره نکن؟ اگر همچین کدی وجود داشته باشه کار ما راحت میشه.

درسته و این موارد رو غالبا یا افزونه ها اضافه میکنن یا قالب. در هر صورت میتونید از هوکی که برای مدیریت متادیتا هست استفاده کنید. کدتون باید چیزی شبیه به این باشه:

add_filter( 'add_user_metadata', 'ywp_ignore_some_meta_keys', 20, 5 );
funtion ywp_ignore_some_metakeys( $check, $object_id, $meta_key, $meta_value, $unique ) {
	$ignored_keys = array( 
		'hide_user_email',
		'no_captcha',
	);

	if( in_array( $meta_key, $ignored_keys ) ) {
		$check = false;
	}

	return $check;
}

 

لینک به ارسال
در در ۱۳۹۹/۶/۲۰ در 01:42، yazdaniwp گفته است :

درسته و این موارد رو غالبا یا افزونه ها اضافه میکنن یا قالب. در هر صورت میتونید از هوکی که برای مدیریت متادیتا هست استفاده کنید. کدتون باید چیزی شبیه به این باشه:


add_filter( 'add_user_metadata', 'ywp_ignore_some_meta_keys', 20, 5 );
funtion ywp_ignore_some_metakeys( $check, $object_id, $meta_key, $meta_value, $unique ) {
	$ignored_keys = array( 
		'hide_user_email',
		'no_captcha',
	);

	if( in_array( $meta_key, $ignored_keys ) ) {
		$check = false;
	}

	return $check;
}

 

این کدو وقتی میزارم سایت بالا نمیاد

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

این کدو وقتی میزارم سایت بالا نمیاد

یه اشتباه تایپی داشت:

add_filter( 'add_user_metadata', 'ywp_ignore_some_meta_keys', 20, 5 );
function ywp_ignore_some_meta_keys( $check, $object_id, $meta_key, $meta_value, $unique ) {
	$ignored_keys = array( 
		'hide_user_email',
		'no_captcha',
	);

	if( in_array( $meta_key, $ignored_keys ) ) {
		$check = false;
	}

	return $check;
}

 

لینک به ارسال

در 34 دقیقه قبل، yazdaniwp گفته است :

یه اشتباه تایپی داشت:


add_filter( 'add_user_metadata', 'ywp_ignore_some_meta_keys', 20, 5 );
function ywp_ignore_some_meta_keys( $check, $object_id, $meta_key, $meta_value, $unique ) {
	$ignored_keys = array( 
		'hide_user_email',
		'no_captcha',
	);

	if( in_array( $meta_key, $ignored_keys ) ) {
		$check = false;
	}

	return $check;
}

 

ممنون درست شد.

سوال آخر. از meta_key های زیر کدام لازم نیست که فیلتر کنم؟ چون نمیدونم اینا هر کدام چه نقشی دارن

  1. wc_last_active
  2. rich_editing
  3. syntax_highlighting
  4. comment_shortcuts
  5. _order_count
  6. admin_color
  7. use_ssl
  8. show_admin_bar_front
  9. wp_capabilities
  10. wp_user_level
  11. default_password_nag
  12. last_update
  13. session_tokens
  14. _yoast_wpseo_profile_updated
لینک به ارسال
در 15 دقیقه قبل، sir1 گفته است :

 

ممنون درست شد.

سوال آخر. از meta_key های زیر کدام لازم نیست که فیلتر کنم؟ چون نمیدونم اینا هر کدام چه نقشی دارن

  1. wc_last_active
  2. rich_editing
  3. syntax_highlighting
  4. comment_shortcuts
  5. _order_count
  6. admin_color
  7. use_ssl
  8. show_admin_bar_front
  9. wp_capabilities
  10. wp_user_level
  11. default_password_nag
  12. last_update
  13. session_tokens
  14. _yoast_wpseo_profile_updated

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

    admin_color
    _yoast_wpseo_profile_updated

 

لینک به ارسال

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

×
×
  • اضافه کردن...