SQL Server 2005資料檔案資料的儲存

2022-02-14 07:50:12 字數 2385 閱讀 7207

《sql server 2005奧秘》第5章主要研究sql server 2005資料檔案資料的儲存,本節主要介紹的是按照hobt_id獲得表的第1個頁面

按照hobt_id獲得表的第1個頁面

在系統檢視sys.system_internals_allocation_units中,其container_id欄位就代表了hobt_id的值。所以執行下列**可以查詢:

/*定義臨時變數用於表示表的物件id*/

declare @id int

/*定義臨時變數用於表示表的名稱*/

declare @tablename char(20)

/*定義臨時變數用於表示表的hobt_id*/

declare @hobtid bigint

set @tablename='t_test'

set @id=(select object_id from db_student.sys.objects where name=@tablename)

set @hobtid=(select hobt_id from db_student.sys.partitions where object_id=@id)

select @hobtid

select * from db_student.sys.system_internals_allocation_units where container_id=@hobtid

go

光碟**:\**\0511.sql。

查詢結果如圖5-17所示。

圖5-17  獲得表的儲存頁面資訊

分析查詢得到的資料如下。

1.allocation_unit_id

這代表儲存單元的id,在資料庫中唯一。但是不是物件的hobt_id。

例項中查詢到值為72057594044088320。

2.type

這代表分配的儲存單元的型別。

例項中為1,代表該儲存單元儲存的資料是行內資料。

3.type_desc

這代表對type的文字描述資訊。

行內資料的描述為:in_row_data。

4.container_id

該字段的含義比較特殊。

當儲存的是行內資料,即type1時,該字段的值和hobt_id的值一致。兩者的關係如下:

db_student.sys.system_internals_allocation_units.container_id= db_student.sys.partitions.hobt_id

5.filegroup_id

檔案組id。

例項的值為1,代表資料檔案的檔案組。因為日誌檔案不適用於檔案組的概念,所以該項的值始終為0。

6.total_pages

該儲存單元分配的總頁面數。

例項為2,代表該錶分配了2個頁面。

7.used_pages

實際上已經使用的頁面數。

8.data_pages

包含下列資料的已經使用的頁面數,但不包括內部索引頁和分配管理頁。

 行內資料

  lob資料

 行溢位資料

9.first_page

代表第1個頁面的資料檔案id和頁面id。

本例項中查詢到的值為0x2d0000000100。這中間就蘊含了資料檔案的id和資料頁面的id。

10.root_page

如果是b樹儲存結構,表示b樹的根頁面的檔案和頁面id,用16進製制數值來表示。

本例項中值為0x000000000000。

11.first_iam_page

對於索引,是第1個索引管理頁面(iam頁面)的資料檔案和頁面id,用16進製制數值來表示。

本例項中值為0x4e0000000100。

查詢表上分配的頁面

可以通過dbcc extentinfo命令來檢視給表分配的資料頁面的資訊。在【management studio】中執行下列命令。

dbcc traceon(3604)

godbcc extentinfo(db_student,t_test)

go

光碟**:\**\0512.sql。

查詢結果如圖5-21所示。

可以看到結果中有1個頁面(page_id=45)屬於給表分配的頁面。通過dbcc extentinfo命令可以判斷分配給表的頁面數量及頁號。而通過系統檢視可以查詢到首頁面號。

查詢結果是吻合的。

圖5-21  使用dbcc extentinfo命令檢視表的頁面資訊

總結研究表資料儲存的方法

通過上述研究步驟,我們可以總結一些研究表資料儲存的基本方法如圖5-23所示。

圖5-23  研究表資料儲存的方法

SQL Server 2005資料匯入

在進行sql server2005資料匯入匯出時,可以使用sql server提供的匯入匯出功能來進行資料的匯入匯出,也可以使用bcp工具來進行。資料匯入匯出功能 使用bcp工具進行匯出語法 bcp zlzx publish.dbo.billing subject out c zlzx billin...

SQL Server 2005海量資料處理

超大型資料庫的大小常常達到數百gb,有時甚至要用tb來計算。而單錶的資料量往往會達到上億的記錄,並且記錄數會隨著時間而增長。這不但影響著資料庫的執行效率,也增大資料庫的維護難度。除了表的資料量外,對錶不同的訪問模式也可能會影響效能和可用性。這些問題都可以通過對大表進行合理分割槽得到很大的改善。當表和...

sqlserver2005 資料庫報錯 !

sql server 檢測到基於一致性的邏輯 i o 錯誤 pageid 不正確 應為 1 2356872,但實際為 0 0 在檔案 d database x.mdf 中 偏移量為 0x0000047ed10000 的位置對資料庫 id 5 中的頁 1 2356872 執行 讀取 期間,發生了該錯誤...