有没有一种方法可以通过MySQL配置停止MYSQL延迟插入?

4

我遇到了一个有关我们其中一台服务器的奇怪问题。我发现MySQL的插入操作出现了延迟。

+--------+----------------+-----------+------------------+----------------+------+--------------------+------------------------------------------------------------------------------------------------------+
| Id     | User           | Host      | db               | Command        | Time | State              | Info                                                                                                 |
+--------+----------------+-----------+------------------+----------------+------+--------------------+------------------------------------------------------------------------------------------------------+
| 219586 | DELAYED        | localhost | XXXX             | Delayed insert | 202  | Waiting for INSERT |                                                                                                      |

在很少使用的数据库上进行插入操作。从MySQL手册中了解到,这些插入操作等待其他插入操作,以便优化高度使用的数据库批量/块写入插入操作。不幸的是,他们说这种方法消耗大量内存,在很少使用的数据库上使用时效率极低。在这种特殊情况下,每天只有10-20个查询请求该数据库,这使得延迟变得极其巨大,甚至长达一整天。其他数据库/用户也存在类似问题,当它们累加起来时,它们似乎会加载MySQL的内存使用和CPU。

有没有办法防止延迟查询被延迟?比如让它们像普通查询一样运行?

提前感谢!

祝好, Venetsian。

2个回答

5
  1. 您可以使用FLUSH TABLES或'KILL 219586'来强制该线程完成其工作并退出。
  2. 在配置文件中设置max_delayed_threads=0,并重新启动实例以完全禁用DELAYED功能。
  3. 阅读文档-这将比在论坛等待6小时更快。

5
通常来说,等待6小时以获取答案比尝试解读MySQL文档要容易得多,尤其是在Windows上运行MySQL时,因为差异微妙到足以引起头痛。=) - Rob

2
不用担心那个线程。它只是为了将来可能出现的延迟插入而保留下来的。实际上它并没有做任何事情。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接