mysql 高性能压力测试_mysql 高性能压力测试(总结了好久)

前言:根据业务需要,需测试mysql性能和压力测试.这里我说下测试方法和测试过程以及测试中出错的问题估计很多人跟我一样要测试mysql的性能压力,网上找了很多资

前言:根据业务需要,需测试mysql 性能和压力测试.

这里我说下测试方法和 测试过程以及测试中出错的问题

估计很多人 跟我一样 要测试mysql 的性能 压力,网上找了很多资料有很多,但是很乱,所以这里我做个总结,拿自己的真实服务器测试的。并且 想测多少数据 都能模拟出来!这里只介绍方法。

MySQL从5.1.4版开始带有一个压力测试工具mysqlslap,通过模拟多个并发客户端访问

mysql来执行测试。[root@localhost smacks]# mysql -V

mysql Ver 14.14 Distrib 5.1.69, for redhat-linux-gnu (x86_64) using readline 5.1

mysqlslap --delimiter=";" --create="CREATE TABLE a (b int);INSERT INTO a VALUES (23)" --query="SELECT * FROM a" --concurrency=50 --iterations=200 -uadmin -p123456–auto-generate-sql, -a

自动生成测试表和数据

–auto-generate-sql-load-type=type

测试语句的类型。取值包括:read,key,write,update和mixed(默认)。

–number-char-cols=N, -x N

自动生成的测试表中包含多少个字符类型的列,默认1

–number-int-cols=N, -y N

自动生成的测试表中包含多少个数字类型的列,默认1

–number-of-queries=N

总的测试查询次数(并发客户数×每客户查询次数)

–query=name,-q

使用自定义脚本执行测试,例如可以调用自定义的一个存储过程或者sql语句来执行测试。

–create-schema

测试的schema,MySQL中schema也就是database

–commint=N

多少条DML后提交一次

–compress, -C

如果服务器和客户端支持都压缩,则压缩信息传递

–concurrency=N, -c N

并发量,也就是模拟多少个客户端同时执行select。可指定多个值,以逗号或者–delimiter参数指定的值做为分隔符

–engine=engine_name, -e engine_name

创建测试表所使用的存储引擎,可指定多个

–iterations=N, -i N

测试执行的迭代次数

–detach=N

执行N条语句后断开重连

–debug-info, -T

打印内存和CPU的信息

–only-print

只打印测试语句而不实际执行

mysqlslap -a --concurrency=50,100 --number-of-queries 1000 --iterations=5 --engine=myisam,innodb --debug-info -uadmin -p123456

分别 测试 myisam 和 innodb 引擎Benchmark

Running for engine myisam

Average number of seconds to run all queries: 0.638 seconds

Minimum number of seconds to run all queries: 0.565 seconds

Maximum number of seconds to run all queries: 0.924 seconds

Number of clients running queries: 50

Average number of queries per client: 20

Benchmark

Running for engine myisam

Average number of seconds to run all queries: 0.691 seconds

Minimum number of seconds to run all queries: 0.686 seconds

Maximum number of seconds to run all queries: 0.696 seconds

Number of clients running queries: 100

Average number of queries per client: 10

Benchmark

Running for engine innodb

Average number of seconds to run all queries: 13.189 seconds

Minimum number of seconds to run all queries: 12.886 seconds

Maximum number of seconds to run all queries: 13.337 seconds

Number of clients running queries: 50

Average number of queries per client: 20

Benchmark

Running for engine innodb

Average number of seconds to run all queries: 12.449 seconds

Minimum number of seconds to run all queries: 12.299 seconds

Maximum number of seconds to run all queries: 12.592 seconds

Number of clients running queries: 100

Average number of queries per client: 10

这个工具 无法 自己规定 多少数据,所以我后来 有拿了 super smack 工具测试

要去网上下载 vegan.net/tony/supersmack/super-smack-1.3.tar.gz

tar zxvf super-smack-1.3.tar.gz

cd super-smack-1.3

./configure --prefix=/usr/local/super-smack-1.3 --with-mysql=/usr/local/mysql/ --with-mysql-lib=/usr/local/mysql/lib/mysql/ --with-mysql-include=/usr/local/mysql/include/mysql/

编译过程后 make 会报错重点说明一下--with-mysql的编译配置:

编译的时候要把/usr/lib64目录下的libmysqlclient.so.16放到/usr/lib目录下,否则会出现下面的错误:

configure: error: Could not find libmysqlclient in ' /usr/lib /usr/lib/mysql

/usr/local/lib /usr/local/lib/mysql

/usr/local/mysql/lib

configure: error: Could not find mysql.h in ' /usr/include /usr/include/mysql

/usr/local/include /usr/local/include/mysql

/usr/local/mysql/include'

由于我的mysql是自行编译的,所以我这样操作

cd /usr/include; ln -s /usr/local/mysql/include/mysql

cd /usr/lib; ln -s /usr/local/mysql/lib/mysql

而且还要修改配置文件dictionary.h: In member function ‘void Unique_dictionary::set_template(const char*)’:

dictionary.h:93:28: error: ‘strlen’ was not declared in this scope

super-smack.cc: In function ‘void set_parse_file(char*)’:

super-smack.cc:65:55: warning: deprecated conversion from string constant to ‘char*’

super-smack.cc: In function ‘void set_db_type(const char*)’:

super-smack.cc:72:48: warning: deprecated conversion from string constant to ‘char*’

super-smack.cc: In function ‘void print_engines()’:

super-smack.cc:126:55: error: ‘strlen’ was not declared in this scope

make[2]: *** [super-smack.o] 错误 1

make[1]: *** [all-recursive] 错误 1

make: *** [all-recursive-am] 错误 2

要修改相应的配置文件才行编译之前修改文件super-smack-1.3/src/query.cc

第193行:

< int len = 0, num_recs = 0;

修改成:

> long len = 0; int num_recs = 0;

第199,200行

< int str_len = (*i).first.length();

< if((unsigned)p + str_len + 3 *sizeof(int) < (unsigned)p_end )

修改成:

> long str_len = (*i).first.length();

> if((long)p + str_len + 3 *sizeof(int) < (long)p_end )

第219行

< len = (unsigned)p - (unsigned)buf;

修改成:

> len = (long)p - (long)buf;

这个我是看了相应教程 找了好久才发现的!make

make install

介绍相应参数:

开头要修改 密码默认文件

vi select-key.smack

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值