php - 一个连接可以获取另一个连接的详细信息吗?或者,我怎样才能获得最详细的待处理交易报告?

标签 php mysql

是否有 Mysql 语句提供任何其他打开的连接或用户的完整详细信息?或者,专门针对 myisam 表提供同样详细的状态报告。查看 Mysql 的 SHOW TABLE STATUS 文档,它缺少一些对我来说非常重要的信息。

我正在尝试做的事情:远程 odbc 连接之一是插入几千条记录,由于连接速度慢,这可能需要长达一个小时。 Tcp 连接二,在服务器的本地主机上使用 PHP,正在对该数据运行具有聚合函数的选择查询。在允许连接二运行这些查询之前,我希望连接二首先检查以确保在这些特定表上的任何其他连接上没有挂起的插入,以便它可以等到所有数据都可用。如果当前正在写入该表,我想根据未决插入的数量向连接二的用户吐出大约要等待多长时间。理想情况下,我想通过一个查询返回连接开始写入时的时间戳、剩余待完成的插入总数以及已经完成的插入总数。无需插入计数,即使知道写入和剩余写入的字节数在这里也能正常工作。

显然,因为连接二是通过 PHP 脚本的 tcp 连接,所以我在该脚本中真正可以使用的只是某种查询。我想如果必须的话,因为它在本地主机上,如果唯一的方法是通过输出此信息的 mysql 命令行选项,我可以 exec() 它,但我宁愿不这样做。我想我可以简单地在这个 PHP 脚本可以检查的大量插入任务之前和之后更新一个定制的事务日志,但希望已经有一个我可以利用的内置 Mysql 功能。

编辑“交易”是错误的词 - 语言冲突。我实际上并没有使用 Mysql 事务。我的意思是当前待处理的任务、查询和请求。

最佳答案

您可以发出 SHOW FULL PROCESSLIST; 来显示事件连接。

至于剩下的,mysql 不知道还剩下多少插入,也不知道它们需要多长时间。 (如果您使用的是 MyISAM 表,它们不支持事务)。服务器无法知道您的 PHP 脚本是否打算发送 10 个或 10000 个插入 - 如果您正在执行类似 insert into xxx select ... from ... 的操作 - mysql 不会不要跟踪/公开有关完成/剩余多少/多少的信息。

您最好通过其他表自行处理此问题,您可以在这些表中更新/插入有关何时开始聚合数据、跟踪状态、何时完成等的数据。

关于php - 一个连接可以获取另一个连接的详细信息吗?或者,我怎样才能获得最详细的待处理交易报告?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3010879/

相关文章:

php - MySQL程序更改字符集

java - 获取MYSQL最近更新的数据或最近插入的数据

javascript - 使用 Ajax 和 php 联系我们的网页

php - 从 mysql 查询到 php 的空白列表下拉列表

java - 转换用于 mysql 数据库的 java long unix 时间戳

MySQL 多维数组

mysql - SQL - 每个组合的总和

php - 密码保护页面?(具有数据库访问权限)

php - 如何修复 Composer 错误 : "could not scan for classes inside dir"?

php - 将 PHP 数组的内容存储在 MySQL 数据库中