共用方式為


優化資料庫的檔案群組

在生產 BizTalk Server 環境中,檔案輸入 /輸出 (I/O) 爭用通常是限制因素或瓶頸。 BizTalk Server 是非常需要大量資料庫的應用程式,而 BizTalk Server 所使用的 SQL Server 資料庫則非常需要檔案 I/O。 本主題描述如何充分利用 SQL Server 的檔案和檔案群組功能,將檔案 I/O 爭用次數降到最低,並改善 BizTalk Server 解決方案的整體效能。

概觀

隨著吞吐量增加,每個 BizTalk Server 解決方案最終都會遇到檔案 I/O 爭用。 I/O 子系統或儲存引擎是任何關係資料庫的重要元件。 成功的資料庫實作通常需要在專案的早期階段仔細規劃。 此規劃應包含下列問題的考慮:

  • 要使用的磁碟硬體類型,例如RAID(獨立磁碟的備援陣列)裝置。

  • 如何使用檔案和檔案群組來分割磁碟上的數據。 如需在 SQL Server 中使用檔案和檔案群組的詳細資訊,請參閱 資料庫檔案和檔案群組

  • 實作最佳索引設計,以改善存取數據時的效能。 如需設計索引的詳細資訊,請參閱 設計索引

  • 如何設定 SQL Server 組態參數以獲得最佳效能。 如需設定 SQL Server 最佳組態參數的詳細資訊,請參閱伺服器組 態選項

    BizTalk Server 的主要設計目標之一是確保 訊息永遠不會 遺失。 為了減輕訊息遺失的可能性,訊息通常會在處理訊息時寫入 MessageBox 資料庫。 當協調流程處理訊息時,訊息會寫入協調流程中每個持續性點的 MessageBox 資料庫。 這些持續性點會導致 MessageBox 將訊息和相關狀態寫入實體磁碟。 在較高的輸送量下,這種持續性可能會造成重大的磁碟競爭,並可能成為瓶頸。

    在 SQL Server 中使用檔案和檔案群組功能的最佳用法已顯示,可有效解決檔案 IO 瓶頸,並改善 BizTalk Server 解決方案的整體效能。

備註

此優化應該只由經驗豐富的 SQL Server 資料庫管理員完成,而且只有在所有 BizTalk Server 資料庫都已正確備份之後。 此優化應該在 BizTalk Server 環境中的所有 SQL Server 計算機上執行。

SQL Server 檔案和檔案群組可用來改善資料庫效能,因為此功能可讓資料庫跨多個磁碟、多個磁碟控制器或 RAID(獨立磁碟的備援數位)系統建立資料庫。 例如,如果您的電腦有四個磁碟,您可以建立由三個數據檔和一個記錄檔組成的資料庫,每個磁碟上有一個檔案。 當存取數據時,四個讀取/寫入頭可以並行存取數據。 這可大幅加快資料庫作業的速度。 如需實作 SQL Server 磁碟硬體解決方案的詳細資訊,請參閱《SQL Server 在線叢書》中的 資料庫效能

此外,檔案和檔案群組可啟用數據放置,因為數據表可以在特定的檔案群組中建立。 這可改善效能,因為指定數據表的所有檔案 I/O 都可以導向特定磁碟。 例如,大量使用的資料表可以放在位於一個磁碟的檔案群組中的檔案上,而資料庫中其他較不頻繁存取的數據表可以位於位於另一個檔案群組中的不同檔案上,而該檔案群組位於第二個磁碟上。

資料庫層的瓶頸中,會詳細討論檔案 I/O 瓶頸。 檔案 I/O(磁碟 I/O)出現瓶頸時,最常見的指標是「實體磁碟:平均磁碟佇列長度」計數器的值。 當執行 SQL Server 的任何電腦上任何指定磁碟的「實體磁碟:平均磁碟佇列長度」計數器值大於 3,則檔案 I/O 可能是瓶頸。

如果套用檔案或檔案群組優化無法解決檔案 I/O 瓶頸問題,可能需要藉由新增額外的實體或 SAN 磁碟驅動器來增加磁碟子系統的輸送量。

本主題描述如何手動套用檔案和檔案群組優化,但這些優化也可以編寫腳本。 BizTalk Server MessageBox 資料庫檔案群組 SQL 腳本中提供了範例 SQL 腳本。

備註

請務必注意,必須修改此腳本,以容納 SQL Server 資料庫針對任何指定的 BizTalk Server 解決方案所使用的檔案、檔案群組和磁碟組態。

使用預設 BizTalk Server 組態建立的資料庫

根據設定 BizTalk Server 時啟用的功能,在 SQL Server 中最多可以建立 13 個不同的資料庫,而且這些資料庫都是在預設檔案群組中建立。 除非使用 ALTER DATABASE 命令變更預設檔案群組,否則 SQL Server 的預設檔案群組是 PRIMARY 檔案群組。 下表列出在設定 BizTalk Server 時啟用所有功能時,在 SQL Server 中建立的資料庫。

BizTalk Server 資料庫

資料庫 預設資料庫名稱 說明
設定資料庫 BizTalkMgmtDb BizTalk Server 群組中所有 BizTalk Server 實例的中央元資訊儲存庫。
BizTalk MessageBox 資料庫 BizTalkMsgBoxDb 儲存訂閱謂詞。 它是主機平臺,並保留每個 BizTalk Server 主機的佇列和狀態數據表。 MessageBox 資料庫也會儲存訊息和訊息屬性。
BizTalk 追蹤資料庫 BizTalkDTADb 儲存 BizTalk Server 追蹤引擎所追蹤的商務和健康情況監視數據。
BAM 分析資料庫 BAMAnalysis SQL Server Analysis Services 資料庫,其會保留商務活動的匯總歷程記錄數據。
BAM 星型架構資料庫 BAMStarSchema 將從商務活動監控收集的數據轉換為適用於 OLAP 處理。 使用 BAM 分析資料庫時,需要此資料庫。
BAM 主要匯入資料庫 BAMPrimaryImport 將商務活動的事件儲存下來,然後在活動實例中查詢其進度和資料。 此資料庫也會執行即時匯總。
BAM 檔案資料庫 BAMArchive 儲存訂閱謂詞。 BAM 封存資料庫可將 BAM 主要匯入資料庫中的商務活動數據的累積降到最低。
SSO 資料庫 SSODB 安全地儲存接收位置的組態資訊。 儲存 SSO 聯盟應用程式的資訊,以及所有分支機構應用程式的加密用戶認證。
規則引擎資料庫 BizTalkRuleEngineDb 資料庫:

- 原則,這是一組相關的規則。
- 詞彙,這是規則中數據參考的使用者友善且特定領域名稱集合。
人工作流服務管理資料庫 BizTalkHwsDb 儲存 BizTalk Human Workflow Services 所需的系統管理資訊。
貿易夥伴管理資料庫 TPM(信任平台模組) 儲存商務活動服務(BAS)的貿易夥伴數據。
追蹤分析伺服器管理資料庫 BizTalkAnalysisDb 儲存企業及健康監控的 OLAP 立方體。

數據檔和記錄檔的分離

如先前所述,預設 BizTalk Server 組態會將 MessageBox 資料庫放在預設檔案群組中的單一檔案中。 根據預設,MessageBox 資料庫的數據和事務歷史記錄會放在相同的磁碟驅動器和路徑上。 這樣做是為了容納具有單一磁碟的系統。 在生產環境中,單一檔案/檔案群組/磁碟組態 並非最佳 。 為了達到最佳效能,數據文件和記錄檔應該放在不同的磁碟上。

備註

記錄檔絕不是檔案群組的一部分。 記錄空間會與數據空間分開管理。

分配 BizTalk Server 資料庫的 80/20 規則

大部分 BizTalk Server 解決方案中爭用的主要來源,無論是磁碟 I/O 爭用還是資料庫爭用,都是 BizTalk Server MessageBox 資料庫。 這在單一和多 MessageBox 案例中都是如此。 假設散發 BizTalk 資料庫的值有多達 80% 衍生自優化 MessageBox 數據檔和記錄檔。 下面詳述的範例案例著重於優化 MessageBox 資料庫的數據檔。 然後,您可以視需要針對其他資料庫遵循這些步驟。 例如,如果解決方案需要大量追蹤,追蹤資料庫也可以優化。

逐步將檔案手動新增至 MessageBox 資料庫

本主題的本節描述可遵循的步驟,手動將檔案新增至 MessageBox 資料庫。 在此範例中,會新增三個檔案群組,然後將檔案新增至每個檔案群組,以將 MessageBox 的檔案分散到多個磁碟。

在 SQL Server 上手動將檔案新增至 MessageBox 資料庫

  1. 開啟 SQL Server Management Studio 以顯示 [ 連接到伺服器 ] 對話框。

    SQL Server 登入畫面

  2. 在 [連接到伺服器] 對話框的 [伺服器名稱] 編輯方塊中,輸入裝載 BizTalk Server MessageBox 資料庫的 SQL Server 實例名稱,然後按兩下 [連線] 以顯示 SQL Server Management Studio。 在 SQL Server Management Studio 的 [ 物件 總管] 窗格中,展開 [ 資料庫 ] 以檢視這個 SQL Server 實例的資料庫。

    SQL Server 2005 Management Studio,物件總管

  3. 以滑鼠右鍵按下要加入檔案的資料庫,然後按兩下 [ 屬性 ] 以顯示資料庫的 [ 資料庫屬性 ] 對話方塊。

    SQL Server 2005 資料庫屬性對話框

  4. 在 [ 資料庫屬性] 對話框中,選取 [ 檔案群組] 頁面。 若要建立 BizTalkMsgBoxDb 資料庫的其他檔案群組,請按兩下 [新增 ]。 在下列範例中,會新增三個額外的檔案群組。

    SQL Server 2005,將檔案群組新增至資料庫

  5. 在 [ 資料庫屬性] 對話框中,選取 [ 檔案 ] 頁面。

    若要建立要新增至檔案群組的其他檔案,請按兩下 [ 新增 ],然後按兩下 [ 確定]。 MessageBox 資料庫現在分散在多個磁碟上,這將比單一磁碟組態提供顯著的效能優勢。

    在下列範例中,會針對稍早建立的每個檔案群組建立檔案,並將每個檔案放在個別的磁碟上。

    SQL Server 2005,將檔案新增至檔案群組

將檔案群組和檔案新增至 BizTalk MessageBox 資料庫的 SQL 腳本範例

本指南包含將檔案群組和檔案新增至 BizTalk Server MessageBox 資料庫的 SQL 腳本。

備註

由於 SQL Server 會循序寫入其記錄檔,因此為 SQL Server 資料庫建立多個記錄檔而沒有達到效能優勢。

若要執行此腳本,請遵循下列步驟:

  1. 開啟 SQL Server Management Studio 以顯示 [ 連接到伺服器 ] 對話框。

  2. 在 [連接到伺服器] 對話框的 [伺服器名稱] 編輯方塊中,輸入裝載 BizTalk Server MessageBox 資料庫的 SQL Server 實例名稱,然後按兩下 [連線] 以顯示 [SQL Server Management Studio] 對話方塊。

  3. 在 SQL Server Management Studio 中,單擊檔案功能表,選擇新增,然後單擊使用當前連線查詢以啟動 SQL 查詢編輯器。

  4. 將範例腳本從 BizTalk Server MessageBox 資料庫檔案群組 SQL 腳本 複製到查詢編輯器中。

  5. 編輯文本中的參數,以符合 BizTalk Server 環境,並執行腳本。

    腳本的優點是腳本可以快速執行多個工作、可以精確地重現,並減少人為錯誤的可能性。 腳本的缺點是,執行未正確撰寫的腳本可能會造成嚴重問題,而可能需要從頭重新設定 BizTalk Server 資料庫。

這很重要

在生產環境中執行之前,本指南中的範例腳本等 SQL 腳本必須經過徹底測試,這一點非常重要。

另請參閱

優化資料庫效能