【问题标题】:mysql: see all open connections to a given database?mysql:查看到给定数据库的所有打开连接?
【发布时间】:2009-10-25 11:24:47
【问题描述】:

有了 mysql 的管理权限,我如何查看到我的服务器中特定数据库的所有打开连接?

【问题讨论】:

    标签: mysql database


    【解决方案1】:

    命令是

    SHOW PROCESSLIST
    

    很遗憾,it has no narrowing parameters。如果您需要它们,您可以从命令行执行:

    mysqladmin processlist | grep database-name
    

    【讨论】:

    • mysqladmin -i 1 processlist 每秒刷新一次输出。
    • 如果需要认证mysqladmin --user=[USERNAME] --password=[PASSWORD] -i 1 processlist
    • @TomJenkinson 我通常不使用它,因为我不希望密码出现在命令行历史记录或进程列表中(ps aux)
    • 作为@chanux 的替代品,输出更简洁,恕我直言watch -n1 mysqladmin processlist
    【解决方案2】:

    你也可以使用:

    mysql> show status like '%onn%';
    +--------------------------+-------+
    | Variable_name            | Value |
    +--------------------------+-------+
    | Aborted_connects         | 0     |
    | Connections              | 303   |
    | Max_used_connections     | 127   |
    | Ssl_client_connects      | 0     |
    | Ssl_connect_renegotiates | 0     |
    | Ssl_finished_connects    | 0     |
    | Threads_connected        | 127   |
    +--------------------------+-------+
    7 rows in set (0.01 sec)
    

    随意使用 Mysql-server-status-variablesToo-many-connections-problem

    【讨论】:

    • 它不区分大小写,为什么%onn% 而不是%conn%
    • 当然可以使用 %conn% 而不是 %onn%。是的,大多数情况下它不区分大小写。如需区分大小写,请参阅dev.mysql.com/doc/refman/5.0/en/…
    • 这显示统计/历史数据。问题是关于当前打开的连接。
    【解决方案3】:

    在 MySql 中,以下查询将显示打开的连接总数:

    show status like 'Threads_connected';
    

    【讨论】:

      【解决方案4】:

      对于最新的 MySQL 版本,这应该可以解决问题:

      SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST WHERE DB = "elstream_development";

      【讨论】:

      • 这是唯一一个正确的,除了选择的那个,可以用SQL代替mysqladmin
      • 谢谢,这就是我想要的答案。
      • 这个答案很有帮助,显示所有连接及其查询,这对我来说很有帮助。
      【解决方案5】:

      从这里的监控上下文中,您可以轻松查看到按数据库排序的所有数据库的连接。有了这些数据就可以轻松监控。

      SELECT DB,USER,HOST,STATE FROM INFORMATION_SCHEMA.PROCESSLIST ORDER BY DB DESC;
      
      +------+-------+---------------------+-----------+
      | DB   | USER  | HOST                | STATE     |
      +------+-------+---------------------+-----------+
      | web  | tommy | 201.29.120.10:41146 | executing |
      +------+-------+---------------------+-----------+
      

      如果我们遇到任何主机达到最大连接数然后无法连接,那么我们可以通过刷新它来重置主机表,如下所示:

      FLUSH HOSTS;
      

      【讨论】:

        【解决方案6】:

        您可以调用 MySQL 显示状态命令

        显示状态,如“Conn%”;

        更多信息请阅读Show open database connections

        【讨论】:

        • 抱歉,这个解决方案只显示一个值。我更喜欢命令“show status like '%onn%';”这是在同一个参考网页中。
        • @RaulLuna,无论如何都不区分大小写,为什么用%onn% 而不是%conn%
        • @Pacerier 不仅如此:它只是以防万一“连接”词作为更大词的一部分出现(例如,max_used_connections)。当然,您可以使用显示状态,例如 '%conn%'
        • @RaulLuna,如果“连接”一词作为较大词的一部分出现,%onn%%conn% 仍然有效。没有区别。
        • 为什么要标记这个?它不显示当前打开的连接。
        【解决方案7】:

        SQL: 显示完整的进程列表;

        这就是 MySQL Workbench 的作用。

        【讨论】:

          【解决方案8】:

          在查询浏览器中右键单击数据库并选择进程列表

          【讨论】:

          • 这是特定于客户的。
          【解决方案9】:

          如果您运行的是 *nix 系统,还请考虑 mytop

          要将结果限制为一个数据库,请在运行时按“d”,然后输入数据库名称。

          【讨论】:

          • 这个应用内部不是也在使用show processlist吗?
          • 我相信确实如此。 mytop 只是通过过滤选项整齐地呈现信息。过去在分析性能问题时,我已经很好地利用了它。此外,在紧急情况下登录机器、运行 mytop 并立即查看发生了什么会更快。就像运行“top”一样。
          • 通过使用更多组件,您将面临更多错误。既然show processlist的输出满足,那你为什么还需要mytop呢?
          • 当“ps aux”满足时为什么要使用“top”?
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2011-03-18
          • 1970-01-01
          • 1970-01-01
          • 2011-09-24
          • 2012-08-06
          • 1970-01-01
          相关资源
          最近更新 更多