MySQL INSERT偶尔不会插入到数据库中

我有一个INSERT查询,它向数据库添加了一个命令,它已经在生产服务器上成功运行了几年,今天大约有10%的这些INSERT没有出现在数据库表中,代码没有改变运行这个查询,所以我假设这是基于性能的,因为最近服务器肯定是负载较重。

该表是MyISAM,在CentOS服务器上运行大约90,000条logging。

有没有任何疑难解答方法,我可以使用查看为什么查询不插入数据,因为我觉得服务器本身是瓶颈?

  • PHP magic_quotes_gpc =closures,但斜杠仍然被添加
  • 如何从NAT路由器后面区分连接?
  • 为什么我的WHICH PHP和WHEREIS PHP有不同的值?
  • PHP请求有时非常慢
  • 从PHP(sendmail?)获取用mail()发送的邮件日志
  • MediaWiki不显示样式 - “内部错误”
  • 2 Solutions collect form web for “MySQL INSERT偶尔不会插入到数据库中”

    高负载不会导致MySQL盲目地删除INSERT查询。 我的猜测是,你的应用程序可能在连接到数据库时出错,因此MySQL永远不会真正接收到INSERT查询。 我会build议检查你的代码,以确保你正在捕捉和loggingDB错误。

    顺便说一句,你真的检查过 ,看看服务器是否正在经历高负荷。 你说这个表有90k条logging(实际上是相当小的),但是你没有给出任何关于服务器处理多less个查询/秒的数字。 运行top ,观察高峰使用期间的平均负载,不仅要关注负载平均本身,还要关注Iowait中的时间进程的百分比( %wa top值)

    我也认为代码在执行过程中会忽略错误。 可能的原因:

    • 已达到MySQL连接限制(请参阅ErikA的答案)。 基本上服务器不会得到INSERT查询。 检查连接数(与“max_connections”相比,“SHOW GLOBAL STATUS;”中的threads_connected)。
    • 参数错误,INSERT失败,但错误被忽略。 启用MySQL查询日志以查看服务器是否获取具有错误参数的查询
    • 代码失败之前,它发送查询(例如由于魔术参数转换)。 检查php错误日志/networking服务器错误日志。
    服务器问题集锦,包括 Linux(Ubuntu, Centos,Debian等)和Windows Server服务器.