Sql-Server
SQL Server ::這條記錄佔用了多少8K頁?
我想看看特定記錄佔用了多少 8K 頁。
如果您在 AdventureWorks2019 上執行此查詢:
SELECT ProductID ,Name ,DATALENGTH(Name) AS SizeInBytes ,LEN(Name) AS NumberOfCharacters FROM Production.Product ORDER BY 1
你有一個被每條記錄佔用的列表:
如何添加包含該記錄所佔用頁數的列?
我當然可以,
DATALENGTH(Name) / 8 AS PagesTaken
但我想知道是否有一些命令可以讓我通過SELECT
.
我認為你在這裡有一些倒退。一頁為 8 KB(8,192 字節)。該表中的行具有所有列的數據類型大小總和的最大大小:
我實際上不會把所有這些都加起來,但讓我們想像一下總和是 500 字節。
您可以通過瀏覽文件中的此頁面來查找每種數據類型的大小,然後點擊您想要查找大小資訊的每種類型:數據類型 (Transact-SQL)
由於每個頁面上的標題大小固定,以及其他每行成本,8KB 頁面上的行可用空間量為 8,096(有關詳細資訊,請參閱此處:頁標題中儲存了哪些其他資訊)。
這意味著,在此表中,每頁最多可以有 8096 / 500 = 16 行。
nvarchar
根據可變長度 ( ) 列的大小,可能可以容納比這更多的行。您可以使用如下查詢查看特定索引中有多少頁:SQL Server:表和/或數據庫使用的 8K 頁數
從那裡您可以得出每頁獲得的平均行數(表中的總行數/表中的總頁數)。
您還可以使用
DBCC PAGE
(如上面的“頁眉”連結中所述)查看有關每個頁面的詳細資訊,包括頁面上有多少行。請注意,以上所有內容都適用於“行內數據”。如果表具有 LOB 數據類型,那麼如果它們的大小導致記錄超過最大記錄大小 8,060 字節,那麼這些數據類型將儲存在行外,可能儲存在多個頁面上。