Как SQL Server 2008 R2 обрабатывает большие данные с небольшим размером страницы? - PullRequest
0 голосов
/ 30 марта 2012

Фактические данные SQL Server хранятся в страницах, и каждая страница имеет фиксированный размер 8192 байта, из которых 96 байтов имеет компонент, используемый заголовком (для pageId, FileID и т. Д.) Этой страницы, и переименование 8096 байтов будетиспользуется для вашего фактического хранения данных.

Теперь я должен знать, что если бы я создал таблицу Employee следующим образом:

CREATE TABLE [dbo].[Employee]
(
    [FristName] [nvarchar](4000) NOT NULL,
    [LastName] [nvarchar](4000) NOT NULL,
    [EmpID] [int] IDENTITY(1,1) NOT NULL
) 

, а затем вставил в нее строку.Затем вычислите размер этой записи

FirstName nvarchar 4000 * 2 bytes(nvarchar size) =  8000 bytes
LastName nvarchar 4000 * 2 bytes(nvarchar size)  =  8000 bytes
EmpID int                                        =     2 bytes

                                         Total   = 16002 bytes

. Это означает, что каждая строка имеет размер 16002 байта, что больше, чем размер страницы 8096 байтов.

Теперь мои вопросы:

  1. Как страницы SQL Server создаются для этой вставленной строки?
  2. Как SQL Server внутренне обрабатывает большие данные?
  3. И если я создам кластерный индекс на EMPID, то как он будет обрабатываться в B-Tree.т.е. на уровне навигации (кроме уровня листа)?

Заранее спасибо.

1 Ответ

2 голосов
/ 30 марта 2012

См. Организация таблиц и индексов ROW_OVERFLOW_DATA Единица распределения:

Для каждого раздела, используемого таблицей (куча или кластерная таблица), индекс, или индексированное представление, есть одна единица выделения ROW_OVERFLOW_DATA. это единица выделения содержит ноль (0) страниц до строки данных с переменной столбцы длины (varchar, nvarchar, varbinary или sql_variant) в Единица выделения IN_ROW_DATA превышает ограничение размера строки в 8 КБ. Когда размер ограничения достигнут, SQL Server перемещает столбец с наибольшая ширина от этой строки до страницы в ROW_OVERFLOW_DATA единица распределения. 24-байтовый указатель на эти данные вне строки сохраняется на исходной странице.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...