服务器在准备将特定客户端请求的结果返回时,将使用最初接收请求时所用的网络堆栈。它通过服务器端 Net-Library 将结果发送到相应的网络协议,随后这些结果将通过网络以 TDS 格式返回到客户端。
在客户端上,客户端 Net-Library 将从服务器接收的 TDS 数据包从 IPC 层重新汇编,并将其继续转发到初始化该请求的 API 或对象库。
小结
尽管涉及了所有组件,但 SQL Server 客户端与服务器之间的往返过程却相当快 - 特别是在使用内存 Net-Library 时,亚秒响应时间非常普遍。构建和调整您自己的 SQL Server 客户端应用程序时,以下几个与数据相关的问题值得注意:
· 如果应用程序与 SQL Server 运行在同一台计算机上,则建议您使用共享内存 Net-Library(如果尚未使用它)。基于共享内存 Net-Library 的连接通常比其他类型的连接快很多。在注意上述内容的同时,还应:始终全面测试解决方案并将它与其他可行方案进行对比,这样才能判断它是否确实更好或更快。事实胜于雄辩。
· 由于客户端在第一次连接时将指定给特定的 UMS 计划程序,并只有在断开连接后,才会摆脱该计划程序的控制,因此确保在应用程序与服务器建立的连接上均衡分配工作负荷非常重要。工作负荷不均衡可导致不必要的 CPU 争用并降低资源使用率。
· 在服务器上配置的默认网络数据包大小以及客户端在连接时指定的网络数据包大小将直接影响它们在服务器上所需的内存量和分配内存的池。对服务器进行扩展性和速度配置时,应记住这一点。还应记住,默认情况下,ADO.NET 应用程序的网络数据包大小比 ADO 应用程序的更大。
· 通常,在向服务器发送请求时,应首选 RPC 而非语言事件。为此,应在使用的 ADO 或 ADO.NET 对象中设置相应的属性。