专栏首页软件开发-青出于蓝MySQL之sysbench测试 原

MySQL之sysbench测试 原

注: sysbench的版本是1.0.14,MySQL的版本是5.7,Linux是Ubuntu16,运行内存是4G,可用的CPU核数是4。   

准备工作:

  1.     安装sysbench,各个操作系统上如何安装sysbench,参考其Gtihub
  2.     我安装的sysbench版本是1.0.14,sysbench命令参数与网上很多给出的例子不同(sysbench-1.0.4版本上不支持"--test=" 或者"--oltp-table-name"),而Github上的sysbench也没有给出具体的例子说明,所以无奈只能Google,查到Stackoverflow上的有一个,有些sysbench参数就是参考这个Stackoverflow里面的来的,"sysbench --help"也没有我想要的参数列表说明。
  3.     创建名为foo的数据库,下面要使用这个数据库。

1.单表10万行数据测试

1.1 建一个拥有10w行的单表

    在ubuntu命令行中执行List-1中的命令,此时数据库foo中会新增一张表,表中10w行数据。

List-1

sysbench /usr/share/sysbench/oltp_read_only.lua --db-driver=mysql --table_size=100000 --mysql-host=localhost  --mysql-db=foo --mysql-user=root --mysql-password=密码 prepare

1.2 用sysbench的run命令

    在ubuntu命令行中执行List-2中的命令。

List-2

sysbench /usr/share/sysbench/oltp_read_only.lua --db-driver=mysql --table_size=100000 --mysql-host=localhost  --mysql-db=foo --mysql-user=root --mysql-password=密码 run

    得到的结果如下:

                                                              图1 run命令的结果

    图1中显示: 

    "transactions:   4244   (424.29 per sec.)",每秒事物数是424.29;

    "queries:          67904  (6788.64 per sec.)",每秒读写次数是6788;

    其它数据不太了解其代表什么。

1.3 最后用cleanup命令,清除写入的数据

    执行List-3中的命令后,foo中刚才新建的表被删除了。

List-3

sysbench /usr/share/sysbench/oltp_read_only.lua --db-driver=mysql --table_size=100000 --mysql-host=localhost  --mysql-db=foo --mysql-user=root --mysql-password=密码 cleanup

2. 建4张表,每张表100万行

    我们来测试数据量比较大的情况,建4张表(本来想建10张表的,虚拟机硬盘不够),每张表插入100万条数据

2.1 prepare命令,会自动建表,插入数据

List-4

sysbench /usr/share/sysbench/oltp_read_only.lua --db-driver=mysql --table_size=1000000 --tables=4 --mysql-host=localhost  --mysql-db=foo --mysql-user=root --mysql-password=密码 prepare

    如下图2所示,会多出4张表,

                                     图2 数据库foo里面多出4张表,每张表有100万条记录

2.2 执行run命令进行测试

List-5

sysbench /usr/share/sysbench/oltp_read_only.lua --db-driver=mysql --table_size=1000000 --tables=4 --mysql-host=localhost  --mysql-db=foo --mysql-user=root --mysql-password=密码 run

    结果如下所示

                                                图3 用sysbench的run命令测试的结果

    图3中显示:

    "transactions:    5959   (595.66 per sec.)",每秒事物数是595.66;

    "queries:           95344  (9530.59 per sec.)",每秒读写次数是9530.59;

    图3中的事物数和读写次数都比图1中的高,为什么会这样就不知道了,我只是将"--table_size=1000000 --tables=4"这俩个参数的值改变了。

2.3 执行sysbench的cleanup命令清除测试数据

List-6

sysbench /usr/share/sysbench/oltp_read_only.lua --db-driver=mysql --table_size=1000000 --tables=4 --mysql-host=localhost  --mysql-db=foo --mysql-user=root --mysql-password=jmd cleanup

    执行cleanup命令后,再去查看foo数据库,图2中的4张表已经不存在了。

注意:其实上面只是测只读模式,因为我们使用的是/usr/share/sysbench/oltp_read_only.lua,即read_only。看图1和图3中,SQL statics处,write的值都是0。

    安装完sysbench后,新增了一些oltp开头的文件(find / -name oltp*),如下List-7。

List-7

......
find: ‘/sys/kernel/debug’: Permission denied
find: ‘/root’: Permission denied
/usr/share/sysbench/oltp_delete.lua
/usr/share/sysbench/oltp_update_index.lua
/usr/share/sysbench/oltp_point_select.lua
/usr/share/sysbench/oltp_common.lua
/usr/share/sysbench/tests/include/oltp_legacy
/usr/share/sysbench/tests/include/oltp_legacy/oltp_simple.lua
/usr/share/sysbench/tests/include/oltp_legacy/oltp.lua
/usr/share/sysbench/oltp_read_only.lua
/usr/share/sysbench/oltp_write_only.lua
/usr/share/sysbench/oltp_read_write.lua
/usr/share/sysbench/oltp_insert.lua
/usr/share/sysbench/oltp_update_non_index.lua
find: ‘/etc/polkit-1/localauthority’: Permission denied
find: ‘/etc/ssl/private’: Permission denied
......

3.测读写都存在的模式

    这次使用/usr/share/sysbench/oltp_read_write.lua,即这次的测试,read、write都存在。测试的数据还是4张表,每张表100万数据。分别执行如下的List-8、List-9。

List-8

sysbench /usr/share/sysbench/oltp_read_write.lua --db-driver=mysql --table_size=1000000 --tables=4 --mysql-host=localhost  --mysql-db=foo --mysql-user=root --mysql-password=密码 prepare

    List-9

sysbench /usr/share/sysbench/oltp_read_write.lua --db-driver=mysql --table_size=1000000 --tables=4 --mysql-host=localhost  --mysql-db=foo --mysql-user=root --mysql-password=密码 run

    执行List-9中的命令后,得到如下图

                                                                                    图4 

    图4中显示:

    "transactions:     2137   (213.64 per sec.)",与图3对比,减少了385(595-213)。

    "queries:            42740  (4272.71 per sec.)",与图3对比,减少了5258(9530-4272)。

    与图3对比,图4中SQL Statics部分,write的值不再是0了。

注意:

  1.    上面的测试,我没有指定测试的线程个数,只是单线程去测试的,可以加上"--num-threas=线程个数"进行多线程测试。
  2.    如果想修改表的个数,修改参数"--tables"的值;如果想修改每张表中数据的条数,修改参数"--table_size"的值。
  3.    后续要思考如何优化数据库了,比如Buffer大小的设置等。

   也可以看看这篇,这是Centos上安装的,sysbench版本是1.1.0。

(adsbygoogle = window.adsbygoogle || []).push({});

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • MySQL之benchmark优化一 原

    环境: MySQL5.7,Ubuntu16 64位操作系统,4核CPU,8G运行内存

    克虏伯
  • Docker之批量删除镜像/容器脚本

    使用一段时间Docker之后,本地会有很多的没用了的镜像,逐条手动删除很费时,所以弄个脚本批量删除,如下,删除以192.168.33.10开头的镜像名称,只要这...

    克虏伯
  • 在Windows7中搭建Mysql Cluster

    登录windows时最好用Administor登录(特别是管理节点,用其它用户登录了一次,之后就搭建不了,总是出现"修改不了一些文件的错误"),不然程序没有权...

    克虏伯
  • Ubuntu 环境下远程连接 MySQL 数据库

    然后打开 vi /etc/mysql/mysql.conf.d/mysqld.cnf

    LeeCen
  • 真机环境下MySQL-Cluster搭建文档

    MySQL cluster 和 Oracle RAC 完全不同,它采用 无共享架构Shared nothing(shared nothing arc...

    伏草惟存
  • MySQL安装图解

    MySQL安装图解 一、MYSQL的安装 1、打开下载的mysql安装文件mysql-5.5.27-win32.zip,双击解压缩,运行“setup.exe”。...

    Java学习
  • Centos 7安装mysql-5.7.22

    wget https://mirrors.aliyun.com/epel/epel-release-latest-7.noarch.rpm

    py3study
  • centos 7.5安装mysql5.7.17

    压缩包连接:https://downloads.mysql.com/archives/community/

    云售后焦俊成
  • 写一个程序检查一个整数是2的幂?

    用户4645519
  • YUV Alpha Blending

    Alpha-Blending,是按照“Alpha”混合向量的值来混合源像素和目标像素的一种图像处理技术

    雪月清

扫码关注云+社区

领取腾讯云代金券