近日发现部署在生产环境的数据提交性能相当差,进行一条数据插入要4到5秒,而在测试环境则是毫秒级的。
先介绍一下环境:
1.数据库使用sql server2008,安装在windows2008上
2.数据存放使用了sql2008的FileStream
3.应用使用.net framework 3.5
4.数据库操作采用LINQ to sql
因为环境比较复杂,可能产生问题的环节比较多,所以把每条语句的执行时间先输出出来。结果发现执行第一条LINQ语句是问题所在,但LINQ语句跟不进去,于是用普通SQLClient下的类对LINQ to sql 进行重写,再比较每语句执行时间,终于发现问题:数据库连接打开消耗了4秒的时间。
查看连接串,连接使用了“Integrated Security=True;"选项,改为User ID=xxx;Password=xxx,连接正常。初步判断为信任连接问题。
上http://www.connectionstrings.com/,找到其它选项:"Integrated Security=SSPI;" , "Trusted_Connection=Yes",经测试,问题依旧。
再次查看连接串,发现使用了IP做为"Data Source",会不会是IP的问题呢?把"Data Source"设置成HostName,再连接,成功。
看来IP加信任连接这两个条件加在一起就出问题了,不知道是不是sql2008的BUG,现在太忙,没时间再深纠了。
另:经测试,在SQL2005和sql2000中,此问题未出现。