Sysbench 1.0.17安裝與測試


Sysbench安裝與測試

1.安裝:

cd /usr/local/src
wget https://codeload.github.com/akopytov/sysbench/tar.gz/1.0.17

tar -xzvf /usr/local/src/sysbench-1.0.17.tar.gz -C /usr/local/


cd /usr/local/sysbench-1.0.17

##RHEL/CentOS
yum -y install make automake libtool pkgconfig libaio-devel
# For MySQL support, replace with mysql-devel on RHEL/CentOS 5
yum -y install mariadb-devel openssl-devel
# For PostgreSQL support
yum -y install postgresql-devel


##Build and Install
./autogen.sh
# Add --with-pgsql to build with PostgreSQL support
./configure
make -j
make install

sysbench --version

  

2.測試:

准備數據:

sysbench /usr/local/share/sysbench/tests/include/oltp_legacy/oltp.lua \
--mysql-host=10.10.48.240 \
--mysql-port=3307 \
--mysql-user=root \
--mysql-password=rooT_258 \
--mysql-db=dbtest \
--oltp-tables-count=10 \
--oltp-table-size=10000000 \
--oltp-dist-type=uniform \
--oltp-read-only=off \
--oltp-test-mode=complex \
--rand-init=on \
--db-driver=mysql \
--report-interval=10 \
--threads=1000 \
--time=120 \
prepare

執行測試:

sysbench /usr/local/share/sysbench/tests/include/oltp_legacy/oltp.lua \
--mysql-host=10.10.48.240 \
--mysql-port=3307 \
--mysql-user=root \
--mysql-password=rooT_258 \
--mysql-db=dbtest \
--oltp-tables-count=10 \
--oltp-table-size=10000000 \
--oltp-dist-type=uniform \
--oltp-read-only=off \
--oltp-test-mode=complex \
--rand-init=on \
--db-driver=mysql \
--report-interval=10 \
--threads=1000 \
--time=120 \
run >> /home/mysysbench.log

  

清理數據:

sysbench /usr/local/share/sysbench/tests/include/oltp_legacy/oltp.lua \
--mysql-host=10.10.48.240 \
--mysql-port=3307 \
--mysql-user=root \
--mysql-password=rooT_258 \
--mysql-db=dbtest \
--oltp-tables-count=10 \
cleanup

 

重要說明:

需要說明的選項:

mysql-db=dbtest:測試使用的目標數據庫,這個庫名要事先創建
--oltp-tables-count=10:產生表的數量
--oltp-table-size=10000000:每個表產生的記錄行數
--oltp-dist-type=uniform:指定隨機取樣類型,可選值有 uniform(均勻分布), Gaussian(高斯分布), special(空間分布)。默認是special
--oltp-read-only=off:表示不止產生只讀SQL,也就是使用oltp.lua時會采用讀寫混合模式。默認 off,如果設置為on,則不會產生update,delete,insert的sql。
--oltp-test-mode=nontrx:執行模式,這里是非事務式的。可選值有simple,complex,nontrx。默認是complex 
    simple:簡單查詢,SELECT c FROM sbtest WHERE id=N
    complex (advanced transactional):事務模式在開始和結束事務之前加上begin和commit, 一個事務里可以有多個語句,如點查詢、范圍查詢、排序查詢、更新、刪除、插入等,並且為了不破壞測試表的數據,該模式下一條記錄刪除后會在同一個事務里添加一條相同的記錄。     nontrx (non-transactional):與simple相似,但是可以進行update/insert等操作,所以如果做連續的對比壓測,你可能需要重新cleanup,prepare。 --oltp-skip-trx=[on|off]:省略begin/commit語句。默認是off --rand-init=on:是否隨機初始化數據,如果不隨機化那么初始好的數據每行內容除了主鍵不同外其他完全相同 --num-threads=12: 並發線程數,可以理解為模擬的客戶端並發連接數 --report-interval=10:表示每10s輸出一次測試進度報告 --max-requests=0:壓力測試產生請求的總數,如果以下面的max-time來記,這個值設為0 --max-time=120:壓力測試的持續時間,這里是2分鍾。 注意,針對不同的選項取值就會有不同的子選項。比如oltp-dist-type=special,就有比如oltp-dist-pct=1、oltp-dist-res=50兩個子選項,代表有50%的查詢落在1%的行(即熱點數據)上,另外50%均勻的(sample uniformly)落在另外99%的記錄行上。 再比如oltp-test-mode=nontrx時, 就可以有oltp-nontrx-mode,可選值有select(默認), update_key, update_nokey, insert, delete,代表非事務式模式下使用的測試sql類型。 以上代表的是一個只讀的例子,可以把num-threads依次遞增(16,36,72,128,256,512),或者調整my.cnf參數,比較效果。另外需要注意的是,大部分mysql中間件對事務的處理,默認都是把sql發到主庫執行,所以只讀測試需要加上oltp-skip-trx=on來跳過測試中的顯式事務。

  

 


###############################################################################
查詢表的數據量

SELECT CONCAT(table_schema,'.',table_name) AS 'Table Name', table_rows AS 'Number of Rows', CONCAT(ROUND(data_length/(1024*1024*1024),4),'G') AS 'Data Size', CONCAT(ROUND(index_length/(1024*1024*1024),4),'G') AS 'Index Size', CONCAT(ROUND((data_length+index_length)/(1024*1024*1024),4),'G') AS'Total'FROM information_schema.TABLES WHERE table_schema LIKE 'dbtest';

 

 

參考來源:

https://www.cnblogs.com/conanwang/p/5910079.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM