【问题标题】:MariaDB waits after canceling index creationMariaDB 在取消索引创建后等待
【发布时间】:2017-11-10 16:28:57
【问题描述】:

我们有一个运行 WordPress 4.8 的 MariaDB 数据库,在 wp_options 表中发现了很多 transient 命名记录。该表使用插件进行了清理,并从约 800K 记录减少到约 20K 记录。仍然获得关于表的缓慢查询条目:

# User@Host: wmnfdb[wmnfdb] @ localhost []
# Thread_id: 950  Schema: wmnf_www  QC_hit: No
# Query_time: 34.284704  Lock_time: 0.000068  Rows_sent: 1010 Rows_examined: 13711
SET timestamp=1510330639;
SELECT option_name, option_value FROM wp_options WHERE autoload = 'yes';

找到另一个创建索引的帖子并做了:

ALTER TABLE wp_options ADD INDEX (`autoload`);

这花费了太长时间并且使网站离线。我在进程列表中发现了很多“等待表元数据锁定”。取消 ALTER TABLE 后,所有内容都再次运行,负载很高,当然慢查询日志中有条目。我还尝试使用离线 Web 服务器和干净的进程列表创建索引。如果我今晚再尝试创作,应该需要这么长时间吗?

【问题讨论】:

    标签: wordpress mariadb mysql-slow-query-log


    【解决方案1】:

    如果您要删除表的大部分,最好创建一个新表,复制所需的行,然后重命名。不幸的是,步骤期间任何添加/修改的行都不会反映在复制的表中。 (一个优点:您本来可以拥有新的索引。)

    this 中,我提供了多种方法来进行大删除。

    什么是可能挂起你的系统:

    一个大的DELETE 隐藏所有旧值以防回滚——这会杀死调用的DELETE!让它完成可能会更快。

    ALTER TABLE .. ADD INDEX -- 如果您使用的是 MySQL 5.5 或更早版本,则必须复制整个表。即使您使用的是较新的版本(可以做到ALGORITHM=INPLACE),仍然存在元数据锁。 wp_options 多久被触碰一次? (听起来次数太多了。)

    底线:如果您从尝试中恢复,但仍需删除,请在我的链接中选择最佳方法。之后,将索引添加到仅 20K 行应该需要一些时间,但不会很长。并考虑升级到 5.6 或更高版本。

    如需进一步讨论,请提供SHOW CREATE TABLE wp_options

    但是等等!如果autoload 是一个简单的是/否“标志”,则可能不使用索引。也就是说,添加索引可能是一种浪费! (对于低基数,执行表扫描更快比在索引 BTree 和数据 BTree 之间来回跳转。)请提供该帖子的链接;我想朝他们吐口水。

    【讨论】:

    • 帖子说先检查有多少“不”自动加载,我的有 95%:wordpress.stackexchange.com/questions/71691/…
    • 优化器(尚未)注意到分布不均并使用索引。
    • 查看 phpMyAdmin 中 all 的大小,我注意到我的数据库仅显示 3.1GB 大小,而之前我检查了 db 目录的磁盘空间,显示大小为 19GB。我发现这个 wp_options.ibd 是 15GB。我想我会在 WordPress stackexchange 中发布这个问题,因为这都是 WP 相关的。该 wp_options 表包含许多所谓的“transient”临时记录,当我清除过期的瞬变时情况会有所改善,但仍然是高负载和大索引文件。
    • 这些临时记录超过 800K,清除过期记录后只有 2500 个。大多数来自插件维护者验证并通过更新修复的插件中的错误。但是,即使 wp_options 表在清除后现在只有 131MB,这个索引文件仍然很大。我现在正在寻找清理它的方法。
    • @rwfitzy - 这是OPTIMIZE TABLE 的罕见用途之一。
    猜你喜欢
    • 2015-06-19
    • 1970-01-01
    • 1970-01-01
    • 2021-05-05
    • 1970-01-01
    • 1970-01-01
    • 2014-04-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多