March 15, 2011 at 7:22 pm
MS tells me that page size is 8K but then says in parens that 8K is 8060. I thought 1K was 1024 so 8K would be 8192 (8x1024).
There is a 96 byte page header so I thought that maybe 8192-96 would be 8060, but it is 8096.
Anyone know how MS get 8060?
Reference: http://msdn.microsoft.com/en-us/library/ms190969
March 15, 2011 at 7:30 pm
great question.
this book references says that some additional logging information is stored inside the page, and as a result, that makes the max size 8060:
Lowell
March 15, 2011 at 7:50 pm
Just to clarify Lowell's reply - the page written to the transaction log only has enough room to store 8060 bytes of data. While you might be able to squeeze an extra ~30 bytes in your data page, it's not desirable (possible?) to split an operation over multiple pages in the transaction log.
March 15, 2011 at 8:35 pm
The maximum sized datatype, not including the MAX data types, is 8016 (SQL_Variant). For all the
other datatypes, the max row size can actually be less than 8060 because of the "Row Offsets"
most people forget about at the end of the page and several other factors like the 2 bytes extra
that are consumed by each variable length data type, null bits, etc, etc.
Steve Jones actually wrote about this in one of his articles on SQL Server 2000.
http://www.sqlservercentral.com/articles/Miscellaneous/pagesize/497/
--Jeff Moden
Change is inevitable... Change for the better is not.
Viewing 4 posts - 1 through 3 (of 3 total)
You must be logged in to reply to this topic. Login to reply