ONLINE Index Rebuild Adds One Byte To The Index Row - by Paul White NZ

Status : 

  By Design<br /><br />
		The product team believes this item works according to its intended design.<br /><br />
		A more detailed explanation for the resolution of this particular item may have been provided in the comments section.

Sign in
to vote
ID 488761 Comments
Status Closed Workarounds
Type Bug Repros 4
Opened 9/8/2009 8:03:22 PM
Access Restriction Public


When rebuilding an existing non-clustered index ONLINE, the operation adds one extra byte per index row.  Rebuilding the index OFFLINE removes the extra byte.

This is not the behaviour that adds 14 bytes of row-versioning overhead with an ONLINE rebuild (the present behaviour occurs when row-versioning isolation levels are disabled in the database).

The max_record_size for a nonclustered index on a single column INT on a heap is reported as 13 or 14 bytes depending on whether the last build or rebuild was OFFLINE (13 bytes) or ONLINE (14 bytes).  I was expecting 12 bytes for the row (8 byte RID + 4 byte INT).
Sign in to post a comment.
Posted by Paul White NZ on 10/2/2012 at 3:35 PM
The extra byte is anti-matter.
Posted by Paul White NZ on 9/10/2009 at 4:23 PM
Thank you for responding so quickly.

Posted by Sunil [MSFT] on 9/10/2009 at 9:41 AM
Thanks for contacting us. You will notice that with ONLINE, we are adding an extra byte at position 2 in the record. This extra byte is used internally for ONLINE build. This only happens for non clustered index.