sysbench测试mysql性能(TPS、QPS)

最近接了一个同事的需求他没有成功,所以帮一下他也有助于自己的提高。

如果没有安装mysql的可以看我这篇文章

docker 安装mysql - 简书

安装sysbench

https://github.com/akopytov/sysbench/archive/1.0.zip

下载并压缩  然后用winscp工具上传


yum install automake libtool –y

cd sysbench-1.0

./autogen.sh

./configure

注意:如果报错


执行:

yum install mysql-devel gcc gcc-devel python-devel

因为运行下面的make时候会不成功

make

make install

测试:

sysbench --version


启动mysql:

docker run -p 3306:3306 --name mymysql -v $PWD/conf:/etc/mysql/conf.d -v $PWD/logs:/logs -v $PWD/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7

首先在mysql中创建数据库sbtest


然后先执行命令

sysbench ./tests/include/oltp_legacy/oltp.lua --mysql-host=192.168.229.129 --mysql-port=3306 --mysql-user=root --mysql-password=123456 --oltp-test-mode=complex --oltp-tables-count=10 --oltp-table-size=100000 --threads=10 --time=120 --report-interval=10 prepare


在/home路径先创建mysysbench.log 

vi mysysbench.log 

再执行

sysbench ./tests/include/oltp_legacy/oltp.lua --mysql-host=192.168.229.129 --mysql-port=3306 --mysql-user=root --mysql-password=123456 --oltp-test-mode=complex --oltp-tables-count=10 --oltp-table-size=100000 --threads=10 --time=120 --report-interval=10 run >> /home/mysysbench.log

注意:参数说明

使用了10个表,每个表有10万条数据,客户端的并发线程数为10,执行时间为120秒,每10秒生成一次报告。

等大约20秒查看

cat mysysbench.log 


其中,对于我们比较重要的信息包括:

queries:查询总数及qps

transactions:事务总数及tps

Latency-95th percentile:前95%的请求的最大响应时间,本例中是28.16毫秒。


查看mysql连接数 

show variables like 'max_connections%';


建议

下面是使用sysbench的一些建议。

1、在开始测试之前,应该首先明确:应采用针对整个系统的基准测试,还是针对MySQL的基准测试,还是二者都需要。

2、如果需要针对MySQL的基准测试,那么还需要明确精度方面的要求:是否需要使用生产环境的真实数据,还是使用工具生成也可以;前者实施起来更加繁琐。如果要使用真实数据,尽量使用全部数据,而不是部分数据。

3、基准测试要进行多次才有意义。

4、测试时需要注意主从同步的状态。

5、测试必须模拟多线程的情况,单线程情况不但无法模拟真实的效率,也无法模拟阻塞甚至死锁情况

补充进阶

上面只是一个测试demo在实际的开发测试中我们要是想用自己数据库中的数据表进行测试应该修改test demo这种的lua脚本

cd sysbench-1.0/

cd  tests/

cd include/

cd oltp_legacy/

cat oltp.lua

---------------------------------------------------------------------------------------------

pathtest = string.match(test, "(.*/)")

if pathtest then

  dofile(pathtest .. "common.lua")

else

  require("common")

end

function thread_init()

  set_vars()

  if (((db_driver == "mysql") or (db_driver == "attachsql")) and mysql_table_engine == "myisam") then

      local i

      local tables = {}

      for i=1, oltp_tables_count do

        tables[i] = string.format("sbtest%i WRITE", i)

      end

      begin_query = "LOCK TABLES " .. table.concat(tables, " ,")

      commit_query = "UNLOCK TABLES"

  else

      begin_query = "BEGIN"

      commit_query = "COMMIT"

  end

end

function get_range_str()

  local start = sb_rand(1, oltp_table_size)

  return string.format(" WHERE id BETWEEN %u AND %u",

                        start, start + oltp_range_size - 1)

end

function event()

  local rs

  local i

  local table_name

  local c_val

  local pad_val

  local query

  table_name = "sbtest".. sb_rand_uniform(1, oltp_tables_count)

  if not oltp_skip_trx then

      db_query(begin_query)

  end

  if not oltp_write_only then

  for i=1, oltp_point_selects do

      rs = db_query("SELECT c FROM ".. table_name .." WHERE id=" ..

                      sb_rand(1, oltp_table_size))

  end

  if oltp_range_selects then

  for i=1, oltp_simple_ranges do

      rs = db_query("SELECT c FROM ".. table_name .. get_range_str())

  end

  for i=1, oltp_sum_ranges do

      rs = db_query("SELECT SUM(K) FROM ".. table_name .. get_range_str())

  end

  for i=1, oltp_order_ranges do

      rs = db_query("SELECT c FROM ".. table_name .. get_range_str() ..

                    " ORDER BY c")

  end

  for i=1, oltp_distinct_ranges do

      rs = db_query("SELECT DISTINCT c FROM ".. table_name .. get_range_str() ..

                    " ORDER BY c")

  end

  end

  end


  if not oltp_read_only then

  for i=1, oltp_index_updates do

      rs = db_query("UPDATE " .. table_name .. " SET k=k+1 WHERE id=" .. sb_rand(1, oltp_table_size))

  end

  for i=1, oltp_non_index_updates do

      c_val = sb_rand_str("###########-###########-###########-###########-###########-###########-###########-###########-###########-###########")

      query = "UPDATE " .. table_name .. " SET c='" .. c_val .. "' WHERE id=" .. sb_rand(1, oltp_table_size)

      rs = db_query(query)

      if rs then

        print(query)

      end

  end

  for i=1, oltp_delete_inserts do

  i = sb_rand(1, oltp_table_size)

  rs = db_query("DELETE FROM " .. table_name .. " WHERE id=" .. i)


  c_val = sb_rand_str([[

###########-###########-###########-###########-###########-###########-###########-###########-###########-###########]])

  pad_val = sb_rand_str([[

###########-###########-###########-###########-###########]])

  rs = db_query("INSERT INTO " .. table_name ..  " (id, k, c, pad) VALUES " .. string.format("(%d, %d, '%s', '%s')",i, sb_rand(1, oltp_table_size) , c_val, pad_val))

  end

  end -- oltp_read_only

  if not oltp_skip_trx then

      db_query(commit_query)

  end

end

---------------------------------------------------------------------

将里面的sbtest该文我们需要的数据表即可(有两处)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,258评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,335评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,225评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,126评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,140评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,098评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,018评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,857评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,298评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,518评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,678评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,400评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,993评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,638评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,801评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,661评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,558评论 2 352

推荐阅读更多精彩内容