我们的Our服务器将一些跟踪信息写入MySQL数据库(使用INSERT延迟到MyISAM表)。当在此表上执行大型SELECT查询或由于另一原因锁定它时,When服务器进程(插入延迟)正在等待数据库,在某些情况下,Apache达到了MaxServer限制,因此它们将停止服务请求。
我们使用INSERT延迟是因为
INSERT语句的延迟选项是标准SQL的MySQL扩展,如果您的客户端不能或不需要等待插入完成,这个扩展非常有用。如果您使用MySQL进行日志记录,并且定期运行SELECT和UPDATE语句,这些语句需要很长时间才能完成,这是常见的情况。
引用MySQL文档的话。
我想知道为什么Apache进程等待插入延迟完成。我该怎么做才能把数据发出去然后忘掉它呢。(因为这是日志数据,所以我不在乎我们是否丢失了一些条目。)即使锁定了表,PHP脚本也应该继续运行,而不应该等待MySQL的答复。
(我们不想为这个表设置主从程序,但是我们正在考虑将这些数据移动到某个NoSQL数据库。但是现在,我想知道为什么INSERT延迟不像预期的那样工作。)
发布于 2011-01-03 20:11:21
在我看来,你是在做正确的事情来得到你想要的东西,而你所描述的就是它的工作方式。思想:
https://serverfault.com/questions/218275
复制相似问题