分享一张SQLSERVER执行流程的图片

分享一张SQLSERVER执行流程的图片

分享一张SQLSERVER执行流程的图片_第1张图片

 

有天论坛里有人问,一时间并发连接很多,是不是可以在SSMS里配置连接池

连接池是属于客户端的,配置只能在连接字符串里配置,修改你的连接字符串,SSMS没有一个界面可以配置连接池的

可能系统中很多进程,每个进程都使用他们各自的连接池,这些连接池是进程之间不能共享的,也就是说每个进程的都有他们各自独立的连接池,

如果A连接池的连接数是22767,那么B连接池就算你在连接字符串里设置max pool size=32767,也只能使用10000个连接

估计SniConnectionId就是标识每个进程的连接池ID的

大家可以看一下这篇文章,关于连接池的

非常老的话题 SQLSERVER连接池

SQLSERVER连接池内部机制

 

SQLSERVER2008开始使用Ring Buffer技术,当使用TCP协议进行连接时,可以获得更多的相关信息-例如,本地IP地址,端口,以及远程IP地址和端口,从而允许你唯一的确定客户机及其应用。另外,Ring Buffer包括了一个时间戳以及与之相对应的SPID(如果有的话),这样才能形成一个完整的对应关系。(因为随着时间的推移SPID会被不同的连接所重用)。 我们同样可以看到客户发的TDS包中有多少bytes,并且可以知道是否在TDS中有任何的错误:

0

0

60

  最相关的,最易于分析的信息记录在TdsDisconnectFlags中,有一系列的值,记录了关闭连接的状态。这里,我们看到没有发现错误,但是这里记录了这也不是一个正常的断开或者一个正常的登出。从如下的flag中,这个session是被杀死的:

1

上面ring buffer文章的链接:

利用Ring Buffer在SQL Server 2008中进行连接故障排除

还有关于SNI,看下面的SniConnectionId

1 <Record id="2" type="RING_BUFFER_CONNECTIVITY" time="110448275">
2 <ConnectivityTraceRecord>
3 <RecordType>ConnectionCloseRecordType>
4 <RecordSource>TdsRecordSource>
5 <Spid>55Spid>
6 <SniConnectionId>B7882F3C-3BA9-45A7-8D23-3C5C05F9BDF9SniConnectionId>
7 <SniProvider>4SniProvider>
8 <RemoteHost>&lt;local machine&gt;RemoteHost>
9 <RemotePort>0RemotePort>

 

--------------------------------------------------------------------------------------

2013-9-16补充:

地址:http://kb.cnblogs.com/page/188200/

分享一张SQLSERVER执行流程的图片_第2张图片

 

关于TDS协议:

表格数据流协议TDS
TDS协议解析(转载)

 

如果有不对的地方,欢迎大家拍砖o(∩_∩)o

转载于:https://www.cnblogs.com/lyhabc/p/3139578.html

你可能感兴趣的:(分享一张SQLSERVER执行流程的图片)