2011-03-31 58 views
1

我正在用JMeter在SQL Server 2008上執行壓力測試。SQL Server 2008:合理的壓力測試方案

我希望改進一個存儲過程,每秒處理20個請求。

該過程需要一個xml參數並返回一個xml結果。

我應該只使用一個參數值還是測試多個場景?

我主要懷疑有:程序執行計劃的

  1. 重新編譯(這可能會在過程減慢)
  2. 提取從磁盤的數據(不是所有需要的數據可以在主存儲器中保持)

回答

3

在SQL Server中設計一個真實的壓力測試/負載測試是一門藝術。

有許多因素可能影響性能:

  • 硬件:你需要在你對你已經確定你的目標(每秒20個呼叫)在相同的硬件測試。這包括磁盤配置,冗餘,集羣......這並不總是可能的,因此您需要儘可能地使它儘可能接近,但是您的測試環境變得越不同,越不切實際的結果。這意味着,例如,如果使用2個CPU而不是4個,則不能相應地調整參數。

  • 數據加載:根據您需要測試的記錄數量,最好在表格中預計最大行數的30%-40%。

  • 數據和指數分佈:這是一個常見的錯誤與預設完全隨機數據加載的服務器。 兩者都是錯誤的。價值的分配需要現實。例如,婚姻狀況的分佈在所有可能的值中都不相同,因此您需要設計數據生成來包含這一點。

  • 索引碎片:這是一個棘手的問題。通常情況下,指數是在一夜之間重建的,但在一天的過程中,指數會變得分散,因此在這段時間內表現可能會非常不同。

  • 併發負載:服務器可以爲您提供每秒20個請求,如果您正在爲數據庫的唯一呼叫,但只要你開始做其他調用,這一切散花。該負載需要包括其他相關的系統的部分。

  • 操作負載:如果請求全都相同,每秒發出20個呼叫絕對沒有意義。您需要使用數據生成技術來使請求不是純粹隨機的。

如果您使用的是C#,我已經完成了此工具,但可能會幫助您創建realistic random data

+0

非常好的建議,謝謝。我強調生產,因此,它是一樣的。而且,沒有改進的存儲過程與給我真實數據的測試並行工作。我唯一缺少的是*操作負荷*,我現在正在改進。 – Tim 2011-03-31 09:22:45