Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/266.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
检测MySQL表何时处于readlock状态(来自PHP)_Php_Mysql - Fatal编程技术网

检测MySQL表何时处于readlock状态(来自PHP)

检测MySQL表何时处于readlock状态(来自PHP),php,mysql,Php,Mysql,我需要一个PHP应用程序来检测MySQL数据库何时处于readlock状态,并抛出一条错误消息。很简单,但是我们是否可以运行任何MySQL命令来检查当前的锁定状态,而不仅仅是让系统卡住,因为查询排队等待解锁 干杯 约翰纳森 编辑:DBA正在将数据库置于readlock中,但我们的客户希望应用程序自动处理此应用程序。。。我在浏览文档时没有发现任何东西,因此询问专家:-)由于您的PHP脚本正在等待MySQL服务器的响应,因此在执行时可能很难确定它提交的查询处于何种状态。如果您在查询中遇到读取锁定问题

我需要一个PHP应用程序来检测MySQL数据库何时处于readlock状态,并抛出一条错误消息。很简单,但是我们是否可以运行任何MySQL命令来检查当前的锁定状态,而不仅仅是让系统卡住,因为查询排队等待解锁

干杯

约翰纳森


编辑:DBA正在将数据库置于readlock中,但我们的客户希望应用程序自动处理此应用程序。。。我在浏览文档时没有发现任何东西,因此询问专家:-)

由于您的PHP脚本正在等待MySQL服务器的响应,因此在执行时可能很难确定它提交的查询处于何种状态。如果您在查询中遇到读取锁定问题,您最好着手解决问题,并调查为什么您的查询会被锁定到导致脚本挂起的地步,而不是仅仅为它拼凑一些粗略的处理程序,因为锁定的查询可能表明存在严重的潜在问题

有关如何调整MySQL服务器的启动变量以帮助提高性能的建议,请参阅MySQL文档和MySQL性能博客。另外,请确保您正在以管理的方式小心地使用PHP会话——如果您同时有许多来自单个用户对服务器的异步请求,PHP有时可能会挂起,因为会话文件被多个线程锁定,从而导致数据库查询挂起。这是我们遇到的一个严重问题

锁定的查询可能很难排除故障,但最好的办法是调查它们被锁定的根本原因并加以解决。执行显示完整进程列表;将为您提供与数据库的所有打开连接的列表,并可以为您提供信息,帮助您识别正在锁定后续查询的运行缓慢的查询


希望这会有所帮助,祝你好运。

因为你的PHP脚本正在等待MySQL服务器的响应,所以在执行时可能很难确定它提交的查询处于什么状态。如果您在查询中遇到读取锁定问题,您最好着手解决问题,并调查为什么您的查询会被锁定到导致脚本挂起的地步,而不是仅仅为它拼凑一些粗略的处理程序,因为锁定的查询可能表明存在严重的潜在问题

有关如何调整MySQL服务器的启动变量以帮助提高性能的建议,请参阅MySQL文档和MySQL性能博客。另外,请确保您正在以管理的方式小心地使用PHP会话——如果您同时有许多来自单个用户对服务器的异步请求,PHP有时可能会挂起,因为会话文件被多个线程锁定,从而导致数据库查询挂起。这是我们遇到的一个严重问题

锁定的查询可能很难排除故障,但最好的办法是调查它们被锁定的根本原因并加以解决。执行显示完整进程列表;将为您提供与数据库的所有打开连接的列表,并可以为您提供信息,帮助您识别正在锁定后续查询的运行缓慢的查询


希望这会有所帮助,祝你好运。

在检查文档后,似乎没有通过PHP的mysql C API实现这一点的方法

您可以通过运行“ShowEngine[EngineName]STATUS”来查看检测到的死锁,将引擎名称替换为INNDOB、MyISAM或锁定表正在运行的任何引擎

您还可以通过从命令行运行“mysqladmin debug”来获取锁信息

人们已经请求了一个SHOW LOCKS命令,但它还不存在


这是我能从文件中确定的全部内容。我希望其他人对此有一个解决方案,因为它可能对我非常有用。

检查文档后,似乎没有办法通过PHP的mysql C API实现这一点

您可以通过运行“ShowEngine[EngineName]STATUS”来查看检测到的死锁,将引擎名称替换为INNDOB、MyISAM或锁定表正在运行的任何引擎

您还可以通过从命令行运行“mysqladmin debug”来获取锁信息

人们已经请求了一个SHOW LOCKS命令,但它还不存在


这是我能从文件中确定的全部内容。我希望其他人对此有一个解决方案,因为它可能对我非常有用。

如果你的应用程序是唯一访问并可能锁定上述数据库的东西,那么在尝试访问数据库之前,你可以使用和mysql函数


如果你无法控制它如何被锁定,那么我将不得不听从这里比我更聪明的人。

如果你的应用程序是唯一访问并可能锁定上述数据库的东西,那么在尝试访问数据库之前,你可以使用和mysql函数


如果你无法控制它的锁定方式,那么我将不得不听从这里比我更聪明的人。

对不起,我不够清楚。。查询被锁定,因为DBA将在维护期间锁定数据库,使其不受新更新的影响。但是,客户端希望他们的应用程序能够在表被锁定时自动检测并抛出错误消息…抱歉,我不够清楚。。查询被锁定,因为DBA将在维护期间锁定数据库,使其不受新更新的影响。然而,客户端希望他们的应用程序能够在表被锁定时自动检测并抛出错误消息……很高兴我能提供帮助。我完全忘记了这个答案:)很高兴我能帮上忙。我完全忘记了这个答案:)