標籤:blog http 檔案 資料 ar art html log
原文地址:http://www.cnblogs.com/liuzhendong/archive/2011/10/11/2207361.html
以前總是沒弄明白這些基本概念,現在整理如下:
1.區:
區是SQL Server 中管理空間的基本單位。
一個區是八個物理上連續的頁(即 64 KB),所有頁都儲存在區中, 這意味著 SQL Server 資料庫中每 MB 有 16 個區。
一旦一個區段已滿, 下一條資料Sql server將分配一個區段空間, 防止每次添加都要分配空間.
2.頁(Page):
頁是SQL Server 中資料存放區的基本單位, 它是區段的配置單位, 一頁8K, 它下面就是資料行了, 但每頁的行數不定, 這取決於資料行的大小.
資料庫中的資料檔案(.mdf 或 .ndf)分配的磁碟空間可以從邏輯上劃分成頁(從 0 到 n 連續編號)。磁碟 I/O 操作在頁級執行。也就是說,SQL Server 每次讀取或寫入資料的最少資料單位是資料頁。
每頁的開頭是 96 位元組的標題,用於儲存有關頁的系統資訊。此資訊包括頁碼、頁類型、頁的可用空間以及擁有該頁的對象的配置單位 ID。
在 SQL Server 中,頁的大小為 8 KB。這意味著 SQL Server 資料庫中每 MB 有 128 頁。依次類推。根據資料庫的檔案大小,我們可以算出資料庫有多少資料頁。
3.頁的類型: 資料頁, 索引頁, Blob頁等等.
4.行: 因為行存於頁中,因此, 一行的大小通常最多8K(8060字元, 一頁的上限), 一行最大列數為1024列(欄位).
如果是varchar(max), text, image時, 可以跨越多頁, 一行最大2GB, 此時, 原始的行用來存放指標及其它列.
5.全文檢索目錄: 雖然和sql server在一起, 但實際上該目錄是獨立存放在磁碟上的.
6.索引: 是與表或視圖關聯的磁碟上的結構,可以加快從表或視圖中檢索行的速度。
它包含由表或視圖中的一列或多列產生的鍵。這些鍵儲存在一個結構(B 樹)中,使 SQL Server 可以快速有效地尋找與索引值關聯的行。
7.索引的類型:聚集, 非聚集.
另外還有唯一索引, 唯一索引確保索引鍵不包含重複的值,因此,表或視圖中的每一行在某種程度上是唯一的。
叢集索引和非叢集索引都可以是唯一索引。
8.叢集索引: 根據資料行的索引值在表或視圖中排序和儲存這些資料行。
每個表只能有一個叢集索引,因為資料行本身只能按一個順序排序。
只有當表包含叢集索引時,表中的資料行才按排序次序儲存。如果表具有叢集索引,則該表稱為聚集表。
如果表沒有叢集索引,則其資料行儲存在一個稱為堆的無序結構中。
即聚集表是有叢集索引的表,堆是沒有叢集索引的表。
索引檢視表與聚集表具有相同的儲存結構。
叢集索引的分葉節點就是實際的資料頁。
叢集索引的平均大小大約為表大小的5%左右。
9.非叢集索引:這段msdn寫的雲裡霧裡的,就不抄了。
每個表最多可以有249個非叢集索引.
10.索引的維護:每當修改了表資料後,都會自動維護表或視圖的索引。
11.索引和約束: 對錶列定義了 PRIMARY KEY 約束和 UNIQUE 約束時,會自動建立索引。
例如,如果建立了表並將一個特定列標識為主鍵,則 資料庫引擎自動對該列建立 PRIMARY KEY 約束和索引。
12.分區表
還沒搞明白, 也沒實際用過.
13.回家研究一下B 樹, 還沒太明白索引的原理.
參考文章:
SQL Server 索引基礎知識(1)--- 記錄資料的基本格式 .
http://blog.csdn.net/ghj1976/article/details/2010366