SQL 会话状态的生命周期是多少?

What is life cycle of SQL session state?

我搜索了 SQL 会话状态生命周期及其工作原理,但没有找到任何网站对其进行解释。 我只找到了如何配置它。

我尝试了什么:我用两台服务器创建了网络农场并在其上应用了 SQL 会话,但我不知道 SQL 会话如何工作? 用户的每个请求是否都需要从数据库中读取他的会话 ID?
.Net 事件如何处理 SQL 会话? SQL 会话是否临时保存在内存中?

我搜索了 SQL 会话,

SQL会话是并发的,下面是关于SQL会话如何工作的解释: https://msdn.microsoft.com/en-us/library/aa478952.aspx

为了测试并发性,我让 MVC 应用程序使用 SQL 会话,该应用程序包含两个控制器:Home、Account。 我应用了两个试验来测试并发性:

试验 1:两个控制器访问 SQL 会话。

• 使 Home 控制器包含写入 SQL 会话的操作,然后休眠 30 秒,如下所示:

• 使帐户控制器包含从 SQL 会话中读取的操作,如下所示:

• 启动应用程序并打开两个选项卡:第一个选项卡用于主页,第二个选项卡用于帐户。当我打开第二个标签时,它打开了!并且不等待第一个选项卡结束他的请求,并且 ViewBag.Name 具有空值;发生这种情况是因为到目前为止还没有 SQL 会话保存在数据库中。

• 家庭控制 Web 请求结束保存在数据库中的会话状态后,我刷新 tab1,然后刷新 tab2,并注意到选项卡 2 等待选项卡 1 结束他的 web 请求。

试用 2:一个控制器访问会话。

• 在试用 1 中使用家庭控制器代码。

• 修改帐户控制器并从会话中删除读取代码,如下所示:

• 我打开了两个选项卡:选项卡 1 用于主页,选项卡 2 用于帐户;选项卡 2 等待选项卡 1 结束他的网络请求。

• 为了使选项卡 2 不等待选项卡 1,我禁用了帐户控制器会话状态,如下所示:


对于读写 SQL 会话,ASP.NET 工作进程在每个 Web 请求结束时将属于客户端会话集合的对象存储在 SQL 服务器中。

我使用 SQL 分析器工具在 SQL 会话 read/write 时进行跟踪。