首页 > MYSQL > MYSQL的BENCHMARK函数

MYSQL的BENCHMARK函数

2009年8月10日 admin 发表评论 阅读评论

MYSQL中提供了一个计算表达式性能的函数BENCHMARK。

语法

BENCHMARK(count,expr)

BENCHMARK会重复计算expr表达式count次,通过这种方式就可以评估出mysql执行这个expr表达式的效率。这个函数的返回值始终是0,但可以根据客户端提示的执行时间来得到BENCHMARK总共执行的所消耗的时间,如以下这个例子

mysql> SELECT BENCHMARK(1000000,ENCODE(’hello’,'goodbye’));
+———————————————-+|
BENCHMARK(1000000,ENCODE(’hello’,'goodbye’)) |
+———————————————-+|                                           
0                                                            |
+———————————————-
+1 row in set (4.74 sec)上面例子中的4.74 秒指的是在mysql客户端总共消耗的时间。
BENCHMARK函数只能测量数字表达式(scalar expression)的性能,虽然说表达式可以是一个子查询,但子查询返回的只能是单个值。在BENCHMARK(10, (SELECT * FROM t))  这个语句中,如果t表有多列或是t表中记录多于1行的话这个函数就会执行失败。BENCHMARK函数在执行多次的过程中sql的解析(parser)、优化(optimizer)、锁表(table locking)等操作只会进行一次,只有运行评估(runtime evaluation)会执行count次。 利用BENCHMARK,mysql就可以自动为我们多次执行表达式计算,从而获取比较平均的计算结果。

参考资源

MySQL的benchmark函数
        http://dev.mysql.com/doc/refman/5.1/en/information-functions.html#function_benchmark

分类: MYSQL 标签:
  1. 本文目前尚无任何评论.
  1. 本文目前尚无任何 trackbacks 和 pingbacks.