2012-03-30 80 views
0

SQL服務器的實際數據存儲在頁,每頁具有從其中96個字節已經豆使用的報頭(用於pageId, FileID等)頁的和重命名8096個字節8192個字節的固定大小將用於您的實際的數據存儲。SQL Server 2008 R2如何處理小頁面大小的大數據?

現在我知道的是,如果假設我已經創建表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樹處理創建聚集索引。即在導航級別(葉級別之外)?

在此先感謝。

回答

2

參見Table and Index Organization ROW_OVERFLOW_DATA分配單元:

對於由表(堆或聚集表),索引, 或索引視圖中使用的每個分區,有一個ROW_OVERFLOW_DATA分配單元。此 分配單元包含在 IN_ROW_DATA分配單元零(0)頁面,直到具有可變長度 列(VARCHAR,NVARCHAR varbinary或SQL_VARIANT)一個數據行超過8 KB行大小限制。當達到 大小限制,SQL Server會將從該行到一個頁面 最大寬度在ROW_OVERFLOW_DATA 分配單元列。在原始頁面上維護一個24字節的指針,指向該行數據 。

+0

謝謝!得到了確切的答案。明顯+1並接受:) – Darshan 2012-03-30 07:48:46