我们有一个带有大约20GB数据的MyISAM表,带有FULLTEXT索引。我们有几个操作该表的触发器,每秒调用大约10次。现在我们要运行OPTIMIZE TABLE来重建索引。 AFAIK OPTIMIZE TABLE锁定表以进行写入。那么,如果OPTIMIZE TABLE需要大约6个小时,触发器创建的查询会发生什么?这是个问题吗?查询会在一段时间后被删除吗?或者我们还可以做些什么来重建索引?
答案 0 :(得分:1)
当表被锁定时,表中不会发生任何写入操作。尝试写入的任何触发器都将挂起,直到它们获得锁定等待超时。
您可以使用pt-online-schema-change执行表格重组,而不会阻止对原始表格的访问。
否则,在主 - 主复制中配置一对服务器,在第二个主服务器上执行优化表,然后交换他们的角色并在第一个主服务器上执行优化表。
答案 1 :(得分:0)
有更多更好的选择。 (1)为MyISAM设置“concurrent_insert = 1”。 (2)使用InnoDB,它优化了全文搜索索引。这个摘要基于我在这里读到的内容..
https://dba.stackexchange.com/questions/36666/bypass-myisam-table-lock