8078 байт в странице данных 8060 B (SQL Server)? - PullRequest
4 голосов
/ 23 сентября 2010

Повсюду написано, что данные в SQL Server записаны на страницах по 8 КБ (8192 B), каждая из которых содержит 8060 байт для данных, а остальная часть является служебной (системная информация).

Хотя в недавней статье [1] приведен пример кода, иллюстрирующий, как я понял, 8078 байт данных вписываются в страницу.

Что мне не хватает в понимании 8 060 B за страницу?

Я проверил код на x86 SQL Server 2008 R2 ...


Обновление:

Видел ли я ответ, рассказывающий о последующих действиях в [1]? Мне жаль, что я не пометил это как полезное (для меня) и сразу же прокомментировал ... Я просто хотел больше исследовать себя, прежде чем ответить ...


Обновление2:

Я разместил подзапрос [2]

[1]
Как дизайн таблицы может повлиять на производительность SQL Server?
http://sqlserver -training.com / how-table-design-can-воздействие-ваш-sql-сервер-производительность / -

* * +1025 [2]
Как достичь ограничений в 8060 байт на строку и 8000 на (varchar, nvarchar)?
Как получить ограничение в 8060 байт на строку и 8000 на значение (varchar, nvarchar)?

Ответы [ 2 ]

4 голосов
/ 23 сентября 2010

Длинный ответ короткий, ограничение составляет 8060 байт на строку, но 8096 байт на страницу.Строки в статье, которую вы связали, имеют размер строки ~ 4000 байт, поэтому они значительно ниже ограничения на строку.Однако это не отвечает на вопрос о том, сколько таких строк помещается на странице.

См. "Оценка размера кучи" в электронном учебнике:

http://msdn.microsoft.com/en-us/library/ms189124.aspx

Если вы выполните вычисления для таблиц в статье, вы увидите, что первая таблица имеет физический размер строки 4048 байт, что составляет точно половину предела 8096 для страницы.

2 голосов
/ 23 сентября 2010
  • Максимальный размер строки составляет 8060 байтов
  • В этом случае две строки каждая по 4039 байтов
...