你必須得抱有必定目的: "這個CPU相比與上一種是否是快一點?" "這個索引好用嗎?"
根據測試指標,分析,解答你一開始的疑惑mysql
sysbench --test=fileio <測試類型 - fileio測試>
--file-num=10 <生成10個測試使用的文件>
--file-total-size=5G <全部文件的一共5G>
prepare <fileio測試 - 行動:準備文件>
sysbench --max-time=180 <超時時間180秒>
--max-requests=100000000 <最多10000000請求>
--num-threads=16 <測試使用16線程>
--init-rng=on <使用隨機數生成器>
--test=fileio <測試類型 - fileio測試>
--file-total-size=5G <全部文件的一共5G>
--file-test-mode=rndrw <測試類型 - 隨機寫>
--file-num=10 <生成10個測試使用的文件>
run <行動類型 - 運行測試>
sysbench --test=fileio <測試類型 - fileio測試>
--file-num=10 <生成10個測試使用的文件>
--file-total-size=5G <全部文件的一共5G>
cleanup <行動類型 - 清除測試數據>
複製代碼
sysbench --test=cpu --cpu-max-prime=20000 run <計算2萬之內最大素數>複製代碼
假設如今針對兩臺電腦直接展開這樣的測試是不公平的,由於這裏線程數量被設置成1, 爲了能表現出CPU的最大威力,咱們應該以下設置線程數量git
sysbench --test=cpu
--num-threads=`grep "processor" /proc/cpuinfo | wc -l` <使用所有核心>
--cpu-max-prime=20000
run複製代碼
sysbench --test=memory <測試內存>
--memory-block-size=8K <測試內存塊大小爲8k>
--memory-total-size=1G <總共數據傳輸大小1G>
--num-threads=16 <線程數量16>
run複製代碼
sysbench
--mysql-host=127.0.0.1 <指定數據庫相關參數>
--mysql-port=3166
--mysql-user=root
--mysql-password=123456
--test=oltp <測試類型爲數據庫相關測試>
--oltp_tables_count=1 <生成一張表>
--oltp-table-size=1000000 <表裏有這些數據>
--rand-init=on
prepare <行動: 準備對應數據>
sysbench
--mysql-host=127.0.0.1
--mysql-port=3166
--mysql-user=root
--mysql-password=123456
--test=tests/db/oltp.lua
--oltp_tables_count=1
--oltp-table-size=1000000
--num-threads=128
--oltp-read-only=off
--report-interval=10
--rand-type=uniform
--max-time=60
--max-requests=10000000
run# 使用128線程測試60秒,每隔10秒發送一次測試狀況報告複製代碼
完整腳本github
local stmt_defs = {
point_selects = {
"SELECT c FROM sbtest%u WHERE id=?",
t.INT},
simple_ranges = {
"SELECT c FROM sbtest%u WHERE id BETWEEN ? AND ?",
t.INT, t.INT},
sum_ranges = {
"SELECT SUM(k) FROM sbtest%u WHERE id BETWEEN ? AND ?",
t.INT, t.INT},
order_ranges = {
"SELECT c FROM sbtest%u WHERE id BETWEEN ? AND ? ORDER BY c",
t.INT, t.INT},
distinct_ranges = {
"SELECT DISTINCT c FROM sbtest%u WHERE id BETWEEN ? AND ? ORDER BY c",
t.INT, t.INT},
index_updates = {
"UPDATE sbtest%u SET k=k+1 WHERE id=?",
t.INT},
non_index_updates = {
"UPDATE sbtest%u SET c=? WHERE id=?",
{t.CHAR, 120}, t.INT},
deletes = {
"DELETE FROM sbtest%u WHERE id=?",
t.INT},
inserts = {
"INSERT INTO sbtest%u (id, k, c, pad) VALUES (?, ?, ?, ?)",
t.INT, t.INT, {t.CHAR, 120}, {t.CHAR, 60}},
}複製代碼
上面是真的開始執行的時候,sysbench會去執行的命令sql
CREATE TABLE sbtest%d(
id %s,
k INTEGER DEFAULT '0' NOT NULL,
c VARCHAR(500) DEFAULT '' NOT NULL,
pad CHAR(60) DEFAULT '' NOT NULL,
%s (id)
) %s %s]]
複製代碼
CREATE TABLE sbtest%d(
id %s,
gmt_create datetime not null,
gmt_modified datetime not null,
k INTEGER DEFAULT '0' NOT NULL,
c VARCHAR(500) DEFAULT '' NOT NULL,
pad CHAR(60) DEFAULT '' NOT NULL,
is_used INTEGER DEFAULT '0' NOT NULL,
%s (id)
) %s %s]]複製代碼
這個則是在prepare階段會去作的事,建立一張這樣的表,你也能夠修改爲你這樣,而後對應的修改 run的時候所要操做的指令,而後 prepare - run - cleanup 就能夠了數據庫