什么是在同一台机器上运行的sql server express 2008 r2客户端和服务器的最佳协议

时间:2011-07-21 14:08:58

标签: sql-server sql-server-2005 tsql sql-server-2008 sql-server-2000

我们使用sql express 2008 r2进行简单的报告和数据存储。数据通常以每分钟600至3000条记录的速率写入。 (一个客户端连接一台机器)。我们需要最佳的执行协议。 (良好的性能,而不会占用内存..)我在线阅读文章,在决定tcp / ip,共享内存和命名管道时,它们很混乱。总结msdn文档

1)共享内存没有可配置的属性。始终首先尝试共享内存,并且无法从“客户端协议属性”列表中的“启用协议”列表的顶部位置移动共享内存。 Does this mean shared mem is preferred and fastest ?

2)对于TCP / IP套接字,数据传输更加简化并且开销更少。数据传输还可以利用TCP / IP套接字性能增强机制,例如窗口化,延迟确认等。好。但是is it faster than shared mem ?

3)如果服务器应用程序在运行Microsoft®SQLServer™实例的计算机上本地运行,则可以选择本地命名管道协议。 Local named pipes runs in kernel mode and is extremely fast.当我读到这篇文章时,我不能再感到困惑,于是决定将我的问题发布在堆栈上。

所以sql Gurus请帮我决定。谢谢

2 个答案:

答案 0 :(得分:2)

共享内存是最快的协议,但是如果您的目标是“性能”,您用来访问数据库的框架以及如何传输数据,您编写的sql查询(或使用其他方法)都将拥有对绩效的影响要大得多。

如果您打算尝试使用ADO / ADO.NET或其他类似的重协议,那么大多数性能都会丢失。如果您需要调查并学习如何在较低级别与数据库引擎进行通信,那么您将获得极高的性能。

请参阅http://www.devart.com/sdac/作为开始。

答案 1 :(得分:1)

如果您的回答中的以下引用实际上是正确的,那么您的问题已经包含答案:

  

始终首先尝试共享内存,并且无法从“客户端协议属性”列表中的“启用协议”列表的顶部位置移动。

鉴于您的客户端和数据库在同一台机器上运行,这意味着共享内存将始终有效(没有严格的措施)。你选择使用什么协议并不重要 - 共享内存 最终将被使用的协议! : - )

它的价值在于它的性能完全取决于SQL Server中使用的实现(我基于我对通信方法的了解而不是对SQL Server的深入了解),但顺序(在性能方面)差不多当然是这样的(最快的):

  • 共享内存(由SQL Server始终使用此功能支持)
  • 命名管道
  • TCP / IP

我找不到任何引用共享内存实际上 比命名管道更快,但TBH我认为它不重要 - 客户端和本地计算机上的数据库之间的通信将是无论如何,我非常高效,我怀疑你能否注意到任何性能差异。