MySQL的BENCHMARK()函数
MySQL有一个内置的BENCHMARK()函数,可以测试某些特定操作的执行速度。 参 数可以是需要执行的次数和表达式。 表达式可以是任何的标量表达式,比如返回值 是标量的子查询或者函数。 该函数可以很方便地测试某些特定操作的性能,比如通过测试可以发现,MDS()函数比SHAl()函数要快:
mysql> set @input := 'hello world';
Query OK, 0 rows affected
mysql> SELECT BENCHMARK(1000000, MD5(@input));
+---------------------------------+
| BENCHMARK(1000000, MD5(@input)) |
+---------------------------------+
| 0 |
+---------------------------------+
1 row in set(2.78 sec)
mysql> SELECT BENCHMARK(1000000, SHA1
(@input));
+----------------------------------+
| BENCHMARK(1000000, SHA1(@input)) |
+----------------------------------+
| 0 |
+----------------------------------+
1 row in set(3.50 sec)
执行后的返回值永远是0, 但可以通过客户端返回的时间来判断执行的时间。 在这 个例子中可以看到MDS()执行比SHAl()要快。 使用BENCHMARK()函数来测试性能, 需要清楚地知道其原理,否则容易误用。 这个函数只是简单地返回服务器执行表达 式的时间,而不会涉及分析和优化的开销。 而且表达式必须像这个例子一样包含用户定义的变量,否则多次执行同样的表达式会因为系统缓存命中而影响结果。
虽然BENCHMARK()函数用起来很方便,但不合适用来做真正的基准测试,因为很难理解真正要测试的是什么,而且测试的只是整个执行周期中的一部分环节。
转载:https://blog.csdn.net/xiao__jia__jia/article/details/101641376
查看评论