【发布时间】:2014-09-11 15:56:14
【问题描述】:
在过去的 4 天里,我的夜间更新遇到了很多问题,除了 1 晚之外,这 4 天之间一切都很好。
在这些更新期间,我更新了几个全文索引。我是这样做的。
- 删除全文索引
- 更新全文表格
- 添加全文索引
这已经完美运行了 2 年多。通常更新时间约为 3-4 小时,这对于每晚更新的数据量来说是正常的。但从周五开始,更新时间确实在 9-12 小时之间!
昨晚服务器被引擎故意崩溃了,这是在错误日志中
InnoDB:警告:信号量等待很长: --线程 8676 在 dict0boot.ic 第 36 行等待了 241.00 秒,信号量:Mutex at 0000000053B0C1E8 创建了文件 dict0dict.cc 第 887 行,锁定 var 1 服务员标志 1 InnoDB:###### 启动 InnoDB 监控 30 秒以打印诊断信息:InnoDB:待处理的预读 0, 写入 0
InnoDB:###### 诊断信息打印到标准错误流 InnoDB:错误:信号量等待已持续 > 600 秒 InnoDB:我们 故意使服务器崩溃,因为它似乎已挂起。 2014-07-21 05:20:54 1384 InnoDB:线程 4996 中的断言失败 文件 srv0srv.cc 第 1748 行
InnoDB:我们故意生成内存陷阱。 InnoDB:提交一个 详细的错误报告给http://bugs.mysql.com。 InnoDB:如果你得到 重复的断言失败或崩溃,甚至 InnoDB:紧接着 mysqld 启动,可能有 InnoDB: corruption in the InnoDB 表空间。请参考 InnoDB: http://dev.mysql.com/doc/refman/5.6/en/forcing-innodb-recovery.html InnoDB:关于强制恢复。
我刚刚重新启动了服务器,一切正常,所以现在我正在等待在 bugs.mysql.com 中发布完整的错误报告
我在这个page 上发现了一些东西,似乎是同一类型的问题,但没有进一步的消息。
我不知道从哪里开始,我不知道为什么会突然发生这种情况。
我必须从这里提供什么样的详细信息?
- Mysql服务器版本:5.6.13
- sort_buffer_size = 2M
- innodb_buffer_pool_size = 53G
- innodb_log_buffer_size = 4M
- innodb_flush_log_at_trx_commit = 0
- innodb_log_file_size = 25G
编辑
阅读this后,声明
“MySQL 5.6 及更高版本中的架构变化使工作负载增加 比以前更适合禁用自适应哈希索引 发布,尽管它仍然默认启用。”
我已使用禁用自适应哈希索引
SET GLOBAL innodb_adaptive_hash_index=0
我现在正在尝试第一次尝试查看问题是否已解决。情况就像晚上一样。
夜间更新:
更新很顺利。不到6小时。全文索引更新没有问题,但是我仍然发现使用JOIN 的简单更新查询很慢。 (8 秒内的 40000 条记录,通常在不到 1 的时间内完成)。
今天将继续尝试和微调它。
【问题讨论】:
-
@Darren,似乎是同一个问题,但由于没有提供更多信息,问题已关闭。
-
我从this找到的。
-
@Darren 谢谢,我会立即查看。
-
让我知道进展如何,这看起来是一个相当有趣的问题!
标签: mysql sql innodb alter-table full-text-indexing