資料庫壓力測試方法總結

2022-07-06 01:18:12 字數 2671 閱讀 9151

一、前言

在前面的壓力測試過程中,主要關注的是對介面以及伺服器硬體效能進行壓力測試,評估請求介面和硬體效能對服務的影響。但是對於多數web應用來說,整個系統的瓶頸在於資料庫。

原因很簡單:web應用中的其他因素,例如網路頻寬、負載均衡節點、應用伺服器(包括cpu、記憶體、硬碟、連線數等)、快取,都很容易通過水平的擴充套件(俗稱加機器)來實現效能的提高。而對於mysql,由於資料一致性的要求,無法通過增加機器來分散向資料庫寫資料帶來的壓力;雖然可以通過前置快取(redis等)、讀寫分離、分庫分表來減輕壓力,但是與系統其它元件的水平擴充套件相比,受到了太多的限制。

二、常見的資料庫壓測指標

三、使用sysbench進行資料庫壓測

1、基本介紹

sysbench是跨平台的基準測試工具,支援多執行緒,支援多種資料庫;主要包括以下幾種測試:

該工具可以自動幫你在資料庫裡構造出來大量的資料,你想要多少資料,就自動給你構造出來多少條資料。同時還可以模擬幾千個執行緒併發的訪問資料庫,模擬使用各種各樣的 sql 語句,包括模擬出來各種事務提交到你的資料庫裡去,甚至可以模擬出幾十萬的 tps 去壓測資料庫。

2、安裝sysbench:

curl -s  | sudo bash

sudo yum -y install sysbench

sysbench --version

3、基於 sysbench 構造測試表和測試資料:

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=1000000 oltp_read_write --db-ps-mode=disable prepare

4、執行測試:

(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=1000000 oltp_read_write --db-ps-mode=disable run

(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=1000000 oltp_read_only --db-ps-mode=disable run

(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=1000000 oltp_write_only --db-ps-mode=disable run

使用上面的命令,sysbench 工具會根據你的指令構造出各種各樣的 sql 語句去更新或者查詢你的 20 張測試表裡的資料,同時監測出你的資料庫的壓測效能指標,最後完成壓測之後,可以執行 cleanup 命令,清理資料。

5、壓測結果分析:

按照我們上面的命令,我們是讓它每隔 1 秒都會輸出一次壓測報告的,此時它每隔一秒會輸出類似下面的一段東西:

[10s ] thds: 100 tps: 500 qps: 5000 (r/w/o: 3500/1000/500) lat (ms, 95%): 20 err/s: 0.00 reconn/s: 0.00

使用sysbench工具可以直接對資料庫效能進行評價,但是在結果展示方面還有待進一步提公升。當然後續可以對結果進行進一步處理,比如寫入**或作圖,會更加直觀。

資料庫壓力測試方法小結

在前面的壓力測試過程中,主要關注的是對介面以及伺服器硬體效能進行壓力測試,評估請求介面和硬體效能對服務的影響。但是對於多數web應用來說,整個系統的瓶頸在於資料庫。原因很簡單 web應用中的其他因素,例如網路頻寬 負載均衡節點 應用伺服器 包括cpu 記憶體 硬碟 連線數等 快取,都很容易通過水平的...

Jmeter資料庫壓力測試

先配置jdbc 資料庫連線 驅動 1 啟動jmeter,開啟介面工具,新增乙個執行緒組,新增驅動 2 新增乙個jdbc connection configuration,連線池配置檔案。右鍵執行緒組 新增 配置元件 jdbc connection configuration variable nam...

資料庫壓力

update造成壓力大的很重要的因素,因為它 在where條件 後面加函式後無視索引,select from tablename where function table 欄位 這條語句會查詢整個表,即便是這個表有索引。所以如果涉及到select,update的情況,資料量少點還好,如果資料量大的話...