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

时间:2021-10-08 16:54:38

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

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

有天论坛里有人问,一时间并发连接很多,是不是可以在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中有任何的错误:

<TdsInputBufferError>0</TdsInputBufferError>

<TdsOutputBufferError>0</TdsOutputBufferError>

<TdsInputBufferBytes>60</TdsInputBufferBytes>

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

<SessionIsKilled>1</SessionIsKilled>

上面ring buffer文章的链接:

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

还有关于SNI,看下面的SniConnectionId

 <Record id="2" type="RING_BUFFER_CONNECTIVITY" time="110448275">
<ConnectivityTraceRecord>
<RecordType>ConnectionClose</RecordType>
<RecordSource>Tds</RecordSource>
<Spid>55</Spid>
<SniConnectionId>B7882F3C-3BA9-45A7-8D23-3C5C05F9BDF9</SniConnectionId>
<SniProvider>4</SniProvider>
<RemoteHost>&lt;local machine&gt;</RemoteHost>
<RemotePort>0</RemotePort>

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

2013-9-16补充:

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

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

关于TDS协议:

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

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