共用方式為


預先設定資料庫最佳化

由於SQL Server在任何BizTalk Server環境中扮演的重要角色,因此必須設定/調整SQL Server以獲得最佳效能。 如果SQL Server效能不佳,則BizTalk Server所使用的資料庫將會成為瓶頸,而BizTalk Server環境的整體效能將會受到影響。 本主題描述安裝BizTalk Server和設定BizTalk Server資料庫之前,應該遵循的數個SQL Server效能優化。

設定 NTFS 檔案配置單位

SQL Server將其資料儲存在Extents中,這是 8 個實際連續 8K 頁面或 64 KB 的集合。 Therefore, to optimize disk performance, set the NTFS Allocation Unit size to 64KB as described in the “Disk Configuration Best Practices” at Predeployment I/O Best Practices.

SQL Server版本和版本的考慮

各種版本的SQL Server提供會影響BizTalk Server環境效能的不同功能。 例如,在高負載情況下,可能會超過可供 32 位版本的 SQL Server 使用的資料庫鎖定數目,這會影響 BizTalk 解決方案的效能。 如果您在測試環境中發生「鎖定不足」錯誤,請考慮在 64 位版本的 SQL Server上儲存您的 MessageBox 資料庫。 在 64 位元版本的 SQL Server 上,可用的鎖定數目大幅提高。

在決定 BizTalk 環境所需的資料庫引擎功能時,請考慮下表。 針對需要叢集支援、BizTalk Server記錄傳送支援或 Analysis Services 支援的大規模企業級解決方案,您需要 SQL Server Enterprise Edition 來裝載SQL Server資料庫。

如需SQL Server版本所支援功能的完整清單,請參閱SQL Server版本和支援的功能

資料庫規劃考慮

建議您在快速儲存體 (上裝載SQL Server資料庫,例如快速 SAN 磁片或快速 SCSI 磁片) 。 我們建議 RAID 10 (1+0) ,而不是 RAID 5,因為 raid 5 在寫入時速度較慢。 較新的 SAN 磁片有非常大的記憶體快取,因此在這些情況下,RAID 選取並不重要。 為了提升效能,資料庫及其記錄檔可以位於不同的實體磁片上。

此外,如果使用儲存區域網路 (SAN) ,請考慮調整主機匯流排介面卡 (HBA) 佇列深度。 這可能會影響 I/O 輸送量,而現成的值可能不足以SQL Server。 雖然佇列深度 64 通常接受為沒有任何特定廠商建議的良好起點,但需要測試才能判斷最佳值

安裝最新的 Service Pack 和累積更新以進行SQL Server

安裝最新的 Service Pack 和SQL Server的最新累積更新,以及最新的.NET Framework Service Pack。

在BizTalk Server和SQL Server上安裝 SQL Service Pack 和累積更新

安裝SQL Server的 Service Pack 或累積更新時,也會在BizTalk Server電腦上安裝 Service Pack 或累積更新。 BizTalk Server會使用SQL Server Service Pack 和累積更新所更新的 SQL 用戶端元件。

請考慮使用快速固態硬碟 (SSD) 來存放SQL Server tembdb

請考慮使用一或多個固態硬碟 (SSD) 磁片磁碟機來存放 TempDB。 SSD 磁片磁碟機可大幅提升傳統硬碟的效能優勢,並在進入主要市場時快速降低價格。 由於 TempDB 效能通常是整體SQL Server效能的關鍵因素,因此磁片磁碟機新增的初始成本通常會因為整體增加的SQL Server效能而快速重新計算,特別是當執行SQL Server效能的企業應用程式非常重要時。

請考慮實作 SQL Server 2008 R2 資料收集器和管理Data Warehouse

SQL Server 2008 R2 可配合新的資料收集器和管理Data Warehouse來收集環境/資料庫效能相關資料,以進行測試和趨勢分析。 資料收集器會將所有收集的資料保存到指定的管理Data Warehouse。 雖然這不是效能優化,但對於分析任何效能問題很有用。

授與用於SQL Server Windows 鎖定頁面記憶體許可權的帳戶

將 Windows 鎖定頁面的記憶體中許可權授與SQL Server服務帳戶。 這應該完成,以防止 Windows 作業系統藉由鎖定為實體記憶體中緩衝集區配置給緩衝集區的記憶體,將SQL Server進程的緩衝集區記憶體分頁。

在我們的實驗室環境中,預設會啟用 [Windows 原則 鎖定記憶體中的頁面 ] 選項。 請參閱 啟用 [鎖定記憶體中的分頁] 選項

重要

授與SQL Server服務帳戶 Windows 鎖定記憶體許可權時,會套用某些限制。 請參閱下列項目:

將SE_MANAGE_VOLUME_NAME許可權授與SQL Server服務帳戶

請確定執行SQL Server服務的帳戶具有「執行磁片區維護工作」Windows 許可權,或確定它屬於執行的群組。 如果資料庫必須自動成長,這可讓立即檔案初始化確保最佳效能。

設定最小和最大伺服器記憶體

執行SQL Server裝載BizTalk Server資料庫的電腦應該專用於執行SQL Server。 當執行SQL Server裝載BizTalk Server資料庫的電腦專用於執行SQL Server時,建議您在每個SQL Server實例上設定 「最小伺服器記憶體」和「最大伺服器記憶體」選項,以指定要配置給SQL Server的固定記憶體數量。 在此情況下,您應該將 「min server memory」 和 「max server memory」 設定為相同的值, (等於SQL Server將使用) 的最大實體記憶體數量。 這可減少SQL Server動態管理這些值時所使用的額外負荷。 在執行SQL Server的每部電腦上執行下列 T-SQL 命令,以指定要配置給SQL Server的固定記憶體數量:

sp_configure ‘Max Server memory (MB)’,(max size in MB)  
sp_configure ‘Min Server memory (MB)’,(min size in MB)  

在設定SQL Server記憶體數量之前,請先從實體記憶體總數減去 Windows Server 所需的記憶體,以判斷適當的記憶體設定。 這是您可以指派給SQL Server的最大記憶體數量。

注意

如果執行SQL Server裝載BizTalk Server資料庫的電腦也會裝載 Enterprise Single Sign-On Master Secret Server,則您可能需要調整此值,以確保有足夠的記憶體可供執行 Enterprise Single Sign-On Service。 在SQL Server叢集上執行企業單一 Sign-On 服務的叢集實例,為主要秘密伺服器提供高可用性並不常見。 請參閱 叢集主要秘密伺服器

將 tempdb 資料庫分割成每個SQL Server實例上大小相等的多個資料檔案,BizTalk Server

確保 tempdb 所使用的資料檔案大小相等很重要,因為SQL Server所使用的比例填滿演算法是以資料檔案的大小為基礎。 如果使用不相等的大小建立資料檔案,比例填滿演算法會針對 GAM 配置使用最大的檔案,而不是在所有檔案之間分散配置,進而破壞建立多個資料檔案的目的。 tempdb 資料檔案的最佳數目取決於 tempdb 中所見閂鎖競爭的程度。 作為一般經驗法則,資料檔案數目應等於處理器核心/CPU 數目,其中 CPU 數目為 8 或更少。 對於具有超過 8 個 CPU 的伺服器,請再次為 CPU 數目 (的一半建立資料檔案,只有閂鎖爭用) 。

在我們的實驗室環境中,我們使用下列腳本來建立 8 個 TempDB 資料檔案,其中每個檔案的檔案大小為 1024 MB,且成長為 100 MB,記錄檔為 512 MB 且成長為 100 MB。 資料檔案會移至磁片磁碟機 H:,而記錄檔會移至磁片磁碟機 I:。

重要

此腳本是以「原樣」提供,僅供示範或教育用途使用,且僅供您自行風險使用。 Microsoft 不支援使用此腳本,Microsoft 不保證此腳本的適用性。

--<<<<<<<<<<----------------------------------------------------------------->>>>>>>>>>--  
-- Use of included script samples are subject to the terms specified at   
-- http://www.microsoft.com/info/cpyright.htm  
--<<<<<<<<<<----------------------------------------------------------------->>>>>>>>>>--  
--***Instructions***  
-- 1. If running the script from a remote server, change the context in SSMS to target instance  
-- 2. Enable SQLCMD mode (add & click toolbar button or toggle by clicking Query > SQLCMD Mode)  
-- 3. Commence execution of scripts (recommend running statements discretely to more easily remedy potential problems)  
-- 4. Examine servername & temp configuration  
-- 5. If necessary, 1) Replace instance name in path to reflect target instance *all throughout script*  
      --            2) Modify root drives to reflect drives designated for data & log (folder creation *and* ALTER DB statements)  
-- 6. Resume script execution  
-- 7. If necessary, create new folders  
-- 8. Modify/Add data & log files   
-- 9. Recycle SQL service using sqlservermanager10.msc  
--10. Examine results & if appropriate, delete original tempdb data log files   
 --(if they were "moved", the original files aren't automatically deleted)  
  
--<<<<<<<<<<----------------------------------------------------------------->>>>>>>>>>--  
--1. If running the script from a remote server, change the context in SSMS to target instance  
--2. Enable SQLCMD mode (add & click toolbar button or toggle by clicking Query > SQLCMD Mode)  
--3. Commence execution of scripts (recommend running statements discretely to more easily remedy potential problems)  
--4. Examine servername & temp configuration  
SELECT @@SERVERNAME  
EXEC dbo.sp_helpdb tempdb  
--tempdev   1   C:\tempdb.mdf   PRIMARY  8192 KB  Unlimited  10%  data only  
--templog   2   C:\templog.ldf  NULL      512 KB  Unlimited  10%  log only  
GO  
--5. If necessary, 1) Replace instance name in path to reflect target instance *all throughout script*  
     --            2) Modify root drives to reflect drives designated for data & log (folder creation *and* ALTER DB statements)  
--6. Resume script execution  
--7. If necessary, create new folders  
--!!md H:\MSSQL10.<instance>  
--!!md H:\MSSQL10.<instance>\MSSQL  
--!!md H:\MSSQL10.<instance>\MSSQL\DATA  
GO  
-- 8. Modify/Add data & log files   
 --note: even if the out-of-box mdf is already where it needs to be,   
   --the first command is necessary to modify size & filegrowth  
ALTER DATABASE tempdb MODIFY FILE (NAME = tempdev  , FILENAME = 'H:\tempdb.mdf'   , SIZE = 1024MB , FILEGROWTH = 100MB)  
ALTER DATABASE tempdb ADD FILE    (NAME = tempdat2 , FILENAME = 'H:\tempdat2.ndf' , SIZE = 1024MB , FILEGROWTH = 100MB)  
ALTER DATABASE tempdb ADD FILE    (NAME = tempdat3 , FILENAME = 'H:\tempdat3.ndf' , SIZE = 1024MB , FILEGROWTH = 100MB)  
ALTER DATABASE tempdb ADD FILE    (NAME = tempdat4 , FILENAME = 'H:\tempdat4.ndf' , SIZE = 1024MB , FILEGROWTH = 100MB)  
ALTER DATABASE tempdb ADD FILE    (NAME = tempdat5 , FILENAME = 'H:\tempdat5.ndf' , SIZE = 1024MB , FILEGROWTH = 100MB)  
ALTER DATABASE tempdb ADD FILE    (NAME = tempdat6 , FILENAME = 'H:\tempdat6.ndf' , SIZE = 1024MB , FILEGROWTH = 100MB)  
ALTER DATABASE tempdb ADD FILE    (NAME = tempdat7 , FILENAME = 'H:\tempdat7.ndf' , SIZE = 1024MB , FILEGROWTH = 100MB)  
ALTER DATABASE tempdb ADD FILE    (NAME = tempdat8 , FILENAME = 'H:\tempdat8.ndf' , SIZE = 1024MB , FILEGROWTH = 100MB)  
GO  
ALTER DATABASE tempdb MODIFY FILE (NAME = templog , FILENAME = 'I:\templog.ldf', SIZE =  512MB , FILEGROWTH = 100MB)  
GO  
--8b. Modify log file:  modify drive & instance name to reflect designated destination for tempdb log   
--!!md I:\MSSQL10.<instance>  
--!!md I:\MSSQL10.<instance>\MSSQL  
--!!md I:\MSSQL10.<instance>\MSSQL\DATA  
GO  
-- 9. Recycle SQL service in SQL Server Services node of sqlservermanager10.msc  
    --note, if running script from a UNC share, SSMS will report an error,   
      --but SQL Server Configuration Manager will open if its location is in %path%  
!!sqlservermanager10.msc  
  
--10. Examine results & if appropriate, delete original tempdb data log files   
 --(if they were "moved", the original files aren't automatically deleted)  
EXEC dbo.sp_helpdb tempdb  
--!!del C:\tempdb.mdf     
--!!del C:\templog.ldf  
GO  
  

使用 SQL Server 2008 活動監視器或 SQL Server 2005 效能儀表板報告,如監視SQL Server效能中所述,找出閂鎖爭用的問題。

手動設定SQL Server進程親和性

[進程親和性] 選項可在具有 16 或更多 CPU 的非 NUMA 電腦上執行的高階企業層級SQL Server環境中提供效能增強功能。 這特別適用于在 MessageBox 資料庫中共用資料表上有競爭的高輸送量 BizTalk 環境中。 因為實驗室環境中所使用的SQL Server電腦未啟用 NUMA,而且有 16 個核心,為了優化效能,我們使用下列命令來設定進程親和性:

手動將SQL Server進程親和性從 0 設定為 15

ALTER SERVER CONFIGURATION  
SET PROCESS AFFINITY CPU = 0 to 15  

如需詳細資訊,請參閱 ALTER SERVER CONFIGURATION (Transact-SQL)

設定 MSDTC

若要協助SQL Server與BizTalk Server之間的交易,您必須啟用 Microsoft Distributed Transaction Coordinator (MS DTC) 。 若要在SQL Server上設定 MSDTC,請參閱改善作業系統效能的一般指導方針主題。

針對所有SQL Server實例啟用追蹤旗標 T1118 作為啟動參數

實作追蹤旗標 –T1118 可藉由移除幾乎所有單一頁面配置,協助減少SQL Server實例之間的競爭。 如需詳細資訊,請參閱 KB 328551:PRB:tempdb 資料庫的並行增強功能

請勿變更平行處理原則上限、SQL Server統計資料或資料庫索引重建和重組的預設SQL Server設定

如果SQL Server實例將存放BizTalk Server資料庫,則某些SQL Server設定不應變更。 具體而言,不應該修改SQL Server平行處理原則的最大程度、MessageBox 資料庫的SQL Server統計資料,以及資料庫索引重建和重組的設定。 請參閱SQL Server不應該變更的設定

另請參閱

最佳化資料庫效能