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
準備數據:html
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
執行測試:mysql
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
重要說明:git
須要說明的選項: 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=一、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來跳過測試中的顯式事務。
###############################################################################
查詢表的數據量github
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';sql
參考來源:數據庫
https://www.cnblogs.com/conanwang/p/5910079.html併發