首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从INFORMATION_SCHEMA.PROCESSLIST`理解“`SELECT *”的结果

从INFORMATION_SCHEMA.PROCESSLIST`理解“`SELECT *”的结果
EN

Stack Overflow用户
提问于 2011-02-07 16:23:03
回答 2查看 5K关注 0票数 1

我想确保我的php代码和我的网站不使用永久连接。

我使用下面的sql查询来检查,但我不太理解输出,

代码语言:javascript
运行
复制
$sql = "SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST";
$items = $connection -> fetch_all($sql);
print_r($items);

下面是输出,

代码语言:javascript
运行
复制
Array
(
    [0] => Array
        (
            [ID] => 43
            [USER] => root
            [HOST] => localhost:52246
            [DB] => xxx_2010
            [COMMAND] => Query
            [TIME] => 0
            [STATE] => executing
            [INFO] => SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST
        )

    [1] => Array
        (
            [ID] => 38
            [USER] => root
            [HOST] => localhost:52140
            [DB] => 
            [COMMAND] => Sleep
            [TIME] => 423
            [STATE] => 
            [INFO] => 
        )

)

当我点击另一页时,

代码语言:javascript
运行
复制
Array
(
    [0] => Array
        (
            [ID] => 44
            [USER] => root
            [HOST] => localhost:52301
            [DB] => xxx_2010
            [COMMAND] => Query
            [TIME] => 0
            [STATE] => executing
            [INFO] => SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST
        )

    [1] => Array
        (
            [ID] => 38
            [USER] => root
            [HOST] => localhost:52140
            [DB] => 
            [COMMAND] => Sleep
            [TIME] => 1026
            [STATE] => 
            [INFO] => 
        )

)

为什么总是输出两个数组?在[COMMAND]中查询/睡眠意味着什么?在[STATE]中,它说第一个数组中的executing然后在第二个数组中变为空-这是否意味着db连接一旦页面被发送就断开连接。

还有,[TIME] => 0 and [TIME] => 423 -这是什么意思?

为什么会有几个键显示不同的值,如[HOST] => localhost:52246, [HOST] => localhost:52140, [ID] => 43, [ID] => 38

抱歉我刚才问了一些愚蠢的问题..。

谢谢。

编辑:

现在,在我的浏览器上关闭phpMyadmin之后,我在输出中看到了这个,

代码语言:javascript
运行
复制
Array
(
    [0] => Array
        (
            [ID] => 59
            [USER] => root
            [HOST] => localhost:53195
            [DB] => xxx_2010
            [COMMAND] => Query
            [TIME] => 0
            [STATE] => executing
            [INFO] => SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST
        )

)

因此,每当我点击我的网站,它总是返回[STATE] => executing -这是否意味着我的网站是永久连接?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-02-07 16:30:07

您可以从root用户打开一个连接,该连接已经空闲了相当长的时间( ID相同,睡眠时间相当长)。有些东西打开了,但没有关闭它(可能是来自PHPMyAdmin的未关闭连接,或者类似的东西).

您的应用程序没有使用相同的连接(从ID列可以看到)。至于另一个连接,您可以尝试对它进行KILL并查看它是否返回。如果没有,我就不会太担心了。

还有一件事,不要使用root登录到MySQL服务器。创建具有有限权限的用户,并授予流程权限。但千万别以一个自以为是的用户的身份联系.

票数 1
EN

Stack Overflow用户

发布于 2011-02-07 16:26:24

MySQL文档给出了对所有这些领域相当全面的解释

状态'Executing‘表示它所表示的内容(这是您的查询),’睡眠‘表示线程正在等待来自客户端的新命令。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4923638

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档