SQL Сервер сохраняет строки на страницах размером 8 КБ.
Все созданные вами строки идентичны и выглядят следующим образом
10 00 05 00 FF 01 00 00 00
10
Биты состояния A 00
Биты состояния B 0500
Смещение числа столбцов FF
- фактическое крошечное целое число 0100
- количество столбцов 00
- Нулевое растровое изображение 00
- Заполнение для соответствия минимальному размеру строки 9 байт
Обратите внимание, что tinyint само значение просто занимает 1 байт на строку, и есть дополнительные 8 байтов метаданных на строку.
Кроме того, есть дополнительные издержки на странице для 96-байтового заголовка страницы и дополнительные 2 байта на строку в нижнем колонтитуле для массив слотов.
В результате SQL Сервер может хранить только максимум (8192-96) / 11 строк на страницу (736) и в действительности после вставки 700-й строки и заполнения страницы более 95%. затем страница PFS сообщает, что страница данных имеет размер 100_PCT_FULL
, то есть максимальное число строк на странице, достигаемое здесь с помощью вставок из одного элемента.
10000/700 означает, что для этого требуется 14,3 страницы хранить строки. В SQL Server 2012 первые 8 страниц будут выделены из смешанных экстентов, а затем страницы будут выделены в полных экстентах.
Так что, вероятно, ваши 136 КБ будут состоять из 17 страниц по 8 КБ следующим образом
- 8 страниц в смешанных экстентах
- 1 страница IAM
- 8 страницы с одинаковым экстентом (с 1,7 страниц свободными)
Как только 1,7 страницы будут заполнены, будет предоставлен новый единый экстент. Это 64 КБ и объясняет переход с 136 КБ до 200 КБ