資料庫壓力測試方法小結
文章推薦指數: 80 %
在前面的壓力測試過程中,主要關注的是對介面以及伺服器硬體效能進行壓力測試,評估請求介面和硬體效能對服務的影響。
但是對於多數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,哪個效能更牛?
延伸文章資訊
- 1資料庫壓力測試方法小結
在前面的壓力測試過程中,主要關注的是對介面以及伺服器硬體效能進行壓力測試,評估請求介面和硬體效能對服務的影響。但是對於多數Web應用來說,整個系統 ...
- 2學習使用Jmeter做壓力測試(三)--資料庫測試 - ITREAD01.COM
資料庫測試. JMeter可以做為Web伺服器與瀏覽器之間的代理閘道器,以捕獲瀏覽器的請求和Web伺服器的響應,這樣就可很容易的生成效能測試指令碼。
- 3Toad for SQL Server-如何進行資料庫系統壓力測試 - iT 邦幫忙
Toad for SQL Server-如何進行資料庫系統壓力測試. mpinfo. 12 年前‧ 12642 瀏覽. 11. 壓力測試(Stress Test) – 用以驗證系統在超出預期的負...
- 4MySQL壓力測試工具mysqlslap @ 網頁程式- coke750101
MySQL從5.1.4版開始帶有一個壓力測試工具mysqlslap,通過模擬多個併發用戶端 ... 可以看到最後由刪除一開始創建的schema的動作,整個測試完成後不會在資料庫中留下痕跡 ...
- 5關於資料庫壓力測試的故事 - - CodingNote.cc
此前也做過很多次壓力測試,對於資料庫方面來說,主要是搜集伺服器當時的CPU,記憶體使用,以及關注AWR報告SQL執行部分是否有異常,便於正式上線後, ...