我们在执行大量INSERT查询时使用SQL-server 2008进行低性能测试。这些查询以25,50,100或200行的批次包含在事务中。
不同因素会影响数据库性能:
数据库同时处理的并发查询数
不太明显,INSERT的复杂性(8列时正常速度,但20列时速度慢60倍!)
更令人意外的是,客户端应用程序:我们测试了jTDS,SQSH(命令行)和Toad(GUI)。
下图显示了Toad比其他2个应用程序更快更稳定: 注意:我们还测试了SQL Server Express,它和Toad一样快。
Toad如何比其他两个更轻的应用程序更具性能? 我们如何使用jTDS或SQSH重现这种性能?有什么想法吗?
我们提供啤酒!
弗朗索瓦
答案 0 :(得分:1)
我之前的问题已经说过了,但是你应该看一些事情。
第一项:您是否/可以查看您的执行计划,该计划通常会指出问题的根源所在。一个错误的结点或转换可能会破坏服务器性能。
第二项:寻找隐式转换,我最近通过将过滤器变量从datetime对象更改为smalldatetime对象,将查询的执行时间从2分钟缩短到大约10秒。这消除了我将其与之比较的600万行的隐式转换。
第三项:这很昂贵,我们发现制作一个表的副本(然后处理约束,权限,索引和触发器)与在复制过程中发生的变换/插入比在更新时更便宜那些行。