处理PHP MySQL中并发更新请求的最佳方法?

处理PHP MySQL中并发更新请求的最佳方法?,php,mysql,database,database-performance,database-update,Php,Mysql,Database,Database Performance,Database Update,在5-10秒内,我在一个表上同时收到100秒的行更新请求,这导致了问题,它实际上没有更新行,而且在mysql\u查询($query)响应中也没有给出任何错误 请说明这可能是什么原因,我如何解决 表中大约有20万条记录。这可能是问题之一。检查存储引擎配置。听起来您实际上并没有执行“太多”插入,但如果您使用的是一个紧张的服务器(如廉价的共享主机),那么切换到更适合大量插入/更新的引擎可能会有所帮助: 可能/可能不适用于您特定情况的其他潜在解决方案: 1) 减少正在更新的表上的索引数,以提高更新/插

在5-10秒内,我在一个表上同时收到100秒的行更新请求,这导致了问题,它实际上没有更新行,而且在
mysql\u查询($query)
响应中也没有给出任何错误

请说明这可能是什么原因,我如何解决


表中大约有20万条记录。这可能是问题之一。

检查存储引擎配置。听起来您实际上并没有执行“太多”插入,但如果您使用的是一个紧张的服务器(如廉价的共享主机),那么切换到更适合大量插入/更新的引擎可能会有所帮助:

可能/可能不适用于您特定情况的其他潜在解决方案:

1) 减少正在更新的表上的索引数,以提高更新/插入的速度

2) 将传入的编辑缓存到较小的表(没有索引),然后定期同步它们


3) 将插入合并到一个查询中(尽管这听起来似乎对您不起作用),将它们全部插入内存中的临时表,然后插入到。。。从…中选择。。。对目标表执行单个事务。

“不给出任何错误”-您如何捕获代码中的错误?10秒钟内更新100次,对于正确配置的数据库而言,每秒更新10次不是大问题。由于我们不知道您的数据库是如何配置的,也不知道您的代码是做什么的,所以我们无法真正回答您做错了什么。@sandradev我只是在检查$response=mysql\u query($query);如果$response为false,则为错误。@deceze我们在该表上设置了一个id transactionId和一个索引。只需使用查询“updatestatus=1,其中transactionId='$transactionId'和someother=value”进行更新;请不要对新代码使用
mysql.*
函数。它们不再得到维护,社区已开始恢复。看到了吗?相反,你应该学习并使用或。如果你不能决定,将帮助你做出选择。如果你想学习,。我们已经有innoDB引擎了。很好的链接。尽管如此,假设他使用的是最新和最棒的,它将是最新的。当我测试一些东西时,默认引擎是InnoDB。至少对我来说是这样。