考慮我們有一個資料庫,在其中有一個帶有列的表。此列存盤 1000 位元組的 char 資料。按照慣例,我們知道每個資料頁存盤 8KB 的資料,分為 3 部分(head、data 和 offset)。同時,我想存盤 10 條記錄。讓我們計算一下。
首先 8 KB = 8 * 1014 位元組 = 8192 位元組
然后頁頭部分獲取96 bytes并且每條記錄將1000 bytes資料存盤在資料部分和2 bytes偏移部分中。如果我們計算
96 位元組 10 * (1000 2) 位元組 = 10116 位元組
但每個頁面只能存盤8192 bytes. 在這風景中,我們需要2 pages
第一頁只能存盤8 records已分配的頁面8000 bytes
如果我們計算首頁資料,我們可以看到8112 bytes (96 bytes 8 * (1000 bytes 2 bytes) = 8112 bytes)
顯然,我們可以看到在第一頁我們有80 bytes (8192 bytes - 8112 bytes = 80 bytes)可用空間。
現在!我的問題是 80 位元組呢?此可用空間保持為可用空間或SQL Server之后將使用它。
謝謝!
uj5u.com熱心網友回復:
我的問題是 80 位元組怎么樣。此可用空間保留為可用空間,否則 sql server 將在之后使用它。
它將在該資料頁中保留為空白空間,直到某種操作導致它被回收或使用。
一個示例是,如果該資料頁中的現有行之一增長到大于 1,000 位元組,則變為 1,080 位元組。它將使用資料頁中剩余的 80 位元組可用空間來適應該行的增長。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/514568.html
標籤:sql服务器tsql
上一篇:在T-SQL中按類別選擇多個值
