mysql 5.1:如何使用benchmark()命令测试对存储过程的调用?

ufk*_*ufk 0 mysql benchmarking stored-procedures

我正在尝试对存储过程进行基准测试.

  select benchmark(100000000,(select 1));
Run Code Online (Sandbox Code Playgroud)

这个基准有效

但以下基准不会:

do benchmark(1000,(call test_login_user('a')));
Run Code Online (Sandbox Code Playgroud)

它会产生以下错误:

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'call xpofb_login_user('a')))' at line 1
Run Code Online (Sandbox Code Playgroud)

任何想法如何解决这个问题?

Ike*_*ker 5

你不能用benchmark()做到这一点,但是你可以创建一个存储过程来完成它.

这是一个例子:

delimiter $$

create procedure benchmark_test_login_user (p_username varchar(100), 
  p_count int unsigned)
begin
  declare v_iter int unsigned;
  set v_iter = 0;
  while v_iter < p_count
  do
    call test_login_user(p_username);
    set v_iter = v_iter + 1;
  end while;
end $$

delimiter ;

call benchmark_test_login_user('a',1000);
Run Code Online (Sandbox Code Playgroud)