一、压力测试mysql
Mysqlslap性能测试mysql二中存储引擎(mysim、innodb)
Mysqlslap是mysql自带的基准的测试工具优点有:查询数据,语法简单,灵活容易使用,这个工具可以模拟多个客户端同时并发的向服务器发出查询更新,给出了性能测试数据而且提供了多种引擎的性能比较,mysqlslap为mysql性能优化前后提供了直观的依据
Mysqlslap一些参数
–concurrency代表并发的数量,多个可以用逗号隔开。如: concurrency 500,1000等
–engines代表要测试的引擎,可以有多个,用分隔符隔开。
–iterations代表运行这些测试多少次,以及运行多少次后,得到的结果
–auto-generate-sql-load-type代表要测试的是读还是写还是两者混合的。
–number-of-queries代表总共要运行多少次的查询,每个客户运行的查询数量可以用查询总数/并发数来计算
–debug-info嗲表要额外输出cpu以及内存的相关信息
–number-int-cols代表测试表中的integer类型的属性有多少个
–number-char-cols代表测试表中char类型字段的数量
等等。。。更多参数可以用mysqlslap –help查看。
1.查看 mysql数据库默认的最大连接数
mysql> show variables like ‘%max_connections%’;
默认是151,可以通过主配置 文件来添加max_connections=1024重启mysql再次查看
修改后的最大连接数
2.用自带的sql脚本来测试
mysqlslap --defaults-file=/etc/my.cnf --concurrency=1600,1620 --iterations=1--number-int-cols=20 number-char-cols=30 --auto-generate-sql --auto-generate-sql-add-autoincrement --auto-generate-sql-load-type=mixed --engine=myisam,innodb --number-of-queries=2000 -uroot-ppwd123 --verbose
也可以将测试结果以csv的格式拷贝到windows主机上如下:
mysqlslap --defaults-file=/etc/my.cnf --concurrency=1600,1620 --iterations=1 --number-int-cols=20 number-char-cols=30 --auto-generate-sql --auto-generate-sql-add-autoincrement --auto-generate-sql-load-type=mixed --engine=myisam,innodb --number-of-queries=6000 -uroot -ppwd123 --csv=/root/yankerp.csv
Linux已经生成,通过sz命令下载到本地windows
3.用我们自己定义的sql语句脚本测试
脚本内容如下:
#!/bin/bash HOSTNAME="localhost" PORT="3306" USERNAME="root" PASSWORD="123456" DBNAME="test1" TABLENAME="tb1" #create database mysql -h ${HOSTNAME} -P${PORT} -u${USERNAME} -p${PASSWORD} -e "drop database if exists ${DBNAME}" create_db_sql="create database if not exists ${DBNAME}" mysql -h ${HOSTNAME} -P${PORT} -u${USERNAME} -p${PASSWORD} -e"${create_db_sql}" #create table create_table_sql="create table if not exists ${TABLENAME}(stuid int not null primary key,stuname varchar(20) not null,stusex char(1) not null,cardid varchar(20) not null,birthday datetime,entertime datetime,address varchar(100)default null)" mysql -h ${HOSTNAME} -P${PORT} -u${USERNAME} -p${PASSWORD} ${DBNAME} -e"${create_table_sql}" #insert data to table i="1" while [ $i -le 20000 ] do insert_sql="insert into ${TABLENAME} values($i,'zhangsan','1','21276387261874682','1999-10-10','2017-10-24','beijingchangpingqu')" mysql -h ${HOSTNAME} -P${PORT} -u${USERNAME} -p${PASSWORD} ${DBNAME} -e"${insert_sql}" let i++ done #select data select_sql="select count(*)from${TABLENAME}" mysql -h ${HOSTNAME} -P${PORT} -u${USERNAME} -p${PASSWORD} ${DBNAME} -e"${select_sql}"
运行结束后,执行mysqlslap工具测试(过程稍慢)
mysqlslap--defaults-file=/etc/my.cnf --concurrency=500,600 --iterations=1--create-schema="yankerp" --query='select * from yankerp.bdqn'--engine=myisam,innodb --number-of-queries=2000 -uroot -ppwd123 --verbose
生成csv文件到windows
mysqlslap--defaults-file=/etc/my.cnf --concurrency=100,200 --iterations=1--create-schema="yankerp" --query='select * from yankerp.bdqn'--engine=myisam,innodb --number-of-queries=2000 -uroot -ppwd123--csv=/root/yankai.csv
工程中遇到的错误
调整以下并发数就解决了~~