百度
360搜索
搜狗搜索

解决WordPress MySQL 数据库中产生的巨型表 wp_actionscheduler_actions 和 wp_actionscheduler_logs详细介绍

发现自己的 Mariadb(MySql) 数据库有两个几十GB的巨型表,由于表的体积过大已经影响到了网站的运行速度,所以来找我帮忙看看怎么处理。

  1. wp_actionscheduler_actions #这个表是用来记录计划任务的表

  2. wp_actionscheduler_logs #这个表是用来记录任务日志的表

经过我的排查,这两个数据表是由 WooCommerce 自动创建的。之所以这两个表会这么大可能是某个的定时任务被卡住了,结果就不停的往数据表增加任务,最后就产生了这两个巨型表。由于这两个表实际用处不大,也就是说暴力一点可以直接手动清空这两个数据表,并且不会有什么问题。当然如果求稳也可以根据下面的方法来解决这个问题。

  1. #登录数据库,注意自行替换下面命令中的yourdatabase,这个是数据库名。

  2. mysql -u root -p yourdatabase

  3. #输入数据库root密码,然后回车进入数据库。

  4. #清空wp_actionscheduler_logs数据表,注意自行替换wp_表前缀。

  5. TRUNCATE `wp_actionscheduler_logs`;

  6. #然后分别执行下面三行命令,注意自行替换wp_表前缀。

  7. DELETE FROM `wp_actionscheduler_actions` WHERE `status` = 'complete';

  8. DELETE FROM `wp_actionscheduler_actions` WHERE `status` = 'canceled';

  9. DELETE FROM `wp_actionscheduler_actions` WHERE `status` = 'failed';

根据你的数据表体积会有不同的清理速度,我清理大几十GB的数据表用了几个小时。所以,执行命令后发现没有马上完成可以不用着急,去冲杯咖啡喝完再回来看看。

根据上面的方法清理了这两个巨型数据表以后还只是治标没能治本,会继续给出治标治本的解决方案。

方法一

  1. // 每日自动清理数据表 Scheduled Actions

  2. add_filter( 'action_scheduler_retention_period', 'cw_action_scheduler_purge_daily' );

  3. function cw_action_scheduler_purge() {

  4. return DAY_IN_SECONDS;

  5. }

  1. // 每周自动清理数据表 Scheduled Actions

  2. add_filter( 'action_scheduler_retention_period', 'cw_action_scheduler_purge_weekly' );

  3. function cw_action_scheduler_purge() {

  4. return WEEK_IN_SECONDS;

  5. }

上面这两段 PHP 代码二选一添加到主题的 funcations.php 文件中即可。因为两段代码功能相同,区别是执行时间周期,一个是每日自动清理,另一个是每周自动清理,具体可以根据你数据表的增量速度自行决定。

方法二

  1. #!/bin/bash

  2. user=

  3. password=

  4. database=

  5. host=

  6. echo 'TRUNCATE `wp_actionscheduler_logs`;' | mysql --user="$user" --password="$password" --database="$database" --host="$host"

  7. echo 'DELETE FROM `wp_actionscheduler_actions` WHERE `status` = "complete";' | mysql --user="$user" --password="$password" --database="$database" --host="$host"

  8. echo 'DELETE FROM `wp_actionscheduler_actions` WHERE `status` = "canceled";' | mysql --user="$user" --password="$password" --database="$database" --host="$host"

  9. echo 'DELETE FROM `wp_actionscheduler_actions` WHERE `status` = "failed";' | mysql --user="$user" --password="$password" --database="$database" --host="$host"

再给大家一个自动清理数据表的shell脚本,把上面这段脚本代码复制到 xxx.sh 文件(脚本名称自己随便起一个),然后在linux主机中添加定时任务即可bash /dir/xxx.sh,执行周期自己随意安排。

注意:上面的脚本中需要你自行填写数据库用户名、数据库用户密码、数据库名、数据库主机地址。

,

网站数据信息

"解决WordPress MySQL 数据库中产生的巨型表 wp_actionscheduler_actions 和 wp_actionscheduler_logs"浏览人数已经达到43次,如你需要查询该站的相关权重信息,可以点击进入"Chinaz数据" 查询。更多网站价值评估因素如:解决WordPress MySQL 数据库中产生的巨型表 wp_actionscheduler_actions 和 wp_actionscheduler_logs的访问速度、搜索引擎收录以及索引量、用户体验等。 要评估一个站的价值,最主要还是需要根据您自身的需求,如网站IP、PV、跳出率等!