|
Posted by Erland Sommarskog on 03/02/07 22:26
serge (sergea@nospam.ehmail.com) writes:
> If I entered 454 rows : 454 * 8 = 3,632 bytes
>
> each SQL Page is 8KB = 8 * 1024 bytes
>= 8,192 bytes
>
> a data page header takes the first 96 bytes
> leaving 8096 bytes for data and row offsets.
>
> Each record uses a row offset at the end of the page
> consisting of 2 bytes. 454 * 2 = 908 bytes.
>
> 8096 - 3632 - 908 = 3,556 bytes. Should this be
> free data bytes?
No. You are forgetting that there is fixed overhead of each row of at
least nine bytes. See page 253 in "Inside SQL Server 2000".
454*17 is still only 7718, but I believe that there is some margin
left for the page to grow.
> A uniqueidentifier of 4 bytes gets added when a clustered index
> exists but it is NOT a UNIQUE clustered index. AND only
> if duplicate record is added those two records only get
> a uniqueidentifier value.
Actually it's called a "uniquifier". I like to make this distinction,
since uniqueidentifier is a data type which is 16 bytes wide.
--
Erland Sommarskog, SQL Server MVP, esquel@sommarskog.se
Books Online for SQL Server 2005 at
http://www.microsoft.com/technet/prodtechnol/sql/2005/downloads/books.mspx
Books Online for SQL Server 2000 at
http://www.microsoft.com/sql/prodinfo/previousversions/books.mspx
[Back to original message]
|