`
yangshen998
  • 浏览: 1247248 次
文章分类
社区版块
存档分类
最新评论

Mysql benchmark 的使用

 
阅读更多

1. select 语句来查看sql 语句执行的时间

我一直使用mysql 图形化工具来操作数据库,查看某条SQL 语句执行的时间也是通过图形化工具来查看。前两天遇到了一个问题,就是 怎 么样查看一个mysql执行一个sql 表达式所需的时间,也就是执行 where 条件的时间,通过 例如我想知道

to_days(MYDATE) - to_days(now()) <1 执行一次的时间 其中 MYDATE 是数据表中的一个时间戳字段。

如果单纯的用 select to_days(MYDATE) - to_days(now()) <1 大概是0.0011秒

2. benchmark 使用方法:

这里还有一种方法能够获取到 mysql 执行一个sql 语句或sql 表达式的 时间,并且可以由用户指定执行次数。通过执行大规模次数, 才能够获得比较稳定的 sql 执行时间。

select benchmark(num, exp) ; 其中 num 为执行次数,exp 为希望获得执行时间的表达式 ,不包括 sql 语句

select benchmark(1, to_days(2011-04-07) - to_days(now()) <1 ); 执行时间大概是 0.0011秒 ,可以计算表达式时间

select benchmark(1, select * from MYTABLE limit 0,40 ); Mysql 报错,说明EXP 不能为sql 语句,只能为表达式或函数

下面是对num 赋予不同的数值,查看执行不同次数所耗费的时间

select benchmark(100, to_days(2011-04-07) - to_days(now()) <1 ); 执行时间大概也是 0.0012秒

select benchmark(10000, to_days(2011-04-07) - to_days(now()) <1 ); 执行时间大概也是 0.0056秒

select benchmark(1000000, to_days(2011-04-07) - to_days(now()) <1 ); 执行时间大概也是 0.4454秒

为什么执行100次和执行 1次的时间耗费差不多呢? 这是因为可能被注入了缓存的缘故,因此benchmark 不能用来完成一种实际的 基准测试。

3. 使用benchmark 进行执行速度比较

如果我想比较 2011-01-01>'date("Y-m-d",time()) 和 to_days(2011-04-07) - to_days(now()) <1 两个表达式中哪 个表达式执行速度更快怎么办?

select to_days(2011-01-01)-to_days(now())<1 执行时间大概也是 0.0011秒

select 2011-01-01>'date("Y-m-d",time())' 执行时间大概也是 0.0011秒

通过这种方式是无法比较的。

select benchmark(1, 2011-01-01>'date("Y-m-d",time())') 执行时间大概也是 0.0011秒

select benchmark(1, to_days(2011-04-07) - to_days(now()) <1 ); 执行时间大概也是 0.0011秒

通过这种方式也无法比较,但是我们知道,mysql 使用内置函数肯定是要耗费一定的时间的,也就是 第二个表达式比第一个表达式执行速度更慢。

但在某些场合,还是可以比较两种表达式的执行速度的:

select benchmark(1, 2011-01-01>'date("Y-m-d",time())') 执行时间大概也是 0.0011秒

select benchmark(100, 2011-01-01>'date("Y-m-d",time())') 执行时间大概也是 0.0011秒

select benchmark(10000, 2011-01-01>'date("Y-m-d",time())') 执行时间大概也是 0.0013秒

select benchmark(1, 2011-01-01>'date("Y-m-d",time())') 执行时间大概也是 0.0249秒

通过上面的比较发现 2011-01-01>'date("Y-m-d",time()) 和 to_days(2011-04-07) - to_days(now()) <1

在大数据量比较时执行速度更快。

在实际的web 网页应用中也证实了这一点。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics