資料庫壓力測試方法小結

文章推薦指數: 80 %
投票人數:10人

在前面的壓力測試過程中,主要關注的是對介面以及伺服器硬體效能進行壓力測試,評估請求介面和硬體效能對服務的影響。

但是對於多數Web應用來說,整個系統 ... MdEditor 資料庫壓力測試方法小結 語言:CN/TW/HK 時間 2021-01-2117:01:23 程式設計師一凡 主題: mysql sysbench 一、前言 在前面的壓力測試過程中,主要關注的是對介面以及伺服器硬體效能進行壓力測試,評估請求介面和硬體效能對服務的影響。

但是對於多數Web應用來說,整個系統的瓶頸在於資料庫。

原因很簡單:Web應用中的其他因素,例如網路頻寬、負載均衡節點、應用伺服器(包括CPU、記憶體、硬碟、連線數等)、快取,都很容易通過水平的擴充套件(俗稱加機器)來實現效能的提高。

而對於MySQL,由於資料一致性的要求,無法通過增加機器來分散向資料庫寫資料帶來的壓力;雖然可以通過前置快取(Redis等)、讀寫分離、分庫分表來減輕壓力,但是與系統其它元件的水平擴充套件相比,受到了太多的限制。

二、常見的資料庫壓測指標 與介面壓測指標類似,資料庫相關指標如下: TPS/QPS:衡量吞吐量。

響應時間:包括平均響應時間、最小響應時間、最大響應時間、時間百分比等,其中時間百分比參考意義較大,如前95%的請求的最大響應時間。



併發量:同時處理的查詢請求的數量。

三、使用sysbench進行資料庫壓測 1、基本介紹 sysbench是跨平臺的基準測試工具,支援多執行緒,支援多種資料庫;主要包括以下幾種測試: cpu效能磁碟io效能排程程式效能記憶體分配及傳輸速度POSIX執行緒效能資料庫效能(OLTP基準測試)該工具可以自動幫你在資料庫裡構造出來大量的資料,你想要多少資料,就自動給你構造出來多少條資料。

同時還可以模擬幾千個執行緒併發的訪問資料庫,模擬使用各種各樣的SQL語句,包括模擬出來各種事務提交到你的資料庫裡去,甚至可以模擬出幾十萬的TPS去壓測資料庫。

2、安裝sysbench: curl-shttps://packagecloud.io/install/repositories/akopytov/sysbench/script.rpm.sh|sudobash sudoyum-yinstallsysbench sysbench--version 3、基於sysbench構造測試表和測試資料: 首先需要在自己的資料庫裡建立好一個測試庫,我們可以取個名字叫做test,同時建立好對應的測試賬號,可以叫做root,密碼是123456,讓這個使用者有許可權可以訪問test。

基於sysbench構建20個測試表,每個表裡有100萬條資料,接著使用100個併發執行緒去對這個資料庫發起訪問,連續訪問5分鐘,也就是300秒。

命令如下:sysbench--db-driver=mysql--time=300--threads=100--report-interval=1--mysql-host=127.0.0.1--mysql-port=3306--mysql-user=root--mysql-password=123456--mysql-db=test--tables=20--table_size=1000000oltp_read_write--db-ps-mode=disableprepare4、執行測試: (1)測試資料庫的綜合讀寫TPS,使用的是oltp_read_write模式: sysbench--db-driver=mysql--time=300--threads=100--report-interval=1--mysql-host=127.0.0.1--mysql-port=3306--mysql-user=test_user--mysql-password=test_user--mysql-db=test_db--tables=20--table_size=1000000oltp_read_write--db-ps-mode=disablerun (2)測試資料庫的只讀效能,使用的是oltp_read_only模式: sysbench--db-driver=mysql--time=300--threads=100--report-interval=1--mysql-host=127.0.0.1--mysql-port=3306--mysql-user=test_user--mysql-password=test_user--mysql-db=test_db--tables=20--table_size=1000000oltp_read_only--db-ps-mode=disablerun (3)測試資料庫的寫入效能,使用的是oltp_write_only模式: sysbench--db-driver=mysql--time=300--threads=100--report-interval=1--mysql-host=127.0.0.1--mysql-port=3306--mysql-user=test_user--mysql-password=test_user--mysql-db=test_db--tables=20--table_size=1000000oltp_write_only--db-ps-mode=disablerun 使用上面的命令,sysbench工具會根據你的指令構造出各種各樣的SQL語句去更新或者查詢你的20張測試表裡的資料,同時監測出你的資料庫的壓測效能指標,最後完成壓測之後,可以執行cleanup命令,清理資料。

如果對軟體測試有興趣,想了解更多的測試知識,解決測試問題,以及入門指導,幫你解決測試中遇到的困惑,我們這裡有技術高手。

如果你正在找工作或者剛剛學校出來,又或者已經工作但是經常覺得難點很多,覺得自己測試方面學的不夠精想要繼續學習的,想轉行怕學不會的,都可以加入我們1079636098,群內可領取最新軟體測試大廠面試資料和Python自動化、介面、框架搭建學習資料!5、壓測結果分析: 按照我們上面的命令,我們是讓它每隔1秒都會輸出一次壓測報告的,此時它每隔一秒會輸出類似下面的一段東西: [10s]thds:100tps:500qps:5000(r/w/o:3500/1000/500)lat(ms,95%):20err/s:0.00reconn/s:0.00 thds:100,這個意思就是有100個執行緒在壓測tps:500,這個意思就是每秒執行了500個事務qps:5000,這個意思就是每秒可以執行5000個請求(r/w/o:3500/1000/500):這個意思就是說,在每秒5000個請求中,有3500個請求是讀請求,1000個請求是寫請求,500個請求是其他的請求,就是對QPS進行了拆解lat(ms,95%):20,這個意思就是說,95%的請求的延遲都在20毫秒以下err/s:0.00reconn/s:0.00:這兩個的意思就是說,每秒有0個請求是失敗的,發生了0次網路重連 結束語 使用sysbench工具可以直接對資料庫效能進行評價,但是在結果展示方面還有待進一步提升。

當然後續可以對結果進行進一步處理,比如寫入表格或作圖,會更加直觀。

「其他文章」 很遺憾,這就是現實!35歲之後軟體測試工程師靠什麼養家? 所謂軟體測試工作能力強,其實就是這5點 測試工程師的工作內容是什麼? 想要寫優秀的設計測試用例,不懂這個可不行! 【譯】如何寫一手漂亮的測試程式碼 測開之Python自動化全棧工程師效能專項 自動化測試面試官:登入或註冊時有驗證碼怎麼處理?OCR影象識別技術大揭祕! 月薪6K和月薪2W的測試,有什麼區別? 【測試學習筆記】介面測試記錄首篇 Mac安裝python環境&pychaem 從剛畢業的5K測試到20K測試大佬,與薪資相匹配的永遠是實力! 軟體測試——質量是一種認知 軟體測試分類體系,系統學習 一篇文章帶你熟知:軟體公司的分類及人員構成 同樣做軟體測試,和月收入3W的學弟聊了一晚上,我崩潰了 你用過的Python的庫有哪些?分別用於工作中什麼場景? ATX2(Atxserver2)叢集環境搭建 自從學會了搭建開源網站,再也不擔心找不到web自動化學習環境了 Pytest,我程式碼沒寫完呢!那你跳出用例!?用skip就好拉! 淺談自動化測試 「mysql」 萬答#12,MGR整個叢集掛掉後,如何才能自動選主,不用手動干預 Flink實踐教程-進階(2):複雜格式資料抽取 打造基於PostgreSQL/openGauss的分散式資料庫解決方案 帶著問題讀TiDB原始碼:PowerBIDesktop以MySQL驅動連線TiDB報錯 MySQL「Everyderivedtablemusthaveitsownalias」錯誤修復方法 進擊的Ansible(二):如何快速搞定生產環境Ansible專案佈局? FlinkCDC系列-實現MySQL資料實時寫入ApacheDoris ProxySQLMySQLMGR自拆書架的Sysbench只讀壓測報告 如何使用Kubernetes監測定位慢呼叫 TiDB5.3發版——跨越可觀測性鴻溝,實現HTAP效能和穩定性的新飛躍 「sysbench」 ProxySQLMySQLMGR自拆書架的Sysbench只讀壓測報告 TiDB資料一致性校驗實現:Sync-diff-inspector優化方案 SQL能力全面增強,ApacheShardingSphere5.0.0-beta核心揭祕 國內三大雲資料庫測試對比 MySQLConnectionHandlingandScaling 邁向企業級核心場景的TiDB5.0 使用sysbench測試mysql及postgresql(完整版) 資料傳輸|DTLE在弱網路環境下的效能報告 Pgbouncer最佳實踐:系列二 MySQL5.7vs8.0,哪個效能更牛?



請為這篇文章評分?