mysql压力测试并优化_MySQL压力测试索引优化效果演示全过程
1、模擬數據庫數據
drop database if exists oldboy;
create database oldboy charset utf8mb4 collate utf8mb4_bin;
use oldboy;
create table t_100w (id int,num int,k1 char(2),k2 char(4),dt timestamp);
delimiter //
create procedure rand_data(in num int)
begin
declare str char(62) default 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
declare str2 char(2);
declare str4 char(4);
declare i int default 0;
while i
set str2=concat(substring(str,1+floor(rand()*61),1),substring(str,1+floor(rand()*61),1));
set str4=concat(substring(str,1+floor(rand()*61),2),substring(str,1+floor(rand()*61),2));
set i=i+1;
insert into t_100w values (i,floor(rand()*num),str2,str4,now());
end while;
end;
//
delimiter ;
插入100w條數據:
call rand_data(1000000);
commit;
2、檢查數據可用性
select count(*) from oldboy. t_100w;
select table_name,table_rows from information_schema.tables where table_schema='oldboy';
select * from t_100w where id<5;
3、在沒有優化之前我們使用mysqlslap來進行壓力測試
例子1:模擬100個用戶同時做20次查詢
mysqlslap --defaults-file=/etc/my.cnf \
--concurrency=100 --iterations=1 --create-schema='oldboy' \
--query="select * from oldboy.t_100w where k2='780P'" engine=innodb \
--number-of-queries=2000 -uroot -p123456 -verbose
執行上述數據需要花費600秒
例子2:模擬10個用戶同時做20次查詢
mysqlslap --defaults-file=/etc/my.cnf \
--concurrency=10 --iterations=1 --create-schema='oldboy' \
--query="select * from oldboy.t_100w where k1='ab' order by k2;" engine=innodb \
--number-of-queries=200 -uroot -p123456 -verbose
執行上述數據需要花費59秒
3.查看索引執行計劃
use oldboy;
desc t_100w;
show index from t_100w;
例子1:
desc select * from oldboy.t_100w where k2='780P';(type為all)
例子2:
desc select * from oldboy.t_100w where k1='ab' order by k2;(type為all)
4.創建索引優化
例子1:
alter table t_100w add index k2(k2);
desc select * from oldboy.t_100w where k2='780P';(type為ref)
例子2:
alter table t_100w add index k1k2(k1,k2);
desc select * from oldboy.t_100w where k1='ab' order by k2;(type為ref)
5、優化之后使用mysqlslap來進行壓力測試
例子1:模擬100個用戶同時做20次查詢
mysqlslap --defaults-file=/etc/my.cnf \
--concurrency=100 --iterations=1 --create-schema='oldboy' \
--query="select * from oldboy.t_100w where k2='780P'" engine=innodb \
--number-of-queries=2000 -uroot -p123456 -verbose
執行上述數據需要花費0.169秒
例子2:模擬10個用戶同時做20次查詢
mysqlslap --defaults-file=/etc/my.cnf \
--concurrency=10 --iterations=1 --create-schema='oldboy' \
--query="select * from oldboy.t_100w where k1='ab' order by k2;" engine=innodb \
--number-of-queries=200 -uroot -p123456 -verbose
執行上述數據需要花費0.124秒
總結
以上是生活随笔為你收集整理的mysql压力测试并优化_MySQL压力测试索引优化效果演示全过程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 测试mysql安装成功_MySQL安装之
- 下一篇: 数据库分片教程mysql_简述MySQL