sql-server – 在负载下插入机能增进:为什么?
我有一段代码执行高度非类型化表的插入.这些表的列数为~100到300.这是在 Windows Server 2008上运行的SQL Server 2008 R2. 每个插入包罗在统一事宜下插入多个表.有些插入是由NHibernate批处理赏罚的,但有些不行能,但它们都在统一个事宜中. 当我通过一再挪用执行插入的代码执行500次插入时,均匀获得~360 ms. 稀疏的是,当我行使4个历程同时运行测试代码时(在Windows Server 2008下从4个差异的呼吁提醒运行沟通的exe),每个挪用的插入机能变得更好.我看到突发的速率可以到达90毫秒(险些快了X4).我正在从代码中丈量插入时刻. 因为4个历程对互相一窍不通,我假设这与SQL Server有关,但我完全不知道为什么.我想知道为什么会产生这种环境,假若有任何设置可以让我在插入不频仍时得到沟通的机能. 有关SQL Server监督要领的提议,以相识在数据库级别上产生了什么,同样受接待. 办理要领一个也许的缘故起因是四个并发历程天生更有利的日记革新模式 – 凡是意味着每个日记革新写入的数据多于单个执行历程的环境.要确定事宜日记吞吐量/革新巨细是否是一个身分,请监督: > sys.dm_os_wait_stats用于WRITELOG和LOGBUFFER守候 > Log Bytes Flushed / sec 探求到达的内部限定.在SQL Server 2008 R2中,64位版本上每个数据库最多可以有32个未完成(异步)日记革新I / O(32位只有8个).未完成的IO数目限定为3840KB. 更多信息和进一步阅读: > Transaction Log Monitoring (编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |