在MariaDB中为大型ibd文件

时间:2017-11-13 09:35:09

标签: wordpress mariadb

我们有一个使用MariaDB的WordPress网站,其中wp_options表由于流氓插件将数千条记录写入表格而不断增长。插件维护者尚未解决该问题,我不得不通过DELETE语句手动删除这些“瞬态”(临时)记录。问题是ibd文件不断增长,现在大小为35GB。一旦解决了这个问题,我打算在表上做一个OPTIMIZE TABLE来清理。这是回收所有空间的最佳方法吗?我假设我需要多达40GB的可用空间来完成这项工作,OPTIMIZE TABLE需要多长时间?由于这个表被WordPress使用了很多,因此最好在优化时使网站脱机以避免锁定。我会寻找最快捷的解决方法。

至少我认为这些流氓记录是桌子成长的原因。以下是表格中排名前10位的条目列表:

MariaDB [wmnf_www]> SELECT    substr(`wp_options`.`option_name`, 1, 18) AS `option_name`,   count(`wp_options`.`option_value`) AS `cnt` FROM   `wp_options` GROUP BY   substr(`wp_options`.`option_name`, 1, 18) ORDER BY   `cnt` DESC LIMIT 10;
+--------------------+-------+
| option_name        | cnt   |
+--------------------+-------+
| _transient_timeout | 21186 |
| _transient_ee_ssn_ | 12628 |
| _transient_jpp_li_ |   222 |
| _transient_externa |   125 |
| _transient_wc_rela |    63 |
| jpsq_sync-14716436 |    50 |
| wpmf_current_folde |    35 |
| _wc_session_expire |    34 |
| jpsq_sync-14716465 |    29 |
| jpsq_sync-14716417 |    25 |
+--------------------+-------+
10 rows in set (0.17 sec)

_transient_ee_ssn_和_transient_timeout_ee_是问题并且在不断发展,自上一组以来,上述集合中的唯一一个已经增长,最初发现有800K记录。我继续删除记录,因为插件维护者说是安全的。但这是ibd文件增长的原因吗?

--- --- UPDATE 奇怪的是,问题没有得到解决,瞬态记录不断由数千个生成,但是这个ibd索引文件目前已停止增长。在周末从20GB稳步增长到现在的39GB之后,它在几个小时内没有增长。也许有限制或者这个文件由于其他原因而增长?

1 个答案:

答案 0 :(得分:0)

我认为使用Percona pt-online-schema-change工具重新创建表是一个更好的解决方案。这将重新创建表并将所有数据移动到新表,然后删除旧表。这样可以避免长时间锁定数据库。