你的位置:首页 > 软件开发 > 数据库 > 堆表上的转发记录

堆表上的转发记录

发布时间:2015-06-24 12:00:16
今天这篇文章我想谈下堆表上特有的性能问题:转发记录(Forwarding Records)。首先我们要澄清下什么是堆表:堆表就是没有聚集索引定义的表。它对插入新记录非常快,但当你读取数据时非常慢。读取数据会在你的存储子系统上引入随机存取(random I/O) ,有时候当你碰 ...

堆表上的转发记录

今天这篇文章我想谈下堆表上特有的性能问题:转发记录(Forwarding Records)。首先我们要澄清下什么是堆表:堆表就是没有聚集索引定义的表。它对插入新记录非常快,但当你读取数据时非常慢。读取数据会在你的存储子系统上引入随机存取(random I/O) ,有时候当你碰到转发记录,它会进一步降低你的读取性能。

为什么会有转发记录?

当堆表里的记录需要移动到不同的物理位置时,SQL Server使用转发记录。假设你有一个变长列的表,首先你在堆表里插入一些记录,这个时候你没有在变长列里存储任何数据:

 1 -- Create a table to demonstrate forwarding records 2 CREATE TABLE HeapTable 3 ( 4   Col1 INT IDENTITY(1, 1), 5   Col2 CHAR(2000), 6   Col3 VARCHAR(1000) 7 ) 8 GO 9 10 -- Insert 4 records - those will fit into one page11 INSERT INTO HeapTable VALUES12 (13   REPLICATE('1', 2000),14   ''15 ),16 (17   REPLICATE('2', 2000),18   ''19 ),20 (21   REPLICATE('3', 2000),22   ''23 ),24 (25   REPLICATE('4', 2000),26   ''27 )28 GO

原标题:堆表上的转发记录

关键词:

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

可能感兴趣文章

我的浏览记录