创建与SQL的新数据库连接需要多长时间

Paw*_*wel 4 c# sql

任何人都可以向我提供一个球场时间(以毫秒为单位),表示从C#建立到SQL的新数据库连接所需的时间.即连接池必须创建新连接时的开销是多少.

Rem*_*anu 11

这取决于:

  • 是时候将DNS名称解析为IP
  • 是时候打开TCP套接字还是Net管道(在其他TCP soket之上):通常是3个IP数据包
  • 如果需要加密,则需要时间来进行SSL/TLS的操作:如果不重复使用SSL/TLS密钥信息,则~5次往返加上引导主密钥交换的时间(即一次RSA私钥访问,这非常昂贵)
  • 时间验证SQL身份验证的SQL密码(我相信2次往返)
  • 是时候验证NTLM/Kerberos的集成身份验证(1个圆形协商SPNEGO,5-6个往返,如果缺少路缘票,如果票证存在则为1个圆形,如果选择NTLM则为4-5个往返)
  • 是时候授权登录了(查找metdata,根据登录令牌评估权限)
  • 可能的时间运行任何登录触发器
  • 时间开始连接(与初始SET会话批处理1次往返)

一些更深奥的时代:

  • 如果在请求中指定,则打开自动关闭数据库的时间(可能包括恢复,通常不会)
  • 如果使用AtachDBFile且数据库尚未附加,则附加数据库的时间
  • 是时候为SQL 2005 RANU启动'用户'实例了.那是大约40-60秒.

通常,您每秒可以执行大约10-15个新连接.如果存在问题(例如,DNS查找问题,IPsec发布,SSL问题,Kerberos问题),则每个连接可以轻松达到10-15秒.

相比之下,现有的池连接只需要执行sp_resetconnection(即现有通道上的一次往返),如果需要,甚至可以避免这种情况.