积极答复者
session_id与spid

问题
答案
-
你好,
一个会话对应一个session_id, session_id是该会话的唯一标识符。在SQL Server中session_id是SQL实例的会话标识符。
SPID顾名思义是进程ID, 其实本质上是session, 在SQL Server 2000版本以前,SPID 和session_id 其实是一样的。每次一个应用程序连接到SQL Server, 一个新的SPID 就被创建了。
SQL Server 通过WORKER, SCHEDULER, TASK等来对任务进行调度和处理:
通常SCHEDULER的数量和CPU 的数量是一样的。
而WORKER (又称为WORKER THREAD), 则是工作线程。在一台服务器上,我们可以有多个工作线程。因为每一个工作线程要耗费资源,所以,SQL Server有一个最大工作线程数。一个TASK进来,系统会给它分配一个工作线程进行处理。但是当所有的工作线程都在忙,而且已经达到了最大工作线程数,SQL Server就要等待,直到有一个忙的工作线程被释放。最大工作线程数可以通过下面的查询得到。SQL SERVER并不是一开始就把这些所有的工作线程都创建,而是依据需要而创建。
TASK是由BATCH而来。我们知道,一个连接,可以包含多个BATCH,而每个BATCH则可以分解成多个TASK。
他们之间的关系是这样的,每个连接都有相应的SPID,然后每个连接里又有很多batch,每个batch又可以分解为多个task。然后每个CPU会对应一个SCHEDULER,每个SCHEDULER会有多个worker,而Worker是真正的执行单元,当一个worker用完了,新的连接就会失败。
这篇文章介绍了这些关系,请您参考下:http://www.cnblogs.com/nzperfect/archive/2011/11/28/2265921.html .Thanks,
Amy Peng
Please remember to click "Mark as Answer" and "Vote as Helpful" on posts that help you. This can be beneficial to other community members reading the thread.
- 已编辑 Amy PengMicrosoft employee, Moderator 2012年10月17日 3:56
- 已标记为答案 Amy PengMicrosoft employee, Moderator 2012年10月22日 6:11
-
LZ可以看一下我写的这篇文章,里面介绍了scheduler 、worker 、 task 、 yieding这几个名词的概念与SQLSERVER独特的任务调度系统SQLOS
文章地址:
- 已编辑 Steven.桦仔 2012年10月18日 1:49
- 已标记为答案 Amy PengMicrosoft employee, Moderator 2012年10月22日 6:11
全部回复
-
你好,
一个会话对应一个session_id, session_id是该会话的唯一标识符。在SQL Server中session_id是SQL实例的会话标识符。
SPID顾名思义是进程ID, 其实本质上是session, 在SQL Server 2000版本以前,SPID 和session_id 其实是一样的。每次一个应用程序连接到SQL Server, 一个新的SPID 就被创建了。
SQL Server 通过WORKER, SCHEDULER, TASK等来对任务进行调度和处理:
通常SCHEDULER的数量和CPU 的数量是一样的。
而WORKER (又称为WORKER THREAD), 则是工作线程。在一台服务器上,我们可以有多个工作线程。因为每一个工作线程要耗费资源,所以,SQL Server有一个最大工作线程数。一个TASK进来,系统会给它分配一个工作线程进行处理。但是当所有的工作线程都在忙,而且已经达到了最大工作线程数,SQL Server就要等待,直到有一个忙的工作线程被释放。最大工作线程数可以通过下面的查询得到。SQL SERVER并不是一开始就把这些所有的工作线程都创建,而是依据需要而创建。
TASK是由BATCH而来。我们知道,一个连接,可以包含多个BATCH,而每个BATCH则可以分解成多个TASK。
他们之间的关系是这样的,每个连接都有相应的SPID,然后每个连接里又有很多batch,每个batch又可以分解为多个task。然后每个CPU会对应一个SCHEDULER,每个SCHEDULER会有多个worker,而Worker是真正的执行单元,当一个worker用完了,新的连接就会失败。
这篇文章介绍了这些关系,请您参考下:http://www.cnblogs.com/nzperfect/archive/2011/11/28/2265921.html .Thanks,
Amy Peng
Please remember to click "Mark as Answer" and "Vote as Helpful" on posts that help you. This can be beneficial to other community members reading the thread.
- 已编辑 Amy PengMicrosoft employee, Moderator 2012年10月17日 3:56
- 已标记为答案 Amy PengMicrosoft employee, Moderator 2012年10月22日 6:11
-
LZ可以看一下我写的这篇文章,里面介绍了scheduler 、worker 、 task 、 yieding这几个名词的概念与SQLSERVER独特的任务调度系统SQLOS
文章地址:
- 已编辑 Steven.桦仔 2012年10月18日 1:49
- 已标记为答案 Amy PengMicrosoft employee, Moderator 2012年10月22日 6:11