我有一段代码可以对高度非规范化的表执行插入操作。这些表的列数范围从〜100到300+。这是在Windows Server 2008上运行的SQL Server 2008 R2。
每个插入包括在同一事务下插入多个表。有些插入是由NHibernate批处理的,但是有些不能,但是它们都在同一事务下。
当我通过重复调用一段执行插入的代码执行了500次插入操作时,平均得到的时间约为360毫秒。
奇怪的是,当我使用4个进程同时运行测试代码(在Windows Server 2008下从4个不同的命令提示符运行同一个exe)时,每次调用的插入性能会好得多。我看到突发速度高达90毫秒(几乎快了X4)。我正在从代码中测量插入时间。
由于4个进程彼此之间一无所知,因此我假设这与SQL Server有关,但是我绝对不知道为什么。我想知道为什么会这样,以及是否有任何配置可以使我在插入频率不那么高的情况下获得相同的性能。
同样欢迎提出有关SQL Server监视方法的建议,以了解数据库级别的情况。