欢迎来到天天文库
浏览记录
ID:22820294
大小:58.00 KB
页数:8页
时间:2018-10-31
《microsoft sql server 连接知识--》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、MicrosoftSQLServer连接知识>> 该堆栈的顶部是API或对象库层。应用程序通过对象库公开的API函数或接口连接到Microsoft®SQLServer。用于访问SQLServer的API示例包括ODBC和DB-Library。用于访问SQLServer的对象库示例包括OLEDB、ADO和ADO.。由于ADO最终使用OLEDB与服务器通信,因此S计划程序。当客户端连接到服务器时,这些客户端将指定给具有最少连接数的计划程序。连接后,客户端将不会更换计划程序-它将始终受到指定计划程序的控制,直到连接断开。 这对与服务器建立多个连接的应用程序很重要。如
2、果应用程序性能较差,或无法在它的多个连接上平均分配工作,则在该应用程序的某些连接之间可能造成不必要的CPU资源争用,而其他连接实际上却处于空闲状态。 例如,应用程序与双处理器计算机上运行的SQLServer建立了四个连接,连接1和3隶属于处理器0,连接2123下一页>>>>这篇文章来自..,。和4隶属于处理器1。如果应用程序的大部分工作通过连接1和3执行,则这两个连接将争用CPU0,而CPU1实际上可能仍处于空闲状态。这种情况下,应用程序只能断开某些连接或重新连接某些连接,并希望连接1和3隶属于不同的CPU(连接时无法指定处理器隶属关系),或在它的连接上重新分配工作负荷
3、,以便每个连接的工作负荷更加均衡。当然,后一种情况要远好于前一种情况。 连接内存 SQLServer为客户端请求的每个连接保留三个数据包缓冲区。每个缓冲区的大小取决于sp_configure存储过程指定的默认网络数据包大小。如果默认网络数据包大小小于8KB,则这些数据包的内存将由SQLServer的缓冲池提供。否则,该内存将由SQLServer的MemToLeave区域分配。 值得一提的是,.FrameToLeave区域提供。而典型的ADO应用程序却不同,它们的默认数据包大小为4KB,因此缓冲区将由SQLServer缓冲池分配。 事件 连接后的客户端请求
4、通常分为两种广泛类别:语言事件和远程过程调用。尽管还存在其他类别,但大多数由SQLServer客户端发送到服务器的请求由以下两种类型之一构成:语言事件是从客户端发送到服务器的一组T-SQL。例如,如果调用ADOmand对象(其mandText属性设置为T-SQL查询,mandType属性设置为adCmdText)的Execute方法,则查询将作为语言事件提交给服务器。同样,如果将mandType设置为adCmdTable并调用Execute方法,则ADO将生成一个内部查询(它将选择mandText属性标识的表中的所有列),并将它作为语言事件提交给服务器。另一方面,如果将m
5、andType设置为adStoredProc,则调用Execute将使ADO向服务器提交一个远程过程调用请求,以执行mandText属性中列出的存储过程。 为何要关心将请求作为语言事件还是作为RPC提交给服务器呢?通常,这是因为RPC的功能更为出色,特别是在重复调用具有不同筛选值的同一查询时。尽管SQLServer可以自动将普通的语言事件请求参数化,但这种能力非常有限。它从不尝试自动将某些类型的查询参数化。这可能会导致基本相同的查询产生不同的执行,从而只因为这些不同的执行提供不同的值,而导致在服务器上白白浪费计划编译的成本。这通常不是您所希望的结果-您希望针对查询的第一
6、次执行编译一个新的计划,然后将该计划重复用于具有不同参数的执行。 而RPC则通过显式参数化查询(而不是依赖服务器参数化查询)来支持计划重复使用。为过程的第一次执行生成一个计划后,随后的执行将自动重复使用该计划,即使它们提供的参数值不同。与通过语言事件调用存储过程相比,使用RPC调用存储过程不仅节省了计划编译所需的执行时间和CPU资源,还增强了SQLServer内存资源的利用率,因为它避免了冗余执行计划所浪费的内存。 在执行动态T-SQL时,通常首选sp_executesql而不是EXEC()也出于同样的原因。Sp_executesql的工作方式是:使用指定的查询创建一
7、个存储过程,然后使用提供的参数调用它。与EXEC()不同,sp_executesql提供了一个允许您参数化动态T-SQL并支持计划重复使用的机制。使用sp_executesql执行的动态查询比使用EXEC()的查询能够在更大程度上避免不必要的编译和资源消耗。 TDS 从客户端发送到SQLServer的RPC、语言事件和其他类型的请求被格式化为称作表格数据流(TDS)的SQLServer特定数据格式。TDS是SQLServer客户端和服务器之间使用的语言。对于它的确切格式将不作介绍,但是,如果客户端要与SQLServer进行
此文档下载收益归作者所有