在使用PreparedStatement方式操作数据库时,常会出现这样的问题:对于VarChar字段无法去除SQL中由Driver自动在参数前加了N转型。
此问题表现为:
比如在做压力测试时,数据库服务器的资源利用率非常高,接近95%左右;用SQL Server Profiler监视 SQL Server 数据库引擎实例时,发现有一条语句比较耗费CPU资源,查看详细语句为:
exec sp_execute 1,N '100531000000020931','2010-06-24 16:00:00'
这就是由系统自动做了N转型!
现将解决方法与大家分享一下,其实很简单:配置连接池时增加连接属性sendStringParametersAsUnicode,将其设置为false。
实例如下:
在应用服务器的/home/yourname/cfmds/WEB-INF/classes/spring/目录下(其中 cfmds是应用程序部署的所在目录 ),修改 db.xml文件,在
jdbc:jtds:sqlserver://192.168.50.33:1433;databaseName=sfms;appName=bank_cfmds_Java;;
后面加上:sendStringParametersAsUnicode=false 即可。
再次测试同样的并发压力,数据库的资源耗费下降到30%左右,应用服务器的资源也下降不少,可谓效果显著~
524

被折叠的 条评论
为什么被折叠?



