mysql压力测试

创建数据库,通过自定义随机函数、插入存储过程进行插入
使用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

猜你喜欢

转载自blog.csdn.net/m0_37827567/article/details/82980488