當前位置:首頁 » 數據倉庫 » 資料庫性能測試報告
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

資料庫性能測試報告

發布時間: 2022-05-23 00:17:37

『壹』 如何做好性能測試

你好,首先很欣賞你的這種態度。我在TestBird 招聘新人的時候,也有很多小朋友覺得自己有多了解工具運用,有多熟練步驟過程,自我感覺很不錯。
其實,我卻想說,性能測試的重點不在性能測試工具的學習上。
當然,你也通過分析系統的壓力點、LR錄制腳本,設置用戶,做壓力,分析結果,整理測試報告。完成了性能測試的整個過程。那麼我說這個性能測試報告是有效的,但它不一定是有用的。
為什麼呢?因為在性能測試報告中,在你所在的環境中,你是測出了這樣的效果。並未摻假,全部真實的記錄。
為什麼說它不一定是有用的,你了解系統架構么?知道資料庫、中間件、前端程序的運行方式和處理機制么?了解網路協議么?了解操作系統么?熟悉開發系統的語言么,如java JVM的內在機理知道么?這些都是系統運行的一部分,都在影響著系統的性能。如果不了解這些,你如何做出有價值的有參考意義的性能測試。
所以,學會這些性能測試工具很好,但是這僅僅是第一步。性能結果只是一些數據而已,知道你在做什麼,為什麼要做這些,做完後能給出有價值的東西,才是後面要慢慢修煉的。

『貳』 誰知道如何:使用 Microsoft Excel 創建負載測試性能報告

負載測試報告分為兩種:運行比較 這將創建使用表和條形運行,比較兩個負載測試結果的數據。報表集。趨勢 在兩個或多個可以生成趨勢分析負載測試結果。其結果以折線圖顯示,但可從數據透視表獲得數據。要求Visual Studio 旗艦版提示也可以通過從摘要視圖、關系圖視圖和表視圖中復制和粘貼數據來手動創建 Microsoft Word 報告。有關更多信息,請參見 如何:使用 Microsoft Word 手動創建負載測試性能報告.這兩種報告都可用於與利益干係人共享性能數據,傳達系統的整體性能和運行狀況是變好還是變差。報告定義存儲在負載測試資料庫中。保存報告後,報告定義保存在資料庫中,以後可以重用。此外,可將 Excel 工作簿與利益干係人共享 ,以便利益干係人不必連接到資料庫就可以查看報告。說明可以共享 Excel 工作簿;但是,只有計算機上已安裝 Visual Studio 旗艦版的用戶能夠修改任意電子表格。其他用戶不會看到在 Office 功能區的 負載測試報告 選項,但是,它們能夠查看工作簿。警告最終 的Visual Studio 2012 與 Microsoft Office 2007 兼容。必須升級到 Microsoft Office 2010。在升級到 Microsoft Office 2010 之後中,Excel 負載測試插件可能不會正確載入。若要更正此問題,在 Microsoft Excel 2010 中,執行以下步驟:在Office 功能區,選擇 文件。選擇選項 然後選擇 外接程序。在下拉列表中 管理下,選擇 COM 載入項,然後選擇 執行。為負載測試報告 Addin選中復選框。下圖是顯示處理(更新購物車)速度的下降和(% 處理器)計數器的退化之間的相關性的報告示例。這指向應用程序代碼而不是資料庫或網路中的潛在問題,並且適於使用 ASP.NET 探查器進行診斷。生成Excel 報告的方法有兩種:一種是在負載測試分析器中使用工具欄中的「創建 Excel 報告」按鈕,另一種是在 Excel 中使用 Office 功能區的「負載測試」選項卡中的「負載測試報告」選項。說明如果向負載測試中添加註釋,注釋將出現在 Excel 報告中。有關更多信息,請參見如何:使用負載測試分析器在分析完成的負載測試時添加註釋和如何:使用負載測試分析器向運行負載測試中添加註釋。使用Excel 生成負載測試比較報告在生成報告之前,必須先運行負載測試。有關更多信息,請參見運行負載測試。可採用兩種方法創建 Excel 負載測試報告:在完成負載測試後,在 負載測試結果 頁,在工具欄上選擇 創建Excel 報告 按鈕。說明如果「創建 Excel 報告」按鈕在「Web 性能測試結果查看器」工具欄中處於禁用狀態,可能需要運行一次 Microsoft Excel 才能啟用該按鈕。安裝Visual Studio 旗艦版時,Visual Studio 旗艦版負載測試外接程序將會復制到您的計算機以便用於 Microsoft Excel;但是必須運行 Microsoft Excel 才能完成該外接程序的安裝過程。Microsoft Excel 將打開「生成負載測試報告」向導。-或 -打開Microsoft Excel,選擇 Office 功能區的選項 負載測試 然後選擇 負載測試報告。此時將顯示「生成負載測試報告」向導。在選擇包含負載測試的資料庫 頁上,在 伺服器名稱下,鍵入包含的伺服器名稱負載測試結果。在的資料庫名稱 下拉列表中,選擇包含的資料庫負載測試結果。在要如何生成您的報告 頁上,確認 創建報告 上選擇並選擇 下一個。在您希望生成哪種類型的報告 頁上,確認 運行比較 上選擇並選擇 下一個。在「輸入負載測試報告詳細信息」頁上,在「報告名稱」中鍵入報告的名稱。選擇負載測試要生成報表並選擇 下一個。在為報告選擇運行 頁上,在 選擇一個或多個要添加到報告中的運行下,選擇負載測試結果要在報告中比較並選擇 下一個的兩個。說明只能針對兩個負載測試結果生成一個比較報告。如果選擇一個負載測試結果或兩個以上負載測試結果,則將顯示一條警告消息。在「為報告選擇計數器」頁上的「選擇一個或多個要添加到報告中的計數器」下面,有一個可用於自定義報告的可擴展計數器列表。默認情況下,已為報告選擇以下計數器:LoadTest:Page - Avg.(負載測試:頁 - 平均)頁面時間LoadTest:Request - Requests/Sec(負載測試:請求 - 每秒請求數)LoadTest:Scenario - User Load(負載測試:方案 - 用戶負載)LoadTest:Test - Avg.(負載測試:測試 - 平均)Test Time(測試時間)LoadTest:Test - Total Tests(負載測試:測試 - 總測試次數)LoadTest:Transaction - Avg.(負載測試:事務 - 平均)Response Time(響應時間)LoadTest:Transaction - Total Transactions(負載測試:事務 - 事務總數)Memory - Available MBytes(內存 - 可用的兆位元組數)Network Interface - Bytes Total/sec(網路介面 - 每秒總位元組數)PhysicalDisk - %Idle Time(物理磁碟 - 空閑時間百分比)Process - %Processor Time(進程 - 處理器時間百分比)Processor %Processor Time(處理器 - 處理器時間百分比)選擇要從報告中兩個所選的測試運行比較並選擇 完成的計數器。將生成帶有以下電子表格選項卡的 Excel 工作簿:目錄 - 顯示負載測試報告名稱,並提供一個目錄,其中包含指向報告的各選項卡的鏈接。運行- 提供有關正在比較報告中的哪兩個運行的詳細信息。測試比較 - 提供有關正在比較的兩個運行之間的性能衰退和改進的條形圖詳細信息。頁面比較 - 提供測試運行中的各個頁面上兩個運行之間的條形圖和百分比性能比較數據。計算機比較 - 提供基於所使用的計算機的兩個運行之間的比較數據。錯誤比較 - 比較在兩個運行中所遇到的錯誤類型以及出現的次數。提示為了獲得更好的報告,支持更多報告的負載測試和 Web 性能測試提供了幾個屬性。頁面請求具有兩個呈現在報告中的屬性:「目標」和「報告名稱」。將針對目標來報告頁面響應時間,並且在報告中將使用報告名稱而不是 URL。在負載測試「運行設置」的「管理計數器集」下面,「計算機標記」屬性呈現在報告計算機名稱中。若要在報告中描述特定計算機的角色,這非常有用。使用Excel 生成負載測試趨勢報告在生成報告之前,必須運行負載測試。有關更多信息,請參見運行負載測試。可採用兩種方法創建 Excel 負載測試報告:在完成負載測試後,在 負載測試結果 頁,在工具欄上選擇 創建Excel 報告 按鈕。說明如果「創建 Excel 報告」按鈕在「Web 性能測試結果查看器」工具欄中處於禁用狀態,可能需要運行一次 Microsoft Excel 才能啟用該按鈕。安裝Visual Studio 旗艦版時,Visual Studio 旗艦版負載測試外接程序將會復制到您的計算機以便用於 Microsoft Excel;但是必須運行 Microsoft Excel 才能完成該外接程序的安裝過程。Microsoft Excel 將打開「生成負載測試報告」向導。-或 -打開Microsoft Excel,選擇 Office 功能區的選項 負載測試 然後選擇 負載測試報告。此時將顯示「生成負載測試報告」向導。在選擇包含負載測試的資料庫 頁上,在 伺服器名稱下,鍵入包含的伺服器名稱負載測試結果。在的資料庫名稱 下拉列表中,選擇包含的資料庫負載測試結果。在要如何生成您的報告 頁上,確認 創建報告 上選擇並選擇 下一個。在您希望生成哪種類型的報告 頁上,確認 趨勢 上選擇並選擇 下一個。在「輸入負載測試報告詳細信息」頁上,在「報告名稱」中鍵入報告的名稱。選擇負載測試要生成報表並選擇 下一個。在為報告選擇運行 頁上,在 選擇一個或多個要添加到報告中的運行下,選擇負載測試要在報告中比較並選擇 下一個的結果。在「為報告選擇計數器」頁上的「選擇一個或多個要添加到報告中的計數器」下面,有一個可用於自定義報告的可擴展計數器列表。默認情況下,已為報告選擇以下計數器:LoadTest:Page - Avg.(負載測試:頁 - 平均)頁面時間LoadTest:Request - Requests/Sec(負載測試:請求 - 每秒請求數)LoadTest:Scenario - User Load(負載測試:方案 - 用戶負載)LoadTest:Test - Avg.(負載測試:測試 - 平均)Test Time(測試時間)LoadTest:Test - Total Tests(負載測試:測試 - 總測試次數)LoadTest:Transaction - Avg.(負載測試:事務 - 平均)Response Time(響應時間)LoadTest:Transaction - Total Transactions(負載測試:事務 - 事務總數)LoadTest:Transaction - Transactions/Sec(負載測試:事務 - 每秒事務數)Memory - Available MBytes(內存 - 可用的兆位元組數)Network Interface - Bytes Total/sec(網路介面 - 每秒總位元組數)PhysicalDisk - %Idle Time(物理磁碟 - 空閑時間百分比)Process - %Processor Time(進程 - 處理器時間百分比)Processor %Processor Time(處理器 - 處理器時間百分比)從報告中所選的測試運行中,選擇要比較來進行趨勢分析並選擇 完成的計數器。將生成帶有一個目錄的報告,該目錄包含指向報告中生成的各個 Excel 工作簿選項卡的鏈接。這些鏈接基於為趨勢報告選擇的計數器。例如,如果在步驟 7 中將默認計數器保留為選中狀態,則報告所生成的數據將針對步驟 7 中列出的每個計數器,呈現在 Excel 中的各個選項卡上。針對每個計數器生成的數據呈現在趨勢圖中。

『叄』 如何提供oracle rac 檢測報告

1 測試目的 測試目的, 在於驗證多節點 RAC 的可用性、 穩定性,以及多節點 RAC 相對於普通的 Oracle 環境性能的提升情況 2 2.1 2.2 術語、定義和縮略語 術語、定義 無。 縮略語 本文件應用了以下縮略語: RAC Real Application Cluster Caps Call per Second Oracle 公司資料庫集群軟體 智能網名詞,指每秒處理的呼叫數 3 測試環境描述 本次測試,由 4 台 IBM 小型機(2 台 B80、2 台 P630)搭建了一個內部網路,組成 4 節 點的 RAC 環境, 網路內的各個節點通過 10/100M 網卡相互訪問, 包括 RAC 節點間的 heart beat 信息;RAC 資料庫以裸設備方式建在共享磁陣上,各節點通過光纖交換機訪問磁陣;呼叫測 試時,各節點上的智能網應用,則通過光纖交換機與模擬呼叫儀進行通訊。 硬體信息: 小型機:IBM B80 2 台,每台 2 顆 450M 主頻的 POWER3 CPU 和1G 內存 小型機:IBM P630 2 台,每台 2 顆 1.2G 主頻的 POWER4 CPU;2G 內存 存儲: StorageTek 的 D240 磁陣, 塊 72G 的硬碟, 6 其中 4 塊做 RAID 0+1, 塊為 HOT SPARE 2 光纖交換機:2 台,型號為 IBM 3534-F08 模擬呼叫儀:INET、MGTS 軟體信息: 操作系統:IBM AIX 5.2 補丁級別 02 雙機軟體:IBM HACMP V5.1 補丁級別 04 RAC 版本:Oracle 9.2.0.5.0 智能網平台版本:V3.50.05.06_0_2004/08/23 業務版本:[email protected] 第 2 頁 共 18 頁 Oracle RAC 測試報告 4 測試過程描述 本次 RAC 的測試,主要是分成三個階段,第一是 RAC 的性能測試,第二個階段,則 主要是針對在性能測試中發現問題的處理,第三個階段是 RAC 的功能測試、穩定性測試。 4.1 性能測試 由於受到模擬呼叫儀處理能力的限制,在性能測試過程中,4 節點的 RAC 中並沒有所 有節點都同時使用的情況,大部分情況是啟動其中的 2 個 instance,相當於兩節點的 RAC。測試前提: 1. 智能網應用與 Oracle 的 instance 同時在同一台主機上運行 2. 智能網的資料庫連接為指定連到本機的 instance,沒有做 load balance 和 failover 3. 測試時業務表 s1cardinf 的記錄數為 32 萬 4. 雙節點時測試時,每個節點上的應用分別處理不同的號段,無交叉現象 4.1.1 兩台 B80 組成的單、雙節點 RAC 性能測試 測試目的: 測試在 B80 上,兩節點的RAC 相對於單機方式的性能提高情況 測試步驟: 1. 啟動一台機器上的 oracle instance 和智能網應用 2. 根據應用的處理情況逐步提供呼叫儀的呼叫數,直到應用無法及時處理 3. 同時啟動兩台機器上的 oracle instance 和智能網應用 4. 根據應用的處理情況逐步提供呼叫儀的呼叫數,直到應用無法及時處理 測試結果: 單實例方式下,應用的最大呼叫處理能力可達到140caps,此時 CPU 達到 100%, 而應用出現消息積壓的情況; 雙節點方式下, 每個節點應用的最大處理能力為 140caps。 4.1.2 兩台 P630 組成的單、雙節點 RAC 性能測試 測試目的: 測試在 P630 上,兩節點的 RAC 相對於單機方式的性能提高情況測試步驟: 1. 動一台機器上的 oracle instance 和智能網應用 2. 根據應用的處理情況逐步提供呼叫儀的呼叫數,直到應用無法及時處理 3. 同時啟動兩台機器上的 oracle instance 和智能網應用 4. 根據應用的處理情況逐步提供呼叫儀的呼叫數,直到應用無法及時處理 測試結果: 單實例方式下,應用的最大呼叫處理能力可達到 210caps,此時 CPU 達到 100%, 而應用出現消息積壓的情況; 雙節點方式下, 每個節點應用的最大處理能力為 210caps。 4.1.3 兩台 B80 和一台 P630 組成的三節點 RAC性能測試 測試目的: 測試三節點的 RAC 的性能情況 測試步驟: 1. 同時啟動兩台 B90 和一台 P630 上的 oracle instance 和智能網應用 2. 根據應用的處理情況逐步提供呼叫儀的呼叫數,直到應用無法及時處理 第 3 頁 共 18 頁 Oracle RAC 測試報告 測試結果: 最終的處理結果是兩台 B80 上的最大呼叫能力為 140caps,當時 CPU 為 100%,出 現消息積壓情況;而受制於呼叫儀的處理能力,P630 上達到 160caps,而 cpu 佔有率為 81%,消息處理正常。 4.2 功能測試 4.2.1 RMAN 備份和恢復測試 測試目的: 測試 RMAN 的備份 測試步驟: 1. 使用 rman,執行語句,進行整個資料庫的備份 2. 使用 rman,執行語句,備份歸檔日誌 測試結果: 按照預期的結果,生成了備份文件。 測試目的: 測試 RMAN 的恢復 測試步驟: 1. 使用 dd 破壞控制文件的設備/dev/rrcontrol1,使用 RMAN 恢復 2. 刪除表空間 zxin_data,利用之前的備份,使用 RMAN 恢復 測試結果: 對於刪除 control file 的測試, 恢復失敗, 因為使用的是 rman nocatalog 進行的備份, 在 nocatalog 方式下,備份信息是存放在 control file 中的,現在 control file 損壞,無法通過 rman 進行恢復; oracle 建議在使用 nocatalog 方式備份時需將 control file 和 spfile 單獨使用操 作系統命令進行備份。後者的表空間恢復正常。 4.2.2 exp 備份和 imp 恢復測試 測試目的: 驗證 exp/imp 進行資料庫的備份和恢復 測試步驟: 1. 使用 exp 進行整庫備份 2. 刪除用戶 zxin,使用 imp 恢復 3. 刪除表空間 zxin_data,使用 imp 恢復 測試結果: exp 備份正常,恢復測試同樣沒有問題。 4.2.3 正常呼叫時,smap 界面對數據的大批量查詢和修改。 測試前提: 節點 zxin1 和 zxin2 上正常處理呼叫,呼叫量均為 100caps 測試步驟: 1. 查詢某卡號段的信息 2. 另外同時通過 sqlplus,按照卡號段查詢 s1cardinf 信息 測試結果: 第 4 頁 共 18 頁 Oracle RAC 測試報告 由於只使用了一個 smap 界面程序操作,因此看不出影響。 4.2.4 正常呼叫時,後台 cron 任務對數據的大批量查詢和修改。 測試前提: 節點 zxin1 和 zxin2 上正常處理呼叫,呼叫量均為 100caps 測試步驟: 1. 利用 shell 通過 sqlplus,按照卡號段循環查詢 s1cardinf 信息 2. 通過 sqlplus 修改 s1cardinf 信息,按照卡號段循環 update s1cardinf 信息 測試結果: 後台對同一個表的連續的大數據查詢、修改,對呼叫影響很大,查詢時 cpu 佔有率 上升了 5%,如有多個同時運行的話,消息處理積壓的現象將會非常明顯。 4.2.5 大事務測試 測試目的: 測試在異常情況下數據的一致性、完整性 測試步驟: 在節點 zxin1 和 zxin2 上同時運行同一事務批量修改數據,數據有交叉 測試結果: 多次測試,數據更新正常。 測試步驟: 1. 在節點 zxin1 和 zxin2 上同時運行同一事務,在 zxin2 回滾事務 2. 在節點 zxin1 和 zxin2 上同時運行同一事務,在 zxin2 kill 該 session 測試結果: 測試結果正常,未見數據異常。 測試步驟: 在節點 zxin1 和 zxin2 上同時運行模擬程序,通過 sqlplus 連到資料庫,批量更新數 據,然後退出重連;此過程循環一晚 測試結果: 根據處理的日誌看,操作正常。 4.2.6 load balance 測試 測試目的: 驗證 oracle 的負載均衡功能 測試前提: 1. 在 zxin1、zxin2 上啟動實例 2. 修改 zxin2 上 tnsnames.ora,啟用 load balance 測試步驟: 1. 在 zxin2 上運行 zxstart,建立 SDF 連接 2. 利用測試程序,每隔幾秒通過 sqlplus 建立 10 個連接 測試結果: zxstart 多次測試的結果,12 個 SDF 連接基本是平均分布,有時則是 5 個在 zxin1 第 5 頁 共 18 頁 Oracle RAC 測試報告 上,7 個在 zxin2 上;而手工建立的 sqlplus 連接,則是完全平均分布的。 4.2.7 connetc-time failover 的測試 測試目的: 驗證在客戶端連接時的 failover 功能 測試前提: 1. 啟動 zxin1、zxin2 上的實例 2. 關閉 zxin2 的 listener,zxin1 機器上的 listener 正常 3. 實例 zxin2 上的 tnsnames.ora 中配置 Address List= (ADDRESS = (PROTOCOL = TCP)(HOST = zxin2)(PORT = 1521)) (ADDRESS = (PROTOCOL = TCP)(HOST = zxin1)(PORT = 1521)) 測試步驟: 1. 在 zxin2 上啟動 zxstart 2. 利用測試程序,在 zxin2 上每隔幾秒通過 sqlplus 建立 10 個連接 測試結果: 兩種方式下,資料庫連接都在 zxin1 實例上 4.2.8 TAF 測試 測試目的: 驗證 Transparent Application Failover 功能及切換時間 測試前提: 1. 實例 zxin1、zxin2 正常運行,listener 正常 2. 實例 zxin2 啟用 Failover 功能 3. 主機 zxin1、zxin2 上的時間一致 測試步驟: 1. Zxin2 上運行 zxstart,啟動平台程序 2. 啟動模擬程序,不停通過 sqlplus 連接 zxin2,記錄無法連接 zxin2 實例的時間 3. 通過正常、異常關閉 zxin2 實例,異常關閉 zxin2 主機進行測試 4. 在 zxin1 上查看 v$session 中各 SDF 連接及 logon_time 測試結果: zxin2 實例在正常、異常關閉或者 zxin2 主機被異常關閉之後,所有連到實例 zxin2 的資料庫連接自動切換到了 zxin1,但是資料庫連接的切換時間每次都不太一樣,從 8 秒到 59 秒不等,維持在 1 分鍾之內。 測試目的: 測試正常呼叫情況下 TAF 的切換時間 測試前提: 1. 實例 zxin1、zxin2 正常運行,listener 正常 2. 實例 zxin2 啟用 Failover 功能 3. 主機 zxin1、zxin2 上的時間一致 測試步驟: 1. zxin2 上運行 zxstart,啟動平台程序,有 100caps 的呼叫處理 2. 啟動模擬程序,不停通過 sqlplus 連接 zxin2,記錄無法連接 zxin2 實例的時間 3. 通過正常、異常關閉 zxin2 實例,異常關閉 zxin2 主機進行測試 第 6 頁 共 18 頁 Oracle RAC 測試報告 4. 在 zxin1 上查看 v$session 中各 SDF 連接及 logon_time 測試結果: zxin2 實例在正常、異常關閉或者 zxin2 主機被異常關閉之後,所有連到實例 zxin2 的資料庫連接自動切換到了 zxin1,而且切換時間非常快,很多情況下都在 1-2 秒左右,沒 有超過 10 秒的,可能跟呼叫有關,在有操作的情況下,zxin1 實例能夠更快的獲取 zxin2 實 例 down 的情況,從而更快的切換。 4.3 穩定性測試 4.3.1 模擬呼叫,保持 24 小時 測試目的: 測試 RAC在長時間的呼叫處理下是否正常 測試步驟: 1. 在節點 zxin1、zxin2 上啟動資料庫 2. 在節點 zxin1、zxin2 上分別啟動平台程序,接受呼叫 3. 模擬呼叫儀接入,模擬 100caps 的呼叫量,連續呼叫 24 小時 測試結果: 系統運行正常,資料庫訪問正常,業務處理正常。 4.3.2 網線異常對實例的影響 測試目的: 測試公網 ip 異常對 RAC 的影響 測試步驟: 1. 實例 zxin1、zxin2 啟動,在 zxin2 上啟動平台程序 2. 使用 ifconfig en1 192.1.1.102 delete 刪除 public ip 3. 拔掉 zxin2 上 public 網線 測試結果: zxin2 上建立的到資料庫實例 zxin2 的 SDF 連接,進行 failover,切換到 zxin1 上, 客戶端無法以 zx192_1_1_102 這個 connect string 連到實例 zxin2。待到重新加入 ip 或者插 上網線之後,恢復正常。 測試步驟: 測試私網 ip 異常對 RAC 的影響 測試步驟: 1. 實例 zxin1、zxin2 啟動,在 zxin2 上啟動平台程序 2. 使用 ifconfig en0 10.1.1.102 delete 刪除 private ip 3. 拔掉 zxin2 上用於 RAC 節點間通訊的 private 網線 測試結果: 無論是刪除 ip 還是拔掉網線,對於 Oracle 來說,效果一樣。以其中一次測試的過 程為例:大概在 11:03 拔掉網線,然後在 oracle 日誌顯示,在實例 zxin1、zxin2 分別在 11: 09 和 11:08:45 進行 Communication recofiguration,zxin1 等待 split-brain resolution;10 分 鍾之後,11:19 分,實例 zxin2 down 下來,zxin1 實例恢復正常。在多次測試的結果中,發 現在拔掉網線到實例進行 communication 重組之間、和實例等待 split-brain resolution 的過程 中,除了有一次能夠通過訪問 zxin1 而不能訪問 zxin2 外,其他幾次都無法通過 sqlplus 訪問 第 7 頁 共 18 頁 Oracle RAC 測試報告 zxin1、zxin2,而且這兩個階段的時間都固定為 5 分鍾跟 10 分鍾。 後來,發現第二個階段等待 split-brain 的時間跟資料庫中參數的設置有關,修改參 數_imr_splitbrain_res_wait 為 60 秒後, 等待時間由 10 分鍾縮短為 1 分鍾; 但是, comminucation 重組之前的超時判斷無法縮短,可能跟 tcp 有關,修改了 rto_high 等幾個參數設置後,時間 依然為 5 分鍾左右,沒有改變。

『肆』 資料庫性能優化基準測試的度量指標有哪些

當前業界常見的伺服器性能指標有:
TPC-C
TPC-E
TPC-H
SPECjbb2005
SPECjEnterprise2010
SPECint2006 及 SPECint_rate_2006
SPECfp2006 及 SPECfp_rate_2006
SAP SD 2-Tier
LINPACK
RPE2
一、TPC (Transaction Processing Performance Council) 即聯機交易處理性能協會, 成立於1988年的非盈利組織,各主要軟硬體供應商均參與,成立目標: 為業界提供可信的資料庫及交易處理基準測試結果,當前發 布主要基準測試為:
TPC-C : 資料庫在線查詢(OLTP)交易性能
TPC-E : 資料庫在線查詢(OLTP)交易性能
TPC-H : 商業智能 / 數據倉庫 / 在線分析(OLAP)交易性能
1.TPC-C測試內容:資料庫事務處理測試, 模擬一個批發商的訂單管理系統。實際衡量伺服器及資料庫軟體處理在線查詢交易處理(OLTP)的性能表現. 正規 TPC-C 測試結果發布必須提供 tpmC值, 即每分鍾完成多少筆 TPC-C 資料庫交易 (TPC-C Transaction Per Minute), 同時要提供性價比$/tpmC。如果把 TPC-C 測試結果寫成為 tpm, TPM, TPMC, TPCC 均不屬正規。
2.TPC-E測試內容:資料庫事務處理測試,模擬一個證券交易系統。與TPC-C一樣,實際衡量伺服器及資料庫軟體處理在線查詢交易處理(OLTP)的性能表現。正規TPC-E測試結果必須提供tpsE值,即每秒鍾完成多少筆TPC-E資料庫交易(transaction per second),同時提供$/tpsE。測試結果寫成其他形式均不屬正規。
對比:TPC-E測試較TPC-C測試,在測試模型搭建上增加了應用伺服器層,同時增加了資料庫結構的復雜性,測試成本相對降低。截止目前,TPC-E的測試結果僅公布有50種左右,且測試環境均為PC伺服器和windows操作系統,並無power伺服器的測試結果。除此之外,TPC官方組織並未聲明TPC-E取代TPC-C,所以,說TPC-E取代TPC-C並沒有根據。

『伍』 mysql資料庫性能測試

我理解的是你希望了解mysql性能測試的方法:
其實常用的一般:
選取最適用的欄位屬性
MySQL可以很好的支持大數據量的存取,但是一般說來,資料庫中的表越小,在它上面執行的查詢也就會越快。因此,在創建表的時候,為了獲得更好的性能,我們可以將表中欄位的寬度設得盡可能小。例如,在定義郵政編碼這個欄位時,如果將其設置為CHAR(255),顯然給資料庫增加了不必要的空間,甚至使用VARCHAR這種類型也是多餘的,因為CHAR(6)就可以很好的完成任務了。同樣的,如果可以的話,我們應該使用MEDIUMINT而不是BIGIN來定義整型欄位。

另外一個提高效率的方法是在可能的情況下,應該盡量把欄位設置為NOT NULL,這樣在將來執行查詢的時候,資料庫不用去比較NULL值。

對於某些文本欄位,例如「省份」或者「性別」,我們可以將它們定義為ENUM類型。因為在MySQL中,ENUM類型被當作數值型數據來處理,而數值型數據被處理起來的速度要比文本類型快得多。這樣,我們又可以提高資料庫的性能。

2、使用連接(JOIN)來代替子查詢(Sub-Queries)

MySQL從4.1開始支持SQL的子查詢。這個技術可以使用SELECT語句來創建一個單列的查詢結果,然後把這個結果作為過濾條件用在另一個查詢中。例如,我們要將客戶基本信息表中沒有任何訂單的客戶刪除掉,就可以利用子查詢先從銷售信息表中將所有發出訂單的客戶ID取出來,然後將結果傳遞給主查詢,如下所示:

DELETE FROM customerinfo WHERE CustomerID NOT in (SELECT CustomerID FROM salesinfo )

使用子查詢可以一次性的完成很多邏輯上需要多個步驟才能完成的SQL操作,同時也可以避免事務或者表鎖死,並且寫起來也很容易。但是,有些情況下,子查詢可以被更有效率的連接(JOIN).. 替代。例如,假設我們要將所有沒有訂單記錄的用戶取出來,可以用下面這個查詢完成:

SELECT * FROM customerinfo WHERE CustomerID NOT in (SELECT CustomerID FROM salesinfo )

如果使用連接(JOIN).. 來完成這個查詢工作,速度將會快很多。尤其是當salesinfo表中對CustomerID建有索引的話,性能將會更好,查詢如下:

SELECT * FROM customerinfo LEFT JOIN salesinfoON customerinfo.CustomerID=salesinfo. CustomerID WHERE salesinfo.CustomerID IS NULL

連接(JOIN).. 之所以更有效率一些,是因為 MySQL不需要在內存中創建臨時表來完成這個邏輯上的需要兩個步驟的查詢工作。

3、使用聯合(UNION)來代替手動創建的臨時表

MySQL 從 4.0 的版本開始支持 UNION 查詢,它可以把需要使用臨時表的兩條或更多的 SELECT 查詢合並的一個查詢中。在客戶端的查詢會話結束的時候,臨時表會被自動刪除,從而保證資料庫整齊、高效。使用 UNION 來創建查詢的時候,我們只需要用 UNION作為關鍵字把多個 SELECT 語句連接起來就可以了,要注意的是所有 SELECT 語句中的欄位數目要想同。下面的例子就演示了一個使用 UNION的查詢。

SELECT Name, Phone FROM client UNION SELECT Name, BirthDate FROM author
UNION
SELECT Name, Supplier FROM proct

4、事務

盡管我們可以使用子查詢(Sub-Queries)、連接(JOIN)和聯合(UNION)來創建各種各樣的查詢,但不是所有的資料庫操作都可以只用一條或少數幾條SQL語句就可以完成的。更多的時候是需要用到一系列的語句來完成某種工作。但是在這種情況下,當這個語句塊中的某一條語句運行出錯的時候,整個語句塊的操作就會變得不確定起來。設想一下,要把某個數據同時插入兩個相關聯的表中,可能會出現這樣的情況:第一個表中成功更新後,資料庫突然出現意外狀況,造成第二個表中的操作沒有完成,這樣,就會造成數據的不完整,甚至會破壞資料庫中的數據。要避免這種情況,就應該使用事務,它的作用是:要麼語句塊中每條語句都操作成功,要麼都失敗。換句話說,就是可以保持資料庫中數據的一致性和完整性。事物以BEGIN 關鍵字開始,COMMIT關鍵字結束。在這之間的一條SQL操作失敗,那麼,ROLLBACK命令就可以把資料庫恢復到BEGIN開始之前的狀態。

BEGIN;

INSERT INTO salesinfo SET CustomerID=14;

UPDATE inventory SET Quantity=11

WHERE item='book';

COMMIT;

事務的另一個重要作用是當多個用戶同時使用相同的數據源時,它可以利用鎖定資料庫的方法來為用戶提供一種安全的訪問方式,這樣可以保證用戶的操作不被其它的用戶所干擾。

5、鎖定表

盡管事務是維護資料庫完整性的一個非常好的方法,但卻因為它的獨占性,有時會影響資料庫的性能,尤其是在很大的應用系統中。由於在事務執行的過程中,資料庫將會被鎖定,因此其它的用戶請求只能暫時等待直到該事務結束。如果一個資料庫系統只有少數幾個用戶

來使用,事務造成的影響不會成為一個太大的問題;但假設有成千上萬的用戶同時訪問一個資料庫系統,例如訪問一個電子商務網站,就會產生比較嚴重的響應延遲。

其實,有些情況下我們可以通過鎖定表的方法來獲得更好的性能。下面的例子就用鎖定表的方法來完成前面一個例子中事務的功能。

LOCK TABLE inventory WRITE
SELECT Quantity FROM inventory
WHEREItem='book';
...

UPDATE inventory SET Quantity=11
WHEREItem='book';
UNLOCK TABLES

這里,我們用一個 SELECT 語句取出初始數據,通過一些計算,用 UPDATE 語句將新值更新到表中。包含有 WRITE 關鍵字的 LOCK TABLE 語句可以保證在 UNLOCK TABLES 命令被執行之前,不會有其它的訪問來對 inventory 進行插入、更新或者刪除的操作。

6、使用外鍵

鎖定表的方法可以維護數據的完整性,但是它卻不能保證數據的關聯性。這個時候我們就可以使用外鍵。例如,外鍵可以保證每一條銷售記錄都指向某一個存在的客戶。在這里,外鍵可以把customerinfo 表中的CustomerID映射到salesinfo表中CustomerID,任何一條沒有合法CustomerID的記錄都不會被更新或插入到salesinfo中。

CREATE TABLE customerinfo
(
CustomerID INT NOT NULL ,
PRIMARY KEY ( CustomerID )
) TYPE = INNODB;
CREATE TABLE salesinfo
(
SalesID INT NOT NULL,
CustomerID INT NOT NULL,
PRIMARY KEY(CustomerID, SalesID),
FOREIGN KEY (CustomerID) REFERENCES customerinfo
(CustomerID) ON DELETECASCADE
) TYPE = INNODB;

注意例子中的參數「ON DELETE CASCADE」。該參數保證當 customerinfo 表中的一條客戶記錄被刪除的時候,salesinfo 表中所有與該客戶相關的記錄也會被自動刪除。如果要在 MySQL 中使用外鍵,一定要記住在創建表的時候將表的類型定義為事務安全表 InnoDB類型。該類型不是 MySQL 表的默認類型。定義的方法是在 CREATE TABLE 語句中加上 TYPE=INNODB。如例中所示。

7、使用索引

索引是提高資料庫性能的常用方法,它可以令資料庫伺服器以比沒有索引快得多的速度檢索特定的行,尤其是在查詢語句當中包含有MAX(), MIN()和ORDERBY這些命令的時候,性能提高更為明顯。那該對哪些欄位建立索引呢?一般說來,索引應建立在那些將用於JOIN, WHERE判斷和ORDER BY排序的欄位上。盡量不要對資料庫中某個含有大量重復的值的欄位建立索引。對於一個ENUM類型的欄位來說,出現大量重復值是很有可能的情況,例如customerinfo中的「province」.. 欄位,在這樣的欄位上建立索引將不會有什麼幫助;相反,還有可能降低資料庫的性能。我們在創建表的時候可以同時創建合適的索引,也可以使用ALTER TABLE或CREATE INDEX在以後創建索引。此外,MySQL

從版本3.23.23開始支持全文索引和搜索。全文索引在MySQL 中是一個FULLTEXT類型索引,但僅能用於MyISAM 類型的表。對於一個大的資料庫,將數據裝載到一個沒有FULLTEXT索引的表中,然後再使用ALTER TABLE或CREATE INDEX創建索引,將是非常快的。但如果將數據裝載到一個已經有FULLTEXT索引的表中,執行過程將會非常慢。

8、優化的查詢語句

絕大多數情況下,使用索引可以提高查詢的速度,但如果SQL語句使用不恰當的話,索引將無法發揮它應有的作用。下面是應該注意的幾個方面。首先,最好是在相同類型的欄位間進行比較的操作。在MySQL 3.23版之前,這甚至是一個必須的條件。例如不能將一個建有索引的INT欄位和BIGINT欄位進行比較;但是作為特殊的情況,在CHAR類型的欄位和VARCHAR類型欄位的欄位大小相同的時候,可以將它們進行比較。其次,在建有索引的欄位上盡量不要使用函數進行操作。

例如,在一個DATE類型的欄位上使用YEAE()函數時,將會使索引不能發揮應有的作用。所以,下面的兩個查詢雖然返回的結果一樣,但後者要比前者快得多。

SELECT * FROM order WHERE YEAR(OrderDate)<2001;
SELECT * FROM order WHERE OrderDate<"2001-01-01";

同樣的情形也會發生在對數值型欄位進行計算的時候:

SELECT * FROM inventory WHERE Amount/7<24;
SELECT * FROM inventory WHERE Amount<24*7;

上面的兩個查詢也是返回相同的結果,但後面的查詢將比前面的一個快很多。第三,在搜索字元型欄位時,我們有時會使用 LIKE 關鍵字和通配符,這種做法雖然簡單,但卻也是以犧牲系統性能為代價的。例如下面的查詢將會比較表中的每一條記錄。

SELECT * FROM books
WHERE name like "MySQL%"

但是如果換用下面的查詢,返回的結果一樣,但速度就要快上很多:

SELECT * FROM books
WHERE name>="MySQL"and name<"MySQM"

最後,應該注意避免在查詢中讓MySQL進行自動類型轉換,因為轉換過程也會使索引變得不起作用。

『陸』 騰訊雲伺服器IO性能測試報告

測試方法:
1、 dd bs=64k count=4k if=/dev/zero of=test
沒有加任何參數,dd默認的方式不包括「同步(sync)」命令。也就是說,dd命令完成前並沒有讓系統真正把文件寫到磁碟上。所以以上命令只是單純地把這128MB的數據讀到內存緩沖當中(寫緩存[write cache])。所以你得到的將是一個超級快的速度。因為其實dd給你的只是讀取速度,直到dd完成後系統才開始真正往磁碟上寫數據,但這個速度你是看不到了。所以如果這個速度很快,沒有什麼作用。

2、dd bs=64k count=4k if=/dev/zero of=test oflag=dsync
加入這個參數後,dd在執行時每次都會進行同步寫入操作。也就是說,這條命令每次讀取64k後就要先把這64k寫入磁碟,然後再讀取下面這64k,一共重復128次。這可能是最慢的一種方式了,因為基本上沒有用到寫緩存(write cache)。這種方法是最嚴格的,可以模擬資料庫的插入操作,所以很慢,也是用來測試vps硬碟性能標準的一條標桿,一般來說測試結果,如果超過10M,對正常建站就無影響。超過50M,就是非常給力狀態。

騰訊雲
[root@VM_37_104_centos ~]# time dd if=/dev/zero of=test.dbf bs=8k count=300000
300000+0 records in
300000+0 records out
2457600000 bytes (2.5 GB) copied, 9.98703 s, 246 MB/s
real 0m10.027s
user 0m0.071s
sys 0m4.413s
[root@VM_37_104_centos ~]# time dd if=/dev/zero of=test bs=64k count=16k oflag=dsync
16384+0 records in
16384+0 records out
1073741824 bytes (1.1 GB) copied, 20.3013 s, 52.9 MB/s
real 0m20.308s
user 0m0.014s
sys 0m2.724s

天互數據 為你解答,希望能幫到你

『柒』 Speak WordCount性能測試報告怎麼書寫

給你看個範例:
測試環境: DELL 2.4G memory 512M RH9.0 MySQL 3.23.54測試使用的是mysql預設參數,用mysql提供的API用C編寫測試程序測試程序共啟動40個線程進行資料庫操作,查找、插入、修改、刪除各10個,每個線程獨立與Sql Server連接。資料庫結構,單表,表結構如下: toheader 100byte 主鍵 contactheader 100byte called 50byte cseq 100byte hashval int timestamp int 次鍵

『捌』 mysql 性能測試報告怎麼寫

給你看個範例:


測試環境:
DELL2.4Gmemory512M
RH9.0MySQL3.23.54
測試使用的是mysql預設參數,用mysql提供的API用C編寫測試程序
測試程序共啟動40個線程進行資料庫操作,查找、插入、修改、刪除各10個,每個線程獨立與SqlServer連接。
資料庫結構,單表,表結構如下:
toheader100byte主鍵
contactheader100byte
called50byte
cseq100byte
hashvalint
timestampint次鍵
對主次鍵分別建了索引。分別在5萬、10萬、50萬用戶環境做測試,結果如下:


查找100次

插入100次

修改100次

刪除100次

5萬

100-300ms

100-300ms

100-300ms

100-300ms

10萬

500ms-1s

500ms-1s

500ms-1s

500ms-1s

50萬

3s-5s

3s-5s

3s-5s

3s-5s

從此數據看性能是很不錯的,因為mysql能保證每個操作是原子的,所以不用考慮線程間的同步。

但有一個問題:即mysql的每個操作是原子的,所以做每個操作時,其它線程是阻塞的,在大數據量查詢時,花的時間較長,會對其它線程有影響。我在保持其它線程工作不變的情況下,將每個查找線程改為做一次對所有記錄的查詢,在5萬和10萬記錄時表現不錯,分別為250ms和450ms,但在50萬記錄時,這個數值達到了22秒。而且在50萬用戶時,通過條件查找部分數據也很慢,如查詢結果為10萬記錄時用11秒。
懷疑是sqlserver的參數影響,按資料庫說明修改了幾個緩沖區的參數,但沒有效果。
由於首次同步發生的頻率很低,象250ms和450ms這樣的數據還是可以接受的,但22秒太離譜了。支持50萬用戶在線,需要考慮一個解決辦法,現在有一個辦法是建一個備份表,寫備份表的請求放到一個隊列里由一個單獨線程處理,這樣阻塞不會影響正常業務處理了。但這個線程的緩沖區要足夠容納30秒內發生的操作。

本來擔心數據量大了mysql的緩沖區不夠會出錯或丟數據,但測試發現,一次查詢最多讀了50M數據,沒有出現問題,經測算我們首次同步的數據不會超過10M。

在MySQL中啟動了innoDB引擎後,可以實現真正的行級鎖,select和update操作可以並發,這樣在全表查詢進行中間可以進行其它的select和update操作,但insert和delete不行。
性能也有很大提高,50萬記錄時100次操作300ms,全表查詢11秒多


常用參數[options]詳細說明:--auto-generate-sql,
-a自動生成測試表和數據,表示用mysqlslap工具自己生成的SQL腳本來測試並發壓力。
--auto-generate-sql-load-type=type測試語句的類型。代表要測試的環境是讀操作還是寫操作還是兩者混合的。取值包括:read,key,write,update和mixed(默認)。
--auto-generate-sql-add-auto-increment代表對生成的表自動添加auto_increment列,從5.1.18版本開始支持。--number-char-cols=N,
-xN自動生成的測試表中包含多少個字元類型的列,默認1--number-int-cols=N,-yN自動生成的測試表中包含多少個數字類型的列,默認1--number-of-queries=N總的測試查詢次數(並發客戶數×每客戶查詢次數)
--query=name,-q使用自定義腳本執行測試,例如可以調用自定義的一個存儲過程或者sql語句來執行測試。--create-schema代表自定義的測試庫名稱,測試的schema,MySQL中schema也就是database。--commint=N多少條DML後提交一次。
--compress,-C如果伺服器和客戶端支持都壓縮,則壓縮信息傳遞。--concurrency=N,-cN表示並發量,也就是模擬多少個客戶端同時執行select。可指定多個值,以逗號或者--delimiter參數指定的值做為分隔符。例如:
--concurrency=100,200,500。
--engine=engine_name,-eengine_name代表要測試的引擎,可以有多個,用分隔符隔開。例如:--engines=myisam,innodb。--iterations=N,-iN測試執行的迭代次數,代表要在不同並發環境下,各自運行測試多少次。
--only-print只列印測試語句而不實際執行。--detach=N執行N條語句後斷開重連。--debug-info,-T列印內存和CPU的相關信息。說明:測試的過程需要生成測試表,插入測試數據,這個mysqlslap可以自動生成,默認生成一個mysqlslap的schema,如果已經存在則先刪除。可以用--only-print來列印實際的測試過程,整個測試完成後不會在資料庫中留下痕跡。各種測試參數實例(-p後面跟的是mysql的root密碼):單線程測試。測試做了什麼。
#mysqlslap-a-uroot-p123456多線程測試。使用–concurrency來模擬並發連接。#mysqlslap-a-c100-uroot-p123456迭代測試。用於需要多次執行測試得到平均值。#mysqlslap-a-i10-uroot-p123456#mysqlslap---auto-generate-sql-add-autoincrement-a-uroot-p123456#mysqlslap-a--auto-generate-sql-load-type=read-uroot-p123456#mysqlslap-a--auto-generate-secondary-indexes=3-uroot-p123456#mysqlslap-a--auto-generate-sql-write-number=1000-uroot-p123456#mysqlslap--create-schemaworld-q"selectcount(*)fromCity"-uroot-p123456#mysqlslap-a-einnodb-uroot-p123456#mysqlslap-a--number-of-queries=10-uroot-p123456測試同時不同的存儲引擎的性能進行對比:#mysqlslap-a--concurrency=50,100--number-of-queries1000--iterations=5--engine=myisam,innodb--debug-info-uroot-p123456執行一次測試,分別50和100個並發,執行1000次總查詢:#mysqlslap-a--concurrency=50,100--number-of-queries1000--debug-info-uroot-p12345650和100個並發分別得到一次測試結果(Benchmark),並發數越多,執行完所有查詢的時間越長。為了准確起見,可以多迭代測試幾次:#mysqlslap-a--concurrency=50,100--number-of-queries1000--iterations=5--debug-info-uroot-p123456

『玖』 如何在性能測試中手工生成AWR報告完成資料庫性能分析

如何在性能測試中手工生成AWR報告完成資料庫性能分析

網路文庫:http://wenku..com/link?url=_X91Ua_9wnwZJ42hazbEDNOtAocN8GFsN-