标签:十三 seconds number -- user 测试 queries 压力 id
1、生成一个100W数据的表,可参考: 快速生成100W数据mysql表
mysql> select count(*) from vote_record;
+----------+
| count(*) |
+----------+
| 1000000 |
+----------+
1 row in set (0.12 sec)
mysql> select * from vote_record limit 5;
+----+----------------------+---------+----------+---------------------+
| id | user_id | vote_id | group_id | create_time |
+----+----------------------+---------+----------+---------------------+
| 1 | RszjFhc2pOEE7vZjq0AJ | 633 | 42 | 2021-02-14 18:43:26 |
| 2 | p7cvK4Xq3QVWJG20LBB3 | 113 | 89 | 2021-02-14 18:43:26 |
| 3 | i8DAVFnKtW9LdEpVfjD3 | 107 | 82 | 2021-02-14 18:43:26 |
| 4 | ZNSQpmqRSDmMFNRKYvry | 78 | 22 | 2021-02-14 18:43:26 |
| 5 | 3XrcwQwUPhJDQ92zzZ4e | 629 | 92 | 2021-02-14 18:43:26 |
+----+----------------------+---------+----------+---------------------+
5 rows in set (0.00 sec)
2、未做索引跟优化之前的测试
测试语句如下,注意建表时已经设置了user_id为辅助索引,需要删除
#删除user_id的辅助索引
mysql> alter table vote_record drop index index_user_id;
#使用2000个线程进行压力测试查询
mysqlslap --defaults-file=/etc/my.cnf \
--concurrency=100 --iterations=1 --create-schema='test' \
--query="select * from school.vote_record where user_id='RszjFhc2pOEE7vZjq0AJ'" engine=innodb \
--number-of-queries=2000 -uroot -p123 -verbose
#登录mysql可以看到有2000个线程正在查询
mysql> show processlist;
3、花费时间如下
$ mysqlslap --defaults-file=/etc/my.cnf \
> --concurrency=100 --iterations=1 --create-schema='test' \
> --query="select * from school.vote_record where user_id='RszjFhc2pOEE7vZjq0AJ'" engine=innodb \
> --number-of-queries=2000 -uroot -p123 -verbose
mysqlslap: [Warning] Using a password on the command line interface can be insecure.
Benchmark
Running for engine rbose
Average number of seconds to run all queries: 398.598 seconds
Minimum number of seconds to run all queries: 398.598 seconds
Maximum number of seconds to run all queries: 398.598 seconds
Number of clients running queries: 100
Average number of queries per client: 20
4、给user_id列创建索引
mysql> alter table vote_record add unique index uidx_id(user_id);
5、花费时间如下
$ mysqlslap --defaults-file=/etc/my.cnf \
> --concurrency=100 --iterations=1 --create-schema='test' \
> --query="select * from school.vote_record where user_id='RszjFhc2pOEE7vZjq0AJ'" engine=innodb \
> --number-of-queries=2000 -uroot -p123 -verbose
mysqlslap: [Warning] Using a password on the command line interface can be insecure.
Benchmark
Running for engine rbose
Average number of seconds to run all queries: 0.138 seconds
Minimum number of seconds to run all queries: 0.138 seconds
Maximum number of seconds to run all queries: 0.138 seconds
Number of clients running queries: 100
Average number of queries per client: 20
You have new mail in /var/spool/mail/root
可以看到速度快的一批
学习来自:郭老师博客,老男孩深标DBA课程 第四章
标签:十三,seconds,number,--,user,测试,queries,压力,id 来源: https://www.cnblogs.com/tz90/p/14403974.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。