MySQL中的SESSION是什么?

3

我想要通过PHP脚本来计算生成页面所用到的MySQL查询数量。我使用以下查询语句:

SHOW SESSION STATUS WHERE Variable_name LIKE  'Questions';

但是它给了我一个很大的数字(百万级别)。我已经搜索了MySQL文档和手册,但没有找到“session”究竟是什么意思的定义。

似乎会话并不等同于当前连接。

如果有人能解释一下什么是会话、何时开始和结束,我将非常感激。


这是你的答案:- http://dba.stackexchange.com/questions/54337/difference-between-show-status-and-show-global-status-in-mysql 请检查正确答案并仔细阅读。 - Alive to die - Anant
我找到了一种确定查询数量的方法。我在脚本开头和结尾运行上述查询,并计算两个值之间的差异。然而,我的主要问题仍未得到回答。我真的想了解MySQL中的会话是什么。 - Phantom Lord
我不太确定,但如果您在php中创建了一个连接并且没有明确关闭它,那么它将保持打开状态。 - Alive to die - Anant
1
也许有用?MYSQL中的本地、会话和全局变量。解释了什么是“会话”。 - Ryan Vincent
这是最有用的链接!谢谢!我希望我能在它旁边放一个绿色的勾 :) - Phantom Lord
显示剩余3条评论
1个回答

1

来自 MySQL 手册:

使用 SESSION 修饰符,该语句会显示当前连接的状态变量值。如果变量没有会话值,则显示全局值。

我认为问题在于,如果您在第一次创建数据库连接时运行 SHOW SESSION STATUS LIKE 'Questions';,则尚未执行任何查询,因此显示了 GLOBAL 数据。当您通过命令行 mysql 客户端连接时,客户端会在启动时执行几个查询,因此会话已设置此变量。请在运行 SHOW SESSION STATUS LIKE 'Questions' 之前运行查询。


不,这绝对不是全局数据,因为当我在脚本开头和结尾计算“Questions”的差异时,在重新加载目标网页时仍保持不变。我尝试运行“SHOW GLOBAL STATUS”查询,每次差异都会改变(因为其他用户同时查看该站点)。我认为最正确的答案是PHP保持连接处于活动状态。然而,另一个问题出现了:PHP是否为每个PHP会话打开并保留mysql会话?看起来是的。 - Phantom Lord
这可能取决于诸如连接池和持久性等因素。您能否在问题中发布调用它的PHP代码,并显示您如何连接到MySQL? - Will
我注意到不同版本的PHP的行为不同,所以我认为没有必要展示我的代码,因为它依赖于PHP的版本。 - Phantom Lord

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接