資料分割

對資料庫進行資料分割可提升效能,並簡化維護工作。將大型資料表分割成較小的個別資料表後,如果查詢只存取一部分資料,執行的速度就可以比較快,因為要掃描的資料比較少。所以可以更快速地執行維護工作,如重建索引或備份資料表。

不過如果把資料表實際放在個別的磁碟機上,一樣可以達到資料分割的效果,不必真的分割資料表。把一份資料表放在一部實體磁碟機上,再把相關的資料表放在另一部磁碟機上,就可以提升查詢效能,這是因為執行到聯結資料表的查詢時,多個磁碟讀寫頭可以同時讀取資料。SQL Server 檔案群組可以用來指定要把資料表放在哪些磁碟上。

硬體資料分割

硬體資料分割是要讓資料庫利用可用的硬體架構。以下是硬體資料分割的範例:

  • 允許多執行緒作業的多處理器,讓許多查詢可以同時執行。此外,單一查詢在多重處理器上可以執行的更快,這是因為查詢的多個元件可以同時執行。例如,查詢中參考到的每個資料表都可以由不同的執行緒同時掃描。

  • RAID (獨立磁碟備援陣列) 裝置,它將資料分割到多部磁碟機,結果因為同一時間有較多讀寫頭在讀取資料,而使得資料存取速度變快。分割到多部磁碟機的資料表,其掃描速度通常會比儲存在單一磁碟機上的同一個資料表快。此外,將資料表與相關的資料表儲存在不同磁碟機上,可以顯著提升聯結這些資料表的查詢效能。如需詳細資訊,請參閱<RAID>。

水平資料分割

水平資料分割會將一個資料表分割成多個資料表。每個資料表都包含相同數目的資料行,但是包含較少的資料列。例如,內含 10 億個資料列的資料表可以水平分割成 12 個資料表,每個較小的資料表中代表某年中一個月的資料。要求特定月份資料的查詢只要參考適當的資料表即可。

資料表的水平資料分割方式須視資料的分析方式而定。分割資料表的方式應使得查詢能夠參考個數最少的資料表。否則,為了在查詢時以邏輯方式合併資料表,所用的過多 UNION 查詢可能會影響效能。如需有關查詢水平資料分割資料表的詳細資訊,請參閱<使用檢視的實例>。

水平資料分割通常是根據時間和用途。例如,資料表中可能包含過去五年的資料,但常存取的只有今年的資料。在這種情況下,您可以考慮將資料分成五個資料表,各包含一年的資料。

如需詳細資訊,請參閱<資料分割資料表及索引>。

垂直資料分割

垂直資料分割是將資料表分割成包含較少資料行的多個資料表。垂直資料分割有兩種:正規化與資料列分割。

  • 「正規化」是從資料表中移去重複資料行的標準資料庫處理序,它是將重複資料行放到次要資料表中,再利用主索引鍵與外部索引鍵的關聯性來連結到主要資料表。

  • 「資料列分割」是把原始資料表垂直分割成包含較少資料行的資料表。分割資料表中的每個邏輯資料列與其他由 UNIQUE KEY 資料行所識別之資料表中的邏輯資料列相符,而這個可資識別的資料行在所有的資料分割資料表中都是完全相同的。例如,聯結每個分割資料表中識別碼 712 的資料列,就可以重新建立原始資料列。

跟水平資料分割一樣,垂直資料分割可讓查詢掃描較少的資料。這種方式可以提高查詢的執行效能。例如,內含七個資料行的資料表中,如果只會經常參考前四行,那麼將後三行分割成另一個資料表應該會有好處。

進行垂直資料分割之前應該先仔細考慮,因為分析多個資料分割中的資料時,查詢必須聯結資料表。如果資料分割非常大,垂直資料分割還是會影響效能。