首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mysql 5.1:如何使用benchmark()命令测试对存储过程的调用?

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

Stack Overflow用户
提问于 2010-08-18 00:34:31
回答 2查看 4.7K关注 0票数 0

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

代码语言:javascript
复制
  select benchmark(100000000,(select 1));

这个基准测试是可行的

但是下面的基准测试没有:

代码语言:javascript
复制
do benchmark(1000,(call test_login_user('a')));

它会产生以下错误:

代码语言:javascript
复制
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

有什么办法解决这个问题吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-08-18 00:41:47

你不能

http://dev.mysql.com/doc/refman/5.0/en/information-functions.html#function_benchmark

只能使用标量表达式。尽管表达式可以是子查询,但它必须返回单列,最多只能返回一行。例如,如果表t包含多列或多行,则BENCHMARK(10,(SELECT * FROM t))将失败。

票数 1
EN

Stack Overflow用户

发布于 2010-08-18 02:11:02

使用benchmark()不能做到这一点,但可以创建一个存储过程来做到这一点。

下面是一个例子:

代码语言:javascript
复制
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);
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3504785

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档