一次使用Super Smack进行MySQL benchmarking的完整经历 – 上篇:安装

MySQL中一个被索引了的列,如果在某些行的数据是null,这对性能的影响倒底有多大? 这个需要做下benchmarking才知道。

所有相关工具中, mysqlslap应该是最轻量的; 但它的可控性实在太弱,连让测试者自己造数据都做不到。

经过比较后,我发现最适合的工具应该是Super Smack.  用它做完测试后,结论很简单:被索引列是否可空,对性能的影响很小。

对我来说,更大的收获是学会了用专门的工具进行sql Benchmarking. 由于Super Smack是一个非常简陋的软件,安装、使用它的过程非常痛苦,痛苦到不停地想放弃。

然而。。。还是。。。

废话少说,先说下安装。

在64位CentOS上安装Super Smack

1.下载

传说中的 Tony Bourke维护的版本已经废了(网站都关了),我们只能从这里下载:
https://github.com/tmountain/Super-Smack

2.安装mysql client相关的lib

直接./configure会出一堆错。你要先安装

yum install mysql-devel

由于Super Smack不会去lib64目录下找lib, 你还得把相关lib“复制”到/usr/lib目录中。

ln -s /usr/lib64/mysql/libmysqlclient_r.so.16.0.0 /usr/lib/libmysqlclient.so

3. 还要改一下源码中的一个头文件

在dictionary.h加入 #include <string.h>

4. 接下来正常安装

./configure --with-mysql
make
make install

5.试运行

#从自带的smack中复制一个出来,免得把原来的改坏了
cp smacks/select-key.smack smacks/my.smack

接下来修改my.smack里面的mysql配置,包括client admin和client smacker1的user, pass, host, db等。按照这个smack的写法,admin用户要有ddl权限,smacker1用户要有修改和查询的权限。

另外一个要修改的是 socket "/tmp/mysql.sock" . 你的mysql.sock文件的路径未必是这个样子,所以要把它们替换成真实的路径,比如

$ find / -name "mysql.sock"  #mysqld要先启起来才能找到这个文件
#输出:/var/lib/mysql/mysql.sock

最后运行一下Super Smack

$super-smack smacks/my.smack 10 100 #10个并发client,每个client执行100次

输出

引用

Query Barrel Report for client smacker1

connect: max=1ms  min=0ms avg= 0ms from 10 clients

Query_type num_queries max_time min_time q_per_s

select_index 2000 0 0 19132.17

我走了不少弯路才总结出这些经验。

后一篇中我们将搭建测试环境,按照测试场景配置新的smack, 最后执行测试。

Leave a Comment

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.