加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

sql-server – 在负载下插入机能增进:为什么?

发布时间:2020-12-28 15:27:37 所属栏目:编程 来源:网络整理
导读:我有一段代码执行高度非类型化表的插入.这些表的列数为~100到300.这是在 Windows Server 2008上运行的SQL Server 2008 R2. 每个插入包罗在统一事宜下插入多个表.有些插入是由NHibernate批处理赏罚的,但有些不行能,但它们都在统一个事宜中. 当我通过一再挪用执行插

我有一段代码执行高度非类型化表的插入.这些表的列数为~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守候
> sys.dm_io_pending_io_requests用于IO机能
>机能监督器计数器(或sys.dm_os_performance_counters):

> Log Bytes Flushed / sec
>记录革新/秒
>日记革新守候时刻

探求到达的内部限定.在SQL Server 2008 R2中,64位版本上每个数据库最多可以有32个未完成(异步)日记革新I / O(32位只有8个).未完成的IO数目限定为3840KB.

更多信息和进一步阅读:

> Transaction Log Monitoring
> Trimming Transaction Log Fat
> Diagnosing Transaction Log Performance Issues and Limits of the Log Manager
> Optimizing Transaction Log Throughout

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读