mysql小白系列_12 sysbench
阿新 • • 發佈:2018-03-08
機器 測試 混合 onf blog 數據 and down proc
壓測
1.查看機器負載load
- top - load average 1m 5m 15m
- cat /proc/loadavg
- 與CPU個數有關,1個load表示1個CPU
cat /proc/cpuinfo |grep processor
2.CPU使用率
- top us sy id wa hi si st
- cat /proc/stat
3.QPS
- SSD查詢QPS約2w
- 評估qps=(總pv * 80%)/(24 * 60 * 60 * 20%)
- 機器數=總qps/單臺機器極限qps
sysbench
1.安裝
wget https://github.com/akopytov/sysbench/archive/1.0.zip -O "sysbench-1.0.zip" unzip sysbench-1.0.zip cd sysbench-1.0 yum install automake libtool -y export LD_LIBRARY_PATH=/usr/local/mysql/lib ./autogen.sh ./configure --with-mysql-includes=/usr/local/mysql/include/ --with-mysql-libs=/usr/local/mysql/lib/ make && make install
2.創建測試表
sysbench --test=/usr/local/share/sysbench/tests/include/oltp_legacy/select.lua --oltp-table-size=20000 --mysql-table-engine=innodb --mysql-user=root --mysql-password=123456 --mysql-port=3306 --mysql-host=localhost --mysql-db=test --max-requests=0 --max-time=60 --oltp-tables-count=20 --report-interval=10 --num_threads=2 prepare
sysbench --test=oltp --oltp_tables_count=10 --oltp-table-size=100000 --mysql-user=root --mysql-password=123456 --num-threads=20 --max-time=120 --max-requests=0 --oltp-test-mode=complex prepare #-test=tests/db/oltp.lua 表示調用 tests/db/oltp.lua 腳本進行 oltp 模式測試 #--oltp_tables_count=10 表示會生成 10 個測試表 #--oltp-table-size=100000 表示每個測試表填充數據量為 100000 #--rand-init=on 表示每個測試表都是用隨機數據來填充的 #-num-threads=8 表示發起 8個並發連接 #--oltp-read-only=off 表示不要進行只讀測試,也就是會采用讀寫混合模式測試 #--report-interval=10 表示每10秒輸出一次測試進度報告 #--rand-type=uniform 表示隨機類型為固定模式,其他幾個可選隨機模式:uniform(固定),gaussian(高斯),special(特定的),pareto(帕累托) #--max-time=120 表示最大執行時長為 120秒 #--max-requests=0 表示總請求數為 0,因為上面已經定義了總執行時長,所以總請求數可以設定為 0;也可以只設定總請求數,不設定最大執行時長 #--percentile=99 表示設定采樣比例,默認是 95%,即丟棄1%的長請求,在剩余的99%裏取最大值
3.開始測試
sysbench --test=/usr/local/share/sysbench/tests/include/oltp_legacy/select.lua --oltp-table-size=20000 --mysql-table-engine=innodb --mysql-user=root --mysql-password=123456 --mysql-port=3306 --mysql-host=localhost --mysql-db=test --max-requests=0 --max-time=60 --oltp-tables-count=20 --report-interval=10 --num_threads=2 run
-------- -----load-avg---- ---cpu-usage--- ---swap--- -QPS- -TPS- -Hit%- ------threads------ time | 1m 5m 15m |usr sys idl iow| si so| ins upd del sel iud| lor hit| run con cre cac| 20:12:09| 0.02 0.05 0.12| 1 2 97 0| 0 0| 0 0 0 0 0| 0 100.00| 1 1 0 1| 20:12:12| 0.02 0.05 0.12| 1 1 98 0| 0 0| 0 0 0 0 0| 0 100.00| 1 1 0 1| 20:12:15| 0.02 0.05 0.12| 29 7 64 0| 0 0| 0 0 0 1822 0| 3855 100.00| 1 3 0 0| 20:12:18| 0.25 0.10 0.14| 85 15 0 0| 0 0| 0 0 0 5015 0| 10536 100.00| 1 3 0 0| 20:12:21| 0.25 0.10 0.14| 85 15 0 0| 0 0| 0 0 0 5427 0| 11394 100.00| 1 3 0 0| 20:12:25| 0.55 0.16 0.16| 83 17 0 0| 0 0| 0 0 0 5199 0| 10879 100.00| 1 3 0 0| 20:12:28| 0.75 0.21 0.17| 86 14 0 0| 0 0| 0 0 0 5290 0| 11116 100.00| 1 3 0 0| 20:12:31| 0.75 0.21 0.17| 76 24 0 0| 0 0| 0 0 0 4403 0| 9281 100.00| 1 3 0 0| 20:12:34| 1.01 0.27 0.20| 74 26 0 0| 0 0| 0 0 0 4808 0| 10093 100.00| 1 3 0 0| 20:12:38| 1.09 0.30 0.20| 82 18 0 0| 0 0| 0 0 0 5214 0| 10882 100.00| 1 3 0 0| 20:12:41| 1.09 0.30 0.20| 83 17 0 0| 0 0| 0 0 0 5146 0| 10782 100.00| 1 3 0 0| 20:12:44| 1.24 0.35 0.22| 82 18 0 0| 0 0| 0 0 0 5277 0| 11120 100.00| 1 3 0 0| 20:12:47| 1.24 0.35 0.22| 83 17 0 0| 0 0| 0 0 0 5415 0| 11423 100.00| 1 3 0 0| 20:12:50| 1.38 0.39 0.24| 83 17 0 0| 0 0| 0 0 0 5522 0| 11559 100.00| 1 3 0 0| 20:12:54| 1.51 0.43 0.25| 83 17 0 0| 0 0| 0 0 0 5476 0| 11480 100.00| 1 3 0 0|
- 1m超過1代表CPU使用量超過1
- usr代表用戶使用CPU百分比
QPS的sel代表select DML,極限在5000左右
http://blog.csdn.net/oahz4699092zhao/article/details/53332105
4.TPS
- DML的表現,每秒事務數
可以用olut.lua腳本隨機壓測
-------- -----load-avg---- ---cpu-usage--- ---swap--- -QPS- -TPS- -Hit%- ------threads------ time | 1m 5m 15m |usr sys idl iow| si so| ins upd del sel iud| lor hit| run con cre cac| 00:09:42| 0.97 0.29 0.14| 2 2 96 0| 0 0| 0 0 0 0 0| 0 100.00| 0 0 0 0| 00:09:45| 0.98 0.30 0.14| 2 13 52 33| 0 0| 0 0 0 0 0| 0 100.00| 1 1 0 2| 00:09:48| 0.98 0.30 0.14| 2 9 76 13| 0 0| 0 0 0 0 0| 0 100.00| 1 1 0 2| 00:09:52| 1.06 0.33 0.15| 4 18 43 35| 0 0| 0 0 0 0 0| 49 100.00| 1 1 0 2| 00:09:55| 1.06 0.33 0.15| 18 22 34 26| 0 0| 15 31 15 220 62| 3322 100.00| 3 3 0 0| 00:09:58| 1.21 0.37 0.17| 19 25 28 29| 0 0| 18 36 18 257 73| 3912 100.00| 3 3 0 0| 00:10:01| 1.28 0.40 0.18| 20 32 17 31| 0 0| 17 34 17 243 69| 3600 100.00| 3 3 0 0| 00:10:04| 1.28 0.40 0.18| 16 25 31 27| 0 0| 15 30 15 210 60| 2756 100.00| 3 3 0 0| 00:10:07| 1.41 0.44 0.19| 23 32 27 18| 0 0| 20 40 20 285 81| 4518 100.00| 3 3 0 0| 00:10:10| 1.62 0.50 0.21| 20 30 30 21| 0 0| 20 40 20 285 81| 4040 100.00| 3 3 0 0| 00:10:13| 1.62 0.50 0.21| 22 30 22 26| 0 0| 19 39 19 280 79| 3540 100.00| 3 3 0 0| 00:10:17| 1.65 0.52 0.22| 16 24 32 28| 0 0| 15 30 15 210 61| 3112 100.00| 3 3 0 0| 00:10:20| 1.65 0.52 0.22| 21 25 38 15| 0 0| 21 42 21 299 85| 4237 100.00| 3 3 0 0| 00:10:23| 1.84 0.58 0.24| 19 21 43 17| 0 0| 20 40 20 285 81| 4069 100.00| 3 3 0 0| 00:10:26| 2.09 0.66 0.27| 20 22 35 23| 0 0| 20 41 20 290 82| 4736 100.00| 3 3 0 0| -------- -----load-avg---- ---cpu-usage--- ---swap--- -QPS- -TPS- -Hit%- ------threads------ time | 1m 5m 15m |usr sys idl iow| si so| ins upd del sel iud| lor hit| run con cre cac| 00:10:29| 2.09 0.66 0.27| 21 22 34 24| 0 0| 21 43 21 304 86| 4324 100.00| 3 3 0 0| 00:10:32| 2.33 0.73 0.29| 18 20 39 24| 0 0| 18 36 18 257 73| 3739 100.00| 3 3 0 0| 00:10:35| 2.33 0.73 0.29| 22 24 33 22| 0 0| 23 46 23 327 93| 4719 100.00| 3 3 0 0| 00:10:38| 2.54 0.80 0.32| 19 22 41 19| 0 0| 20 41 20 290 82| 4186 100.00| 3 3 0 0| 00:10:41| 2.58 0.83 0.33| 22 23 36 19| 0 0| 22 44 22 308 88| 4458 100.00| 3 3 0 0| 00:10:44| 2.58 0.83 0.33| 19 23 32 26| 0 0| 20 40 20 285 81| 4166 100.00| 3 3 0 0| 00:10:47| 2.61 0.87 0.35| 19 24 36 22| 0 0| 22 45 22 318 90| 4448 100.00| 3 3 0 0| 00:10:50| 2.72 0.92 0.37| 24 26 36 14| 0 0| 28 56 28 397 113| 6076 100.00| 3 3 0 0| 00:10:54| 2.72 0.92 0.37| 12 16 55 18| 0 0| 12 24 12 173 49| 2718 100.00| 1 1 0 2| 00:10:57| 2.66 0.94 0.37| 3 36 48 13| 0 0| 0 0 0 0 0| 0 100.00| 1 1 0 2|
分表分庫索引設計
1.訂單主鍵ID
- (1)長度26位(170325131201 000000010 01 01)
- (2)格式:[yyMMddHHmmss(12位)] [循環遞增序列(9位)] [庫序號(2位)] [表序號(2位)]
- (3)中間變量=userID%(庫數量 * 每個庫的表數量)
- (4)庫序號=中間變量 / 每個庫的表數量
- (5)標序號=中間變量 % 每個庫的表數量
2.order_num唯一索引
有20%要通過order_num(訂單號)查數據,請問order_num(訂單號)要怎麽設計才能快帶找到訂單記錄是在哪個庫的哪個表?
Twiiter全局唯一ID
- (1)41位時間序列
- (2)10位機器標識
- (3)12位計數順序號
- (4)長度64位(41 + 10 + 12)
這個做訂單號有點長
訂單號
- (1)求除得庫號
- (2)求模得表號
http://www.bubuko.com/infodetail-2152233.html
3.非主鍵索引
有10%是非主鍵字段(比如:字段、渠道、商品,檔期,品牌,收件人信息、金額等字段)去查記錄,非主鍵字段要怎麽設計才能快帶定位到記錄?
還是通過二級索引找到主鍵索引在進行路由?
==未完成==
mysql小白系列_12 sysbench