MySQL查询和数据调试


MySQL Query and Data Debugging

我正在管理一个网站,该网站有大约140.000个文档。该系统使用相同的设置运行了两年多,没有出现任何问题。我们不得不将服务器迁移到一个新的基础设施上,从那以后出现了一些异常情况。

每个文档在数据库中都有一个状态。状态代码(int)5表示文档已删除。

每隔一个小时左右,大约10份文档的状态代码就会变为5。我们不会丢失实际文档,但最终用户无法使用它。我正试图找出问题的原因,但找不到它的来源。

我们有两个查询可以更改文档的状态。我暂时禁用了其中一个,并在代码库中将已删除文档的状态代码更改为6。

然而,我们仍然有同样的问题,状态代码更改为5,而不是6。

我已经启用了查询日志,并花了几个小时,但除了view_count的增加之外,没有对那些删除的文档进行更新查询,这是一个非常简短和简单的查询。文档在被删除的同时,也会被其他人请求。但是,所有查询都是选择查询(除了view_count),其他文档之间没有区别。我们每秒有数百次页面浏览。其中只有一个会被随机删除。

因此,如果我能在查询日志中看到,我可以尝试在代码库中找到特定的查询。然而,它甚至没有显示任何东西。所以,我现在一无所知。

你有什么建议吗?我必须解决这个问题,所以我可以尝试任何事情。

新系统是;

Debian 6.0.5MySQL 5.5.24-Percona BuildPHP-NGINX-SOLR盒

使用Jet Profiler或Percona Toolkit配置UPDATE查询,分析它们,您就会找到答案。

常规查询日志也可以帮助您查找特定的更新查询。

Percona Toolkit非常棒,但它甚至没有显示任何与此问题相关的内容。(包括tcpdump等)

我已经安装了Oracle构建的MySQL 5.5.25a,它起作用了。这是我整个职业生涯中见过的最奇怪的bug。