Microsoft SQL Server 中,資料儲存與索引儲存的說明

Microsoft SQL Server 中,資料儲存與索引儲存的說明

  1. 資料頁面(Data Pages)

    • 資料頁面是用來存儲資料表中實際資料的地方。
    • 每個資料頁面的大小通常是 8KB。
    • 資料頁面以頁的形式存儲在資料檔案(Data Files)中,每個資料檔案可以包含多個資料頁面。
    • 資料頁面中的資料按照資料表的結構進行組織和存儲。每列資料都以固定長度或變動長度的格式存儲在資料頁面上。
  2. 索引頁面(Index Pages)

    • 索引頁面是用來存儲索引數據的地方。索引可以是聚集索引或非聚集索引。
    • 每個索引頁面的大小也通常是 8KB。
    • 索引頁面包含索引鍵和指向資料頁面或下一級索引頁面的指標。
    • 聚集索引的索引頁面與資料頁面結構相似,因為聚集索引的結構與資料表的結構相同,所以索引頁面包含資料本身。
    • 非聚集索引的索引頁面僅包含索引鍵和指向資料頁面或下一級索引頁面的指標,而不包含實際資料。

這些頁面的組織和管理是 SQL Server 效能和資料存取的關鍵部分。資料頁面和索引頁面的分配、讀取、寫入和維護受到 SQL Server 引擎的管理和優化,以確保高效率和可靠性。理解這些頁面的結構和運作方式對於設計和管理資料庫是非常重要的。

當查詢結果的資料跨越多個不連續的索引頁面且取得的欄位並不在索引鍵中時,非聚集索引的工作方式如下

  1. 索引掃描

    • SQL Server 首先根據查詢條件使用索引來定位符合條件的記錄。這可能涉及到索引的搜索和篩選。
    • 如果查詢的條件無法利用索引進行快速定位,則可能會採用索引的全掃描,也就是對整個索引進行遍歷,以找出符合條件的資料。
  2. 資料檢索

    • 當索引定位到符合查詢條件的資料頁面時,SQL Server 需要讀取這些頁面上的資料行以滿足查詢需求。
    • 如果資料行不在索引中,SQL Server 必須通過資料頁面的指標找到對應的資料頁面,然後從中讀取所需的資料行。
    • 由於資料行不在索引中,這可能需要額外的 IO 操作,因為 SQL Server 需要訪問資料檔案中的不同頁面來檢索完整的資料。
  3. 資料合併與排序

    • 當從不同的資料頁面檢索資料後,SQL Server 需要將這些資料合併並進行排序(如果需要)以生成查詢結果。
    • 這可能涉及到將資料行按照查詢需求進行組合、排序和過濾,以生成最終的查詢結果集。

總的來說,當查詢結果的資料跨越多個不連續的索引頁面且需要檢索的欄位不在索引中時,SQL Server 將通過索引掃描來定位符合條件的記錄,然後通過讀取資料頁面來檢索所需的資料行。這可能需要額外的 IO 成本和資源,特別是當查詢結果跨越大量頁面或涉及大量的資料行時。

 

留言

這個網誌中的熱門文章

ORA-12514: TNS: 監聽器目前不知道連線描述區中要求的服務

Oracle 例外控制(Exception Control)

Oracle 工作排程 DBMS_JOB 筆記