创建数据库,通过自定义随机函数、插入存储过程进行插入
使用mysql自带压测工具(可以指定sql、并发、次数)
–concurrency代表并发数量
–iterations代表要运行这些测试多少次
–query代表要执行的语句集合
–create-schema代表执行数据库
–only-print 代表只打印出语句不执行
例:
mysqlslap --socket=/data/mariadb/3306/3306.sock --user=root --password=dida0901 --create-schema=yl --concurrency=1 --iterations=2 --query=slap.sql --only-print
mysqlslap --socket=/data/mariadb/3306/3306.sock --user=root --password=dida0901 --create-schema=yl --concurrency=1 --iterations=1 --query=slap.sql --commit=1 --only-print
随机字符串生成函数
CREATE DEFINER=`yanglun`@`%` FUNCTION `rand_string`(n int) RETURNS varchar(255) CHARSET utf8mb4
BEGIN
DECLARE char_str varchar(100) DEFAULT 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
DECLARE return_str varchar(255) DEFAULT '';
DECLARE i INT DEFAULT 0;
WHILE i < n DO
SET return_str = concat(return_str, substring(char_str, FLOOR(1 + RAND()*62), 1));
SET i = i+1;
END WHILE;
RETURN return_str;
RETURN '';
END
插入存储过程
CREATE DEFINER=`root`@`%` PROCEDURE `p_count`(IN n int)
BEGIN
DECLARE i INT DEFAULT 1;
DECLARE vote_num INT DEFAULT 0;
DECLARE vote_num2 INT DEFAULT 0;
DECLARE group_id INT DEFAULT 0;
WHILE i <= n DO
SET vote_num = FLOOR(1 + RAND() * 1000000);
SET group_id = FLOOR(1 + RAND()*9);
SET vote_num2 = FLOOR(1 + RAND() * 1000);
IF i%2 = 0 THEN
insert into yl.a (aa) values (rand_string(20)); #随便写
ELSE
insert into yl.a (aa) values (rand_string(24)); #随便写,加if只是为了制造不同数据
END IF;
SET i = i + 1;
END WHILE;
END