SQL Server中的Forwarded Record计数器影响IO性能的解决方法

技术SQL Server中的Forwarded Record计数器影响IO性能的解决方法SQL Server中的Forwarded Record计数器影响IO性能的解决方法,针对这个问题,这篇文章详细介绍了相对应的分析和

SQL Server中的转发记录计数器会影响输入输出性能。针对这个问题,本文详细介绍了相应的分析和解决方法,希望能帮助更多想要解决这个问题的小伙伴找到一个更简单易行的方法。

一、简介

最近,一位客户注意到一个高计数器(转发记录/秒),伴随着磁盘等待队列的间歇性波动。本文分享了什么是转发记录,并从原理上讨论了为什么转发记录会导致额外的IO。

二、存放原理

在SQL Server中,当数据存储在堆中时,数据是无序的,所有非聚集索引的指针都存储指向物理地址的rid。当数据行中可变长度列的增长使旧页面无法容纳下一个数据行时,数据将被移动到新页面,在原始位置留下指向新页面的指针。这样做的原因是,当更新记录时,所有非聚集索引的指针都不需要更改。

这种数据更新只在原始位置留下一个指针,指向存储新数据页的行,称为转发记录。

三、Forwarded Record如何影响IO性能?

那么,既然转发记录是一种提高性能的机制,为什么会造成性能问题呢?Forwarded Record的初衷是在堆表上更新时,堆表上存储位置的改变不会同时更新非聚集索引,会造成开销。但是,对于搜索来说,无论是堆表上有表扫描还是用于书签搜索,都会使额外的IO开销翻倍。这里有一个例子。

begin inner while @ index 100000 begin insertingdb。堆测试(ID,col1)值(@ index,null)设置@ index=@ index1endcommit代码清单1。创建一个新的堆表并插入100,000条数据。

通过清单1创建一个测试表,循环插入100,000个数据。现在,让我们看看堆表占用的存储页面。

此时,更新表,使原始行增长,生成Forwarded Record,然后查看堆表的存储。

这时我们注意到,虽然数据只占590页,却有一条8W转发记录。如果我们扫描表,会看到虽然只有590页,但是我们需要8W的逻辑IO,这就大大增加了IO上的开销压力。此外,由于转发的记录页面与原始页面在物理上不连续,这也对IOPS提出了挑战。

而上述查询反映在性能计数器中。

四、如何解决

看到转发记录计数器意味着数据库中有堆表。在OLTP系统中,所有的表都应该有聚集索引。因此,这个问题可以通过向表中添加聚集索引来解决。

一般来说,只将只写不读的表设置为堆表是比较合适的,但是如果看到有一个Forwarded Reocord,就说明堆表上有一个读操作,所以找到堆表并找到合适的维护窗口时间来创建堆表是比较理想的选择。

如果由于其他原因无法创建聚集索引,则可以重建堆表。

SQL Server中的转发记录计数器影响IO性能的问题的解决方案将在这里分享。我希望

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/128593.html

(0)

相关推荐

  • 不惑之年是多少岁,人到不惑之年,有何感悟

    技术不惑之年是多少岁,人到不惑之年,有何感悟四十岁不是青春消逝不惑之年是多少岁,而是成熟人生的开始。人到了四十岁,己历练成熟,不会象年青时那样迷茫与困惑了。四十岁的人生阶段,事业己稳固,财富也有了积累,社会经验更加丰富,

    生活 2021年11月1日
  • Exchange Partition是什么

    技术Exchange Partition是什么这篇文章主要介绍“Exchange Partition是什么”,在日常操作中,相信很多人在Exchange Partition是什么问题上存在疑惑,小编查阅了各式资料,整理出

    攻略 2021年12月9日
  • C#中如何实现WPF联系人列表

    技术C#中如何实现WPF联系人列表这篇文章将为大家详细讲解有关C#中如何实现WPF联系人列表,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1.本文背景本文效果如下: 联系人列表2.

    攻略 2021年12月1日
  • vuejs服务器安装教程学习(vue.js下载和引入的基本步骤)

    技术vue.js的安装方式有哪些这篇文章主要介绍了vue.js的安装方式有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

    攻略 2021年12月20日
  • 手写体英文,哪种英文手写体比较规整

    技术手写体英文,哪种英文手写体比较规整圆体字手写体英文,很规整的,而且非常美观,练起来也很快,我就花了一个多星期就练好了,不用格子也可以写的非常工整,但是,你若是学生的话还是不要练了,很多老师看不懂圆体字的,所以考试会失

    生活 2021年10月25日
  • 立方米和立方分米的换算,1立方分米等于多少立方分米

    技术立方米和立方分米的换算,1立方分米等于多少立方分米1立方厘米=0.001立方分米,立方厘米与立方分米之间的进率是1000,立方分米,容量计量单位,符号为dm3,1dm3的容量相当于一个长、宽、高都等于1分米的立方体的

    生活 2021年10月28日