你必须得抱有必定目的: "这个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 就能够了数据库