Фактические данные 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 байтов.
Теперь мои вопросы:
- Как страницы SQL Server создаются для этой вставленной строки?
- Как SQL Server внутренне обрабатывает большие данные?
- И если я создам кластерный индекс на
EMPID
, то как он будет обрабатываться в B-Tree.т.е. на уровне навигации (кроме уровня листа)?
Заранее спасибо.