數(shù)據(jù)頁是包含已添加到數(shù)據(jù)庫表中的用戶數(shù)據(jù)的結(jié)構(gòu)。
創(chuàng)新互聯(lián)長期為上千余家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為滴道企業(yè)提供專業(yè)的網(wǎng)站設(shè)計、成都網(wǎng)站設(shè)計,滴道網(wǎng)站改版等技術(shù)服務(wù)。擁有十多年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開發(fā)。如前所述, 數(shù)據(jù)頁有三種, 每個都以不同的格式存儲數(shù)據(jù)。
SQL server 有行內(nèi)數(shù)據(jù)頁、行溢出數(shù)據(jù)頁和 LOB 數(shù)據(jù)頁。
與 SQL server 中的所有其他類型的頁一樣, 數(shù)據(jù)頁的大小固定為 8 KB 或8192字節(jié)。
它們由三主要組件組成: 頁面頁眉、數(shù)據(jù)行和行偏移量數(shù)組, 如圖6-4 所示。
頁標(biāo)題
如圖6-4 所示, 頁標(biāo)題占據(jù)每個數(shù)據(jù)頁的前96個字節(jié) (為數(shù)據(jù)、行開銷和行偏移保留8096個字節(jié))。表6-5 列出了檢查頁標(biāo)題時顯示的一些信息。
行內(nèi)數(shù)據(jù)的數(shù)據(jù)行
頁標(biāo)題后面是存儲表實(shí)際數(shù)據(jù)行的區(qū)域。單個數(shù)據(jù)行的大大小為8060字節(jié)的行內(nèi)數(shù)據(jù)。
行還可以在單獨(dú)的頁上存儲行溢出和 LOB 數(shù)據(jù)。
在給定頁上存儲的行數(shù)根據(jù)表結(jié)構(gòu)和存儲的數(shù)據(jù)而變化。
具有所有固定長度列的表始終可以存儲每頁相同的行數(shù);
可變長度行可以根據(jù)輸入數(shù)據(jù)的實(shí)際長度, 存儲盡可能多的行。
保持行長更短可以使更多行適合頁面, 從而減少 i/o 并增加所需數(shù)據(jù)在緩存中的可能。
行偏移量數(shù)組
行偏移量數(shù)組是2字節(jié)項的塊, 每個條目表示相應(yīng)數(shù)據(jù)行開始的頁面上的偏移量。
每行在這個數(shù)組中都有一個2字節(jié)的條目 (正如前面所討論的, 當(dāng)您閱讀每行所需的10個開銷字節(jié)時)。
雖然這些字節(jié)沒有存儲在數(shù)據(jù)行中, 但它們確實(shí)會影響適合頁面的行數(shù)。
行偏移量數(shù)組指示頁上行的邏輯順序。
例如, 如果表具有聚集索引, SQL server 將按聚集索引鍵的順序存儲這些行。
這并不意味著行按聚集索引鍵的順序物理地存儲在頁面上。
相反, 偏移量數(shù)組中的插槽0引用聚集索引鍵順序中的第一行, 插槽1引用第二行, 依此類推。
正如您在檢查實(shí)際頁面時所看到的那樣, 這些行的物理位置可以位于頁面的任何位置。
查看數(shù)據(jù)頁
可以使用 DBCC 頁命令查看數(shù)據(jù)頁的內(nèi)容,
這允許您查看數(shù)據(jù)庫中任何給定頁的頁標(biāo)題、數(shù)據(jù)行和行偏移表。
只有系統(tǒng)管理員才能使用 DBCC 頁。
但是, 由于通常不需要查看數(shù)據(jù)頁的內(nèi)容, 因此在 SQL server 文檔中找不到有關(guān) DBCC 頁的信息。
不過, 如果您想使用它, 下面是語法:
DBCC PAGE ({dbid | dbname}, filenum, pagenum[, printopt])
DBCC 頁面命令包含表6-6 中顯示的參數(shù)。
清單6-4 中的代碼和結(jié)果顯示來自 DBCC 頁的示例輸出, 其 printopt 值為1。
請注意, DBCC TRACEON (3604) 指示 SQL server 將結(jié)果返回給客戶端。
如果沒有此 traceflag, 則不會為 DBCC 頁命令返回輸出。
正如所看到的, DBCC 頁的輸出分為四主要部分: 緩沖區(qū)、頁標(biāo)題、數(shù)據(jù)和偏移量表 (實(shí)際上是偏移量數(shù)組)。
緩沖區(qū)部分顯示有關(guān)給定頁的緩沖區(qū)的信息。
此上下文中的緩沖區(qū)是管理頁的內(nèi)存結(jié)構(gòu), 本節(jié)中的信息僅在頁處于內(nèi)存中時才相關(guān)。
從 DBCC 頁的 "輸出" 頁標(biāo)題部分顯示頁上所有標(biāo)題字段的數(shù)據(jù)。
(表6-5 顯示了大多數(shù)這些字段的含義。數(shù)據(jù)節(jié)包含每行的信息。
使用具有 printopt 值1或3的 DBCC 頁表示插槽位置, 即每行的6個表存儲257、頁上的行的偏移量和行的長度。
行數(shù)據(jù)分為三部分。
左列指示顯示數(shù)據(jù)所在行內(nèi)的字節(jié)位置。
中間部分包含存儲在頁面上的實(shí)際數(shù)據(jù), 每五列顯示八個十六進(jìn)制數(shù)字。
最右邊的列包含數(shù)據(jù)的 ASCII 字符表示形式。 此列中只有字符數(shù)據(jù)是可讀的, 盡管可能會顯示某些其他數(shù)據(jù)。
"偏移量表" 部分顯示頁面末尾的行偏移量數(shù)組的內(nèi)容。
在 DBCC 頁的輸出中, 您可以看到此頁包含23行, 第一行 (由插槽0指示) 從偏移量 1585 (0x631) 開始。
實(shí)際存儲在頁面上的第一行實(shí)際上是6行, 而行偏移量數(shù)組中的偏移量為96。printopt 值為1的 DBCC 頁顯示 "插槽編號" 順序中的行, 即使可以從每個插槽的偏移量中看到, 也不是在頁面上實(shí)際存在行的順序。
如果使用 printopt 值為2的 DBCC 頁, 則會看到頁的所有8096個字節(jié) (標(biāo)頭之后) 的轉(zhuǎn)儲, 按它們存儲在頁面上的順序排列。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。