我需要一个 PHP 应用程序来检测 MySQL 数据库何时处于读锁定状态,并抛出错误消息。很简单,但是我们是否可以运行任何 MySQL 命令来检查当前的锁定状态,而不只是让系统陷入困境,因为查询正在排队等待解锁?
编辑:数据库被 DBA 置于读锁状态,但我们的客户希望应用程序自动处理这种情况...我在浏览文档时没有找到任何内容,因此询问专家:-)
最佳答案
由于您的 PHP 脚本正在等待 MySQL 服务器的响应,因此可能很难确定它所提交的查询在执行时处于什么状态。如果您在查询中遇到读锁问题,那么您最好解决问题并调查为什么您的查询被锁定到导致脚本挂起的程度,而不是仅仅将一些粗略的处理程序搞砸对于它,因为锁定的查询可能表明存在严重的潜在问题。
请参阅 MySQL 文档和 mysql 性能博客,了解如何调整 MySQL 服务器的启动变量以帮助提高性能。还要确保您以托管方式谨慎使用 PHP session - 如果单个用户同时向服务器发出大量异步请求,PHP 有时会挂起,因为 session 文件被多个线程锁定,从而使数据库查询随之挂起。这是我们遇到的一个严重问题。
锁定查询的故障排除可能非常棘手,但您最好做的是调查它们被锁定的根本原因并解决它。执行SHOW FULL PROCESSLIST;将为您提供与数据库的所有打开连接的列表,并可以为您提供信息来帮助您识别锁定后续查询的运行缓慢的查询。
希望有帮助,祝你好运。
关于php - 检测 MySQL 表何时处于读锁定状态(来自 PHP),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1874346/