列表D的腳本在每台服務器上創建SalesHistory表,並給每個表加載數據。我們為每個表中的SaleID字段創建一個“檢查”約束,這個約束用來確保只有確定的SaleID值才能進入SalesHistroy表中。
這個字段將作為我們的分區主鍵,當我們查詢分布式分區視圖時,它可以使得查詢優化器來決定是從本地表還是遠程表中獲得數據。
現在需要賦予讀者SQL登錄的權限,來對SalesHistoty表中的元數據進行插入、更新、刪除和浏覽等操作。在每台服務器上執行列表E中的腳本即可。
列表F中的腳本在每台服務器上創建分布式分區視圖。需要注意的是在服務器A上創建的視圖通過查詢本地SalesHistory表,然後將結果集聚集到服務器B上的SalesHistoty表中。
優點
使得查詢優化器可以很容易的知道使用哪個服務器來查詢,在分布式環境中利用分區主鍵可以大大提高性能。你可以通過查看當你依靠該視圖運行查詢時的執行計劃表來檢驗一下。
對於需要從遠程服務器返回記錄的查詢,它會返回所有記錄,但是當僅用本地數據就可以滿足查詢時,就根本不需要查詢遠程服務器。
當你需要插入、更新或刪除數據時,又有什麼幫助呢?實際上,它以同樣的方式給我們提供便利,因為分區鍵是數據表的主鍵(至少它總是主鍵的一部分)。
SQL Server總是知道該在何處插入新記錄並且在本地或遠程執行相應的動作。這同樣適用於更新和刪除,SQL Server使用分區鍵來更新和刪除數據,這也是為什麼我將本文前面定義的權限賦予用戶的原因。
這樣,用戶就可以在需要的時候對SalesHistory表進行讀寫。因為該視圖存在於每個服務器上,我只要在應用層就可以執行視圖上的操作,所以應用層不用知道潛在數據表的結構,只需要關心更新視圖就可以。