使用 SQLIOSim 公用程式來模擬磁碟子系統上的 SQL Server 活動

本文說明如何使用 SQLIOSim 公用程式在磁碟子系統上執行壓力測試,以模擬 SQL Server 活動。

原始產品版本: SQL S
原始 KB 編號: 231619

簡介

本文說明 SQLIOSim 工具。 您可以使用 SQLIOSim,在 SQL Server 使用的磁碟子系統上執行可靠性和完整性測試。 這些 SQLIOSim 測試會模擬 Microsoft SQL Server 執行的讀取、寫入、檢查點、備份、排序和預先讀取活動。 如需 SQL Server I/O 模式的詳細資訊,請參閱第 2 章 SQL Server I/O 基本概念。 SQLIOSim 公用程式會獨立於 SQL Server 引擎執行此模擬。

I/O 模擬測試的主要目標是在 SQL Server 開始使用之前,確保基礎 I/O 子系統的可靠性。 SQLIOSim 不會與 SQL Server 互動,甚至不需要 SQL Server 執行。 事實上,在大部分情況下,建議您在 SQL Server 未執行時使用SQLIOSim,以避免兩個應用程式之間的I/O輸送量競爭。 請小心不要指向或使用 SQLIOSim 測試中的實際 SQL Server 資料庫檔案,因為您可以覆寫這些檔案。

為了協助維護適當的數據完整性,建議您在新硬體上部署 SQL Server 之前,先對 I/O 子系統執行壓力測試。 SQLIOSim 公用程式會模擬讀取和寫入模式,以及 SQL Server 的問題識別技術。 為了執行這些工作,SQLIOSim 公用程式會模擬 SQL Server 系統的用戶活動和系統活動。

SQLIOSim 公用程式不保證或保證數據安全性或完整性。 公用程序的設計目的是要提供系統環境的基準測試。 SQLIOSim 公用程式可能會公開潛在的數據完整性問題。

如需記錄和數據記憶體的詳細資訊,請參閱記錄和數據儲存演算法的描述,這些演算法可在 SQL Server 中擴充數據可靠性

如果您必須執行效能基準檢驗,並想要判斷記憶體系統的 I/O 輸送量容量,請改用 Diskspd 工具。

SQLIOSim 公用程式會取代先前稱為 SQL70IOStress 公用程式的 SQLIOStress 公用程式。

SQLIOSim 位置

在過去,SQLIOSim 是以個別的下載套件的形式提供。 從 SQL Server 2008 開始,SQLIOSim 包含在 SQL Server 產品安裝中。 當您安裝 SQL Server 時,可以在 SQL Server 安裝的 \Binn 資料夾中找到 SQLIOSim 工具。 建議您使用此更新版本的工具來模擬磁碟子系統上的IO活動。

三個檔案是 SQLIOSim 套件的一部分。 \Binn 資料夾包含兩個可執行檔,SQLIOSim.comSQLIOSim.exe。 這兩個可執行檔都提供相同的 I/O 模擬功能。

  • SQLIOSim.com 是命令行工具。 您可以將它設定為在不與使用者互動的情況下執行。 若要執行此設定,您可以使用命令行參數、組態檔或這兩種方法的組合。
  • SQLIOSim.exe 是不接受任何命令行參數的圖形 (GUI) 應用程式。 不過, SQLIOSim.exe 會從組態檔載入預設組態數據。
  • 您也可以使用組態檔來協助自動化 SQLIOSim 的 I/O 模擬。 如需詳細資訊,請參閱 SQLIOSim 組態檔一 節。

在沒有 SQL Server的電腦上使用 SQLIOSim

建議您在安裝 SQL Server 之前,先在計算機上使用 SQLIOSim 進行擴充測試。 使用它來測試您計劃在未來放置數據和記錄檔的 I/O 子系統,並確保 I/O 子系統的可靠性。 若要完成這項工作,請考慮從安裝 SQL Server 的計算機複製三個 SQLIOSim 檔案,並在安裝 SQL Server 之前執行測試。 如果您打算使用預先設定的設定,請複製 SQLIOSim.comSQLIOSim.exe,以及選擇性地複製一或多個組態檔。 然後在該計算機上執行測試模擬。

如何使用 SQLIOSim

當您執行 SQLIOSim 時,不需要執行 SQL Server 服務。 事實上,建議您不要在 SQLIOSim 執行時執行 SQL Server,因為它們可以競爭 I/O 資源。

警告

請勿指定用於測試的實際 SQL Server 資料庫檔案。 SQLIOSim 公用程式會以隨機測試模式覆寫數據,而實際 SQL Server 數據將會遺失。

接下來的幾個範例說明如何使用 GUI 和命令行執行 SQLIOSim。

範例 1:使用 GUI

  1. 移至 C:\Program Files\Microsoft SQL Server\MSSQLXX。<InstanceName>\MSSQL\Binn

  2. 啟動 SQLIOSIM.EXE 應用程式。 您可以看到 [ 檔案和組態] 視窗,其中包含一些預設設定。 您可以修改這些設定,以符合您的組態需求。

    顯示檔案組態的螢幕快照。

  3. 反白顯示清單中的第一個 mdx 檔案 C:\temp\sqliosim\sqliosim.mdx 。 此檔案相當於數據檔。

  4. 藉由變更檔案設定的位置、大小、大小上限或遞增來修改檔案設定。 當您想要模擬資料檔時,請 保持未核 取記錄檔。 然後選取 [ 套用 ] 按鈕。

    顯示資料檔案組態的螢幕快照。

    此範例顯示檔案的位置已變更為 D:\temp\sqliosim\sqliosim.mdx、其大小設定為 2048 MB、其大小上限設為 4096 MB,而其增量大小設為 64 MB。

  5. 使用 ldx 後綴修改第二個檔案。 這個檔案代表事務歷史記錄檔的對等專案。 請務必保持啟用 [記錄檔] 複選框。 完成時,選取 [ 用]。

    記錄檔組態的螢幕快照。

  6. 您可以選取表格式方格內畫面中央的 [ 新增檔案 ] 選項,將更多檔案新增至清單。 選取 [新增檔案] 之後,您可以輸入檔案位置並挑選其餘設定。 別忘了選取 [ 套用]。 以下為範例:

    新增測試檔案的螢幕快照。

  7. 一旦您滿意您的設定,請選取 [ 確定] 按鈕。

  8. 選取 [模擬器>開始 ] 以執行 SQL IO 模擬。 或者,您可以選取 F12 或最左邊的按鈕,其中包含綠色圓圈。

    顯示執行中 SQLIOSim 的螢幕快照。

  9. 等候模擬完成並檢查輸出。

範例 2:使用命令行工具和組態檔

  1. 拿掉和 區段的批注,並將值修改為File1File2新的 SQLIOSim 檔案,以修改 FileNamesqliosim.default.cfg.ini 檔案。 例如:

    [File1]
    FileName=D:\sqliosim\sqliosim.mdx
    InitialSize=100
    MaxSize=200
    Increment=10
    Shrinkable=TRUE
    LogFile=FALSE
    Sparse=FALSE
    
    [File2]
    FileName=L:\sqliosim\sqliosim.ldx
    InitialSize=50
    MaxSize=50
    Increment=0
    Shrinkable=FALSE
    LogFile=TRUE
    Sparse=FALSE
    
  2. 使用 組態檔C:\temp\sqliosimconfig\sqliosim.default.cfg.ini 執行 SQLIOSIM.COM

    SQLIOSIM.COM -cfg C:\temp\sqliosimconfig\sqliosim.default.cfg.ini -log C:\temp\sqliosimconfig\sqliosim.log.xml
    

範例 3:搭配參數使用命令行工具

您可以使用 -dir 參數同時測試多個磁碟區。 下列範例會建立 500 MB 的檔案,並在) 5 分鐘 (執行測試 300 秒。

SQLIOSIM.COM -cfg C:\temp\sqliosimconfig\sqliosim.default.cfg.ini -log C:\temp\sqliosim\sqliosim.log.xml -dir "D:\sqliosim" -dir "F:\sqliosim\testfolder" -size 500 -d 300

範例 4:針對多個磁碟驅動器使用命令行工具

下列範例會建立 32 GB 的檔案,並使用sqliosim.hwcache.cfg.ini組態檔執行測試 600 秒 (10 分鐘 )

SQLIOSIM.COM -cfg "D:\Temp\SQLIOSIM\SQLIOSIM_Configs\sqliosim.hwcache.cfg.ini" -d 600 -dir D:\temp\sqliosim -log D:\temp\sqliosim\simlog.xml -size 32768

SQLIOSim.com 命令行參數

SQLIOSIM.COM 接受有限數目的命令行參數來控制基本行為。 SQLIOSim 公用程式的組態檔提供進階行為控制。 當命令行參數和組態檔選項重疊時,命令行參數會優先。

參數 註解
-cfg 覆寫 Sqliosim.cfg.ini 預設組態檔。 如果公用程式找不到檔案,SQLIOSim 公用程式會傳回錯誤。
-save 將產生的組態儲存在組態檔中。 您可以使用此選項來建立初始組態檔。
-log 指定錯誤記錄檔名稱和錯誤記錄檔路徑。 預設檔案名稱 是Sqliosim.log.xml
-dir迪爾 設定位置以建立數據 (.mdf) 檔案,並將記錄檔 (.ldf) 檔案。 您可以多次執行此命令。 在大部分情況下,此位置是磁碟驅動器根目錄或磁碟區裝入點。 此位置可以是長路徑或 UNC 路徑。
-d 設定主要執行的持續時間。 此值會排除準備階段和驗證階段。
-sizeM b 將數據檔的初始大小設定為 MB (MB) 。 檔案可以成長到初始大小的兩倍。 記錄檔的大小會計算為數據檔大小的一半。 不過,記錄檔不能大於 50 MB。

SQLIOSim 組態檔

您可以使用組態檔搭配 SQLIOSim,協助您預先選擇 I/O 仿真的所有設定。 此組態檔可協助自動執行 SQLIOSim。

您可以從 SQL Server 支援小組的 GitHub 存放庫下載各種測試的範例組態檔。

您不需要使用組態檔。 如果您不使用組態檔,則除了數據檔位置和記錄檔位置之外,所有參數都會採用預設值。 您必須使用下列其中一種方法來指定資料檔案位置和記錄檔位置:

  • 使用 SQLIOSIM.COM 檔案中的 命令行參數。
  • 執行SQLIOSim.exe檔案之後,請使用 [ 檔案和 ] 對話框。
  • 使用組態檔的 [檔案<N> ] 區段。

範例組態檔

如果您想要將它們用於自動化 SQLIOSim 執行,可以使用五個範例組態檔。

範例檔案 描述 與預設組態檔不同的參數
sqliosim.default.cfg.ini
sqliosim.hwcache.cfg.ini - 最小化讀取

- 檔案會變得很小,以將它們完整保存在記憶體中

- 沒有循序讀取
針對 AuditUser 區 段和 ReadAheadUser 區 段:

CacheHitRatio=10000
UserCount=0
sqliosim.nothrottle.cfg.ini - 移除 I/O 節流

- 將等候增加 I/O 磁碟區的時間降到最低
TargetIODuration=1000000
AuditDelay=10
RADelay=10
sqliosim.seqwrites.cfg.ini - 最小化讀取

- 檔案會變得很小,以將它們完整保存在記憶體中

- 檔案變成不可壓縮

- 沒有循序讀取

- 沒有隨機存取

- 大量更新大型區塊而不延遲
Shrinkable=FALSE

針對 AuditUserReadAheadUserRandomUser 區 段:

CacheHitRatio=10000
ForceReadAhead=FALSE
BuffersBUMin=600
BuffersBUMax=1000
BUDelay=1
UserCount=0
sqliosim.sparse.cfg.ini - 僅使用 32 MB 的記憶體

- 讓目標 I/O 持續時間夠大,以啟用許多未處理的 I/O 要求

- 停用散佈/收集 API 以針對每 8 KB 頁面發出個別的 I/O 要求

- 建立 1 GB 不可壓縮的檔案

- 在檔案中建立 1 GB 無法共用的次要疏鬆數據流
MaxMemoryMB=32
TestCycles=3
TestCycleDuration=600
TargetIODuration=10000
UseScatterGather=FALSE

[File1]
FileName=sqliosim.mdx
InitialSize=1000 MaxSize=1000
Increment=10
Shrinkable=FALSE
LogFile=FALSE
Sparse=FALSE

[File2]
FileName=sqliosim.ldx
InitialSize=50
MaxSize=50
Increment=0
Shrinkable=FALSE
LogFile=TRUE
Sparse=FALSE

[File3]
FileName=sqliosim.mdx:replica
InitialSize=1000
MaxSize=1000
Increment=10
Shrinkable=FALSE
LogFile=FALSE
Sparse=TRUE

參數值的注意事項

  • 如果參數的名稱指出參數是比率或百分比,則參數的值會以百分比表示,或是比例除以0.01。 例如,參數的 CacheHitRatio 值為 10 percent。 這個值表示為 , 1000 因為 10 除以 0.01 等於 1000。 百分比參數的最大值為 10000
  • 如果參數類型為數值,而且您將非數值指派給 參數,SQLIOSim 公用程式會將 參數設定為 0
  • 如果參數型態為 Boolean,您可以指定參數的有效值為 truefalse。 此外,這些值會區分大小寫。 SQLIOSim 公用程式會忽略任何無效的值。
  • 如果一組參數指出最小值和最大值,則最小值不得超過最大值。 例如,參數的 MinIOChainLength 值不得大於 參數的 MaxIOChainLength 值。
  • 如果參數指出數頁,SQLIOSim 公用程式會針對 SQLIOSim 公用程式所處理的檔案檢查您指派給 參數的值。 SQLIOSim 公用程式會執行這項檢查,以確定頁面數目不會超過檔案大小。

組態檔區段

組態檔中有數個區段:

下一節將說明這其中每一節。

CONFIG 區段

SQLIOSim 公用程式會採用您在 SQLIOSim 組態檔的 CONFIG 區段中指定的值,以建立全域測試行為。

參數 預設值 描述 Comments
ErrorFile sqliosim.log.xml XML 類型記錄檔的名稱
CPUCount 計算機上的CPU數目 要建立的邏輯 CPU 數目 最大值為 64 個 CPU。
Affinity 0 要套用至邏輯 CPU 的實體 CPU 親和性遮罩 同質遮罩應該在使用中的CPU遮罩內。 的值表示將使用所有可用的 0 CPU。
MaxMemoryMB SQLIOSim 公用程序啟動時可用的物理記憶體 以 MB 為單位的緩衝池大小 此值不能超過計算機上的物理記憶體總數。
StopOnError 發生第一個錯誤時停止模擬
TestCycles 1 要執行的完整測試週期數目 的值 0 表示無限數目的測試週期。
TestCycleDuration 300 測試週期的持續時間,以秒為單位,不包括循環結束時的稽核階段
CacheHitRatio 1000 SQLIOSim 公用程式從磁碟讀取時的模擬快取命中率
MaxOutstandingIO 0 整個進程允許的未處理 I/O 作業數目上限 值不能超過 140,000。 的值 0 表示最多允許 140,000 個 I/O 作業。 這是公用程式的限制。
TargetIODuration 100 以節流為目標的 I/O 作業持續時間,以毫秒為單位 如果平均 I/O 持續時間超過目標 I/O 持續時間,SQLIOSim 公用程式會節流未處理的 I/O 作業數目,以減少負載並改善 I/O 完成時間。
AllowIOBursts 允許關閉節流以張貼許多 I/O 要求 在測試周期結束時的初始更新、初始檢查點和最終檢查點通過期間,會啟用I/O 高載。 仍 MaxOutstandingIO 會接受 參數。 您可以預期會有很長的 I/O 警告。
NoBuffering 使用選項FILE_FLAG_NO_BUFFERING SQL Server 使用 FILE_FLAG_NO_BUFFERING == true開啟資料庫檔案。 某些公用程式和服務,例如 Analysis Services,會使用 FILE_FLAG_NO_BUFFERING == false。 若要完整測試伺服器,請針對每個設定執行一個測試。
WriteThrough 使用選項FILE_FLAG_WRITE_THROUGH SQL Server 使用 FILE_FLAG_WRITE_THROUGH == true開啟資料庫檔案。 不過,某些公用程式和服務會使用 FILE_FLAG_WRITE_THROUGH == false開啟資料庫檔案。 例如,SQL Server Analysis Services 使用 FILE_FLAG_WRITE_THROUGH == false開啟資料庫檔案。 若要完整測試伺服器,請針對每個設定執行一個測試。
ScatterGather 使用 ReadScatterWriteGather API 勾選這個參數設定為 true,參數 NoBuffering 也會設定為 true

SQL Server 會針對大部分的 I/O 要求使用散佈/收集 I/O。
ForceReadAhead 即使數據已讀取,仍執行預先讀取作業 即使數據頁已經在緩衝池中,SQLIOSim 公用程式還是會發出讀取命令。

Microsoft SQL Server 支援已成功使用 true 設定來公開 I/O 問題。
DeleteFilesAtStartup 如果檔案存在,請在啟動時刪除檔案 檔案可能包含多個數據流。 檔案中只會截斷專案中 File <N> FileName 指定的數據流。 如果指定預設數據流,則會刪除所有數據流。
DeleteFilesAtShutdown 測試完成後刪除檔案 檔案可能包含多個數據流。 檔案中只會截斷您在專案中 File <N> FileName 指定的數據流。 如果指定預設數據流,SQLIOSim 公用程式會刪除所有數據流。
StampFiles 藉由戳記零來展開檔案 如果檔案很大,此程式可能需要很長的時間。 如果您將此參數設定為 false,SQLIOSim 公用程式會藉由設定有效的數據標記來擴充檔案。

SQL Server 2005 使用數據檔的立即檔案初始化功能。 如果數據檔是記錄檔,或未啟用立即檔案初始化,SQL Server 執行零戳記。 SQL Server 2000 之前的 SQL Server 版本一律會執行零戳記。

您應該在測試期間切換 參數的 StampFiles 值,以確保立即檔案初始化和零戳記都正常運作。

檔案<N> 區段

SQLIOSim 公用程式的設計目的是允許多個檔案測試。 針對測試中的每個檔案,[File2]File<N>段會表示為 [File1]

參數 預設值 描述 Comments
FileName 沒有預設值 檔名和路徑 參數 FileName 可以是長路徑或 UNC 路徑。 它也可以包含次要數據流名稱和類型。 例如, FileName 參數可能會設定為 file.mdf:stream2

注意在 2005 SQL Server,DBCC 作業會使用數據流。 建議您執行串流測試。
InitialSize 沒有預設值 以 MB 為單位的初始大小 如果現有的檔案大於為 參數指定的 InitialSize 值,SQLIOSim 公用程式就不會壓縮現有的檔案。 如果現有的檔案較小,SQLIOSim 公用程式會展開現有的檔案。
MaxSize 沒有預設值 大小上限為 MB 檔案不能大於您為 參數指定的 MaxSize 值。
Increment 0 以 MB 為單位的大小,檔案會隨之成長或縮小。 如需詳細資訊,請參 ShrinkUser 閱本文的 一節。 SQLIOSim 公用程式會在啟動時調整 Increment 參數,以建立情況: Increment * MaxExtents < MaxMemoryMB / NumberOfDataFiles
如果的 Increment 值為 0,SQLIOSim 公用程式會將檔案設定為不可壓縮。
Shrinkable 指出檔案是否可以壓縮或展開 如果您將 參數設定 Increment0,則會將檔案設定為不可壓縮。 在這裡情況下,您必須將 參數設定 Shrinkablefalse。 如果您將 參數設定 Increment 為 以外的 0值,則會將檔案設定為可壓縮。 在這裡情況下,您必須將 參數設定 Shrinkabletrue
Sparse 指出是否應在檔案上設定疏鬆屬性 針對現有的檔案,當您將 參數設定 Sparse 為 false 時,SQLIOSim 公用程式不會清除疏鬆屬性。

SQL Server 2005 使用疏鬆檔案來支援快照集資料庫和次要 DBCC 數據流。

建議您同時啟用疏鬆檔案和數據流,然後執行測試階段。

注意如果您為檔案設定設定Sparse = true,請勿在 區段中config指定 NoBuffering = false 。 如果您使用這兩個衝突的組合,您可能會從工具收到類似下列的錯誤:

Error:-=====Error: 0x80070467
錯誤文字:存取硬碟時,磁碟作業失敗,即使在重試之後也一樣。
描述:C:\SQLIOSim.mdx 頁面上的緩衝區驗證失敗:28097
LogFile 指出檔案是否包含使用者或事務歷史記錄數據 您應該定義至少一個記錄檔。

RandomUser 區段

SQLIOSim 公用程式會採用您在 區段中指定的RandomUser值來模擬執行隨機查詢作業的 SQL Server 背景工作角色,例如在線事務處理 (OLTP) I/O 模式。

參數 預設值 描述 Comments
UserCount -1 同時執行的隨機存取線程數目 值不能超過值: CPUCount*1023-100
所有用戶的總數也不能超過此值。 值為零 (0) 表示您無法建立隨機存取使用者。 的 -1 值表示您必須使用值的自動設定: min(CPUCount*2, 8)
注意SQL Server 系統可能會有數千個會話。 大部分的會話沒有作用中要求。 count(*)在查詢中針對sys.dm_exec_requests動態管理檢視使用 函式, (DMV) 作為建立此測試參數值的基準。

CPUCount這裡指的是 區段中 參數的CONFIGCPUCount

min(CPUCount*2, 8)會導致和之間的CPUCount*28值變小。
JumpToNewRegionPercentage 500 跳至檔案新區域的機會 隨機選取區域的開頭。 區域的大小是參數值與 參數值 MinIOChainLength 之間的隨機值 MaxIOChainLength
MinIOChainLength 1 頁面中的區域大小下限
MaxIOChainLength 100 頁面中的區域大小上限 SQL Server 2005 Enterprise Edition 和 SQL Server 2000 Enterprise Edition 最多可閱讀 1,024 頁。

最小值為 0。 最大值受限於系統記憶體。

一般而言,隨機用戶活動會導致小型掃描作業發生。 使用區段中指定的 ReadAheadUser 值來模擬較大的掃描作業。
RandomUserReadWriteRatio 9000 要更新的頁面百分比 已在區域中選取隨機長度鏈結,而且可以讀取。 此參數會定義要更新並寫入磁碟的頁面百分比。
MinLogPerBuffer 64 記錄檔記錄大小下限,以位元組為單位 此值必須是磁碟上扇區大小的倍數,或是平均符合磁碟扇區大小的大小。
MaxLogPerBuffer 8192 記錄檔記錄大小上限,以位元組為單位 此值不能超過 64,000。 值必須是磁碟上扇區大小的倍數。
RollbackChance 100 發生記憶體內部作業,導致發生復原作業的機會。 發生此復原作業時,SQL Server 不會寫入記錄檔。
SleepAfter 5 每個週期后的睡眠時間,以毫秒為單位

AuditUser 區段

SQLIOSim 公用程式會採用您在 區段中指定的 AuditUser 值來模擬 DBCC 活動,以讀取和稽核頁面的相關信息。 即使 參數的 UserCount 值設定為 0,也會發生驗證。

參數 預設值 描述 Comments
UserCount 2 稽核線程數目 值不能超過下列值: CPUCount*1023-100
所有用戶的總數也不能超過此值。 的值 0 表示您無法建立隨機存取使用者。 的 -1 值表示您必須使用值的自動設定: min(CPUCount*2, 8)
注意SQL Server 系統可能會有數千個會話。 大部分的會話沒有作用中要求。 count(*)在對 DMV 的sys.dm_exec_requests查詢中使用 函式,作為建立此測試參數值的基準。

CPUCount這裡指的是 區段中 參數的CONFIGCPUCount

min(CPUCount*2, 8)會導致和之間的CPUCount*28值變小。
BuffersValidated 64
DelayAfterCycles 2 BuffersValidated 週期數目完成之後套用 AuditDelay 參數
AuditDelay 200 每個 DelayAfterCycles 作業之後要等候的毫秒數

ReadAheadUser 區段

SQLIOSim 公用程式會採用 區段中指定的ReadAheadUser值來模擬 SQL Server 讀取前置活動。 SQL Server 利用預先讀取活動來最大化異步 I/O 功能,並限制查詢延遲。

參數 預設值 描述 Comments
UserCount 2 預先讀取的線程數目 值不能超過下列值: CPUCount*1023-100
所有用戶的總數也不能超過此值。 的值 0 表示您無法建立隨機存取使用者。 值表示 -1 您必須使用下列值的自動設定: min(CPUCount*2, 8)
注意SQL Server 系統可能會有數千個會話。 大部分的會話沒有作用中要求。 count(*)在對 DMV 的sys.dm_exec_requests查詢中使用 函式,作為建立此測試參數值的基準。

CPUCount 這裡指的是 CONFIG 區段中 參數的值 CPUCount

min(CPUCount*2, 8)會導致和之間的CPUCount*28值變小。
BuffersRAMin 32 每個週期要讀取的頁面數目下限 最小值為 0。 最大值受限於系統記憶體。
BuffersRAMax 64 每個週期要讀取的頁面數目上限 SQL Server Enterprise 版本在單一要求中最多可讀取 1,024 頁。 如果您在具有大量 CPU、記憶體和磁碟資源的電腦上安裝 SQL Server,建議您增加檔案大小和預先讀取大小。
DelayAfterCycles 2 RADelay在指定的週期數目完成之後套用 參數
RADelay 200 每個 DelayAfterCycles 作業之後要等候的毫秒數

BulkUpdateUser 區段

SQLIOSim 公用程式會採用您在 區段中指定的 BulkUpdateUser 值來模擬大量作業,例如 SELECT...INTO 作業和 BULK INSERT 作業。

參數 預設值 描述 Comments
UserCount -1 線程數 BULK UPDATE 值不能超過下列值: CPUCount*1023-100
-1 值表示您必須使用下列值的自動設定: min(CPUCount*2, 8)
注意SQL Server 系統可能會有數千個會話。 大部分的會話沒有作用中要求。 count(*)在對 DMV 的sys.dm_exec_requests查詢中使用 函式,作為建立此測試參數值的基準。

CPUCount這裡指的是 區段中 參數的CONFIGCPUCount

min(CPUCount*2, 8)會導致和之間的CPUCount*28值變小。
BuffersBUMin 64 每個週期要更新的頁面數目下限
BuffersBUMax 128 每個週期要更新的頁面數目上限 最小值為 0。 最大值受限於系統記憶體。
DelayAfterCycles 2 BUDelay在指定的週期數目完成之後套用 參數
BUDelay 10 每個 DelayAfterCycles 作業之後要等候的毫秒數

ShrinkUser 區段

SQLIOSim 公用程式會採用您在 區段中指定的 ShrinkUser 值來模擬 DBCC 壓縮作業。 SQLIOSim 公用程式也可以使用 區 ShrinkUser 段讓檔案成長。

參數 預設值 描述
MinShrinkInterval 120 壓縮作業之間的最小間隔,以秒為單位
MaxShrinkInterval 600 壓縮作業之間的間隔上限,以秒為單位
MinExtends 1 SQLIOSim 公用程式將成長或壓縮檔案的最小遞增數目
MaxExtends 20 SQLIOSim 公用程式將成長或壓縮檔案的增量上限

配置 .ini 檔案批注

分號字元 (;) 在組態檔中行的開頭 .ini 會將行視為單一批注。

檔案建立

SQLIOSim 公用程式會建立個別的數據檔和記錄檔,以模擬 SQL Server 在其數據檔及其記錄檔中產生的 I/O 模式。 SQLIOSim 公用程式不會使用 SQL Server 引擎來執行壓力活動。 因此,您可以先使用 SQLIOSim 公用程式來測試計算機,再安裝 SQL Server。

當您執行 SQLIOSim 公用程式時,請確定您指定的檔案位置與您用於 SQL Server 資料庫檔案的檔案位置相同。 當您這樣做時,公用程式會模擬與 SQL Server 資料庫相同的 I/O 路徑。

您可以啟用現有測試檔案的壓縮或加密屬性。 您也可以針對將建立測試檔案的現有目錄啟用這些屬性。 啟用這些屬性的對應選項位於檔案或目錄的 [屬性] 對話框中。

根據預設,SQLIOSim 公用程式會建立擴展名為 .mdx.ldx 的測試檔案。 因此,這些檔案不會覆寫現有的數據和記錄檔。

警告

請勿指定用於測試的實際 SQL Server 資料庫檔案。 SQLIOSim 公用程式會以隨機測試模式覆寫數據,而實際 SQL Server 數據將會遺失。

SQLIOSim 錯誤記錄檔和處理

SQLIOSim 公用程式會在下列其中一個位置建立錯誤記錄檔:

  • 您在記錄啟動參數中指定的位置
  • 您在 ErrorFile= 檔案 Sqliosim.cfg.ini行中指定的位置

SQLIOSim.log.xml 錯誤記錄檔包含執行的詳細數據。 這些詳細數據包括錯誤資訊。 請仔細檢閱記錄,以取得錯誤資訊和警告資訊。

注意事項

如果您在 SQLIOSim 公用程式中遇到錯誤,建議您要求硬體製造商協助判斷問題的根本原因。 此問題也可能由設備驅動器、文件系統篩選器驅動程式 (例如,防病毒軟體) 或操作系統所造成。

多個複本

SQLIOSim 公用程式可容納多個檔案層級測試和多用戶層級測試。 SQLIOSim 公用程式不需要多次叫用。 如果下列條件成立,您可以執行多個 SQLIOSim 公用程式複本:

  • 所有複本都會參考每個公用程序實例的唯一測試檔案。
  • MaxMemoryMB每個實例的 參數會提供一個對每個實例而言都足夠且不重疊的記憶體區域。

每個實例的 MaxMemoryMB 參數總和必須小於或等於物理記憶體總計。 某些測試階段,例如檢查點模擬,可能會耗用大量記憶體,而且可能會在您執行多個復本時建立記憶體不足的情況。 如果您遇到記憶體不足的錯誤,您可以減少執行中的公用程式複本數目。

參考資料