全部產品
Search
文件中心

:效能測試指導

更新時間:Feb 28, 2025

本文介紹RDS MySQL執行個體效能測試的方法。

前提條件

背景資訊

執行個體效能測試的指標包括:

  • 每秒執行事務數TPS(Transactions Per Second)

    資料庫每秒執行的事務數,以COMMIT成功次數為準。

    • SysBench標準OLTP讀寫混合情境中一個事務包含18個讀寫SQL。
    • SysBench標準OLTP唯讀情境中一個事務包含14個讀SQL(10條主鍵點查詢、4條範圍查詢)。
    • SysBench標準OLTP唯寫情境中一個事務包含4個寫SQL(2條UPDATE、1條DETELE、1條INSERT)。
  • 每秒執行請求數QPS(Queries Per Second)

    資料庫每秒執行的SQL數,包含INSERT、SELECT、UPDATE、DETELE、COMMIT等。

SysBench參數說明

參數說明
db-driver資料庫引擎。
mysql-hostRDS執行個體串連地址。
mysql-portRDS執行個體串連連接埠。
mysql-userRDS執行個體帳號。
mysql-passwordRDS執行個體帳號對應的密碼。
mysql-dbRDS執行個體資料庫名。
table_size測試表大小。
tables測試表數量。
events測試請求數量。
time測試時間。
threads測試線程數。
percentile需要統計的百分比,預設值為95%,即請求在95%的情況下的執行時間。
report-interval表示N秒輸出一次測試進度報告,0表示關閉測試進度報告輸出,僅輸出最終的報告結果。
skip-trx是否跳過事務。
  • 1:跳過
  • 0:不跳過

效能測試步驟

本文以CentOS系統為例,示範效能測試的步驟。

  1. 登入ECS執行個體,通過如下步驟安裝SysBench。
    sudo yum install gcc gcc-c++ autoconf automake make libtool mysql-devel git mysql
    git clone https://github.com/akopytov/sysbench.git
    ##從Git中下載Sysbench
    cd sysbench
    ##開啟sysbench目錄
    git checkout 1.0.18
    ##切換到sysbench 1.0.18版本
    ./autogen.sh
    ##運行autogen.sh
    ./configure --prefix=/usr --mandir=/usr/share/man
    make
    ##編譯
    make install
  2. 進行效能測試,包括OLTP讀寫混合情境壓測、OLTP唯讀情境壓測和OLTP唯寫情境壓測。
    • OLTP讀寫混合情境壓測

      參見如下命令進行測試,參數說明請參見SysBench參數說明

      ##準備資料
      sysbench --db-driver=mysql --mysql-host=XXX --mysql-port=XXX --mysql-user=XXX --mysql-password=XXX --mysql-db=sbtest --table_size=25000 --tables=100 --events=0 --time=300  --threads=XXX oltp_read_write prepare
      
      ##運行workload
      sysbench --db-driver=mysql --mysql-host=XXX --mysql-port=XXX --mysql-user=XXX --mysql-password=XXX --mysql-db=sbtest --table_size=25000 --tables=100 --events=0 --time=300   --threads=XXX --percentile=95 --report-interval=1 oltp_read_write run
      
      ##清理資料
      sysbench --db-driver=mysql --mysql-host=XXX --mysql-port=XXX --mysql-user=XXX --mysql-password=XXX --mysql-db=sbtest --table_size=25000 --tables=100 --events=0 --time=300   --threads=XXX --percentile=95  oltp_read_write cleanup

      測試結果樣本如下:

      • QPS:23869.32
      • TPS:1193.47
      • 回應時間(RT):36.89 ms
      OLTP讀寫混合情境壓測
    • OLTP唯讀情境壓測

      參見如下命令進行測試,參數說明請參見SysBench參數說明

      ##準備資料
      sysbench --db-driver=mysql --mysql-host=XXX --mysql-port=XXX --mysql-user=XXX --mysql-password=XXX --mysql-db=sbtest --table_size=25000 --tables=100 --events=0 --time=300  --threads=XXX  oltp_read_only prepare
      
      ##運行workload
      sysbench --db-driver=mysql --mysql-host=XXX --mysql-port=XXX --mysql-user=XXX --mysql-password=XXX --mysql-db=sbtest --table_size=25000 --tables=100 --events=0 --time=300  --threads=XXX --percentile=95 --skip-trx=1 --report-interval=1 oltp_read_only run
      
      ##清理資料
      sysbench --db-driver=mysql --mysql-host=XXX --mysql-port=XXX --mysql-user=XXX --mysql-password=XXX --mysql-db=sbtest --table_size=25000 --tables=100 --events=0 --time=300   --threads=XXX --percentile=95 oltp_read_only cleanup

      測試結果樣本如下:

      • QPS:26130.73
      • 回應時間(RT):33.72 ms
      OLTP唯讀情境壓測
    • OLTP唯寫情境壓測

      參見如下命令進行測試,參數說明請參見SysBench參數說明

      ##準備資料
      sysbench --db-driver=mysql --mysql-host=XXX --mysql-port=XXX --mysql-user=XXX --mysql-password=XXX --mysql-db=sbtest --table_size=25000 --tables=100 --events=0 --time=300  --threads=XXX  oltp_write_only prepare
      
      ##運行workload
      sysbench --db-driver=mysql --mysql-host=XXX --mysql-port=XXX --mysql-user=XXX --mysql-password=XXX --mysql-db=sbtest --table_size=25000 --tables=100 --events=0 --time=300   --threads=XXX --percentile=95 --report-interval=1 oltp_write_only run
      
      ##清理資料
      sysbench --db-driver=mysql --mysql-host=XXX --mysql-port=XXX --mysql-user=XXX --mysql-password=XXX --mysql-db=sbtest --table_size=25000 --tables=100 --events=0 --time=300   --threads=XXX --percentile=95  oltp_write_only cleanup

      測試結果樣本如下:

      • TPS:4255.01
      • 回應時間(RT):16.71 ms
      OLTP唯寫情境壓測
    說明 SysBench工具有很多標準壓測模型,您可以根據自己的業務情境選擇合適的模型使用。