MySQL - 为什么同一个存储过程在不同的时间执行?

时间:2014-07-17 08:59:50

标签: mysql performance stored-procedures

在MySQl中,我正在检查我的存储过程需要执行的时间。为了测试它,我做了以下事情:

#1
mysql> call getSnowTemp(3,0);
9 rows in set (2.12 sec)
Query OK, 0 rows affected (2.13 sec)

#2
mysql> call getSnowTemp(3,0);
9 rows in set (1.90 sec)
Query OK, 0 rows affected (1.92 sec)

#3
mysql> call getSnowTemp(3,0);
9 rows in set (1.65 sec)
Query OK, 0 rows affected (1.67 sec)

#4
mysql> call getSnowTemp(3,1);
13 rows in set (1.56 sec)
Query OK, 0 rows affected (1.58 sec)

#5
mysql> call getSnowTemp(3,2);
7 rows in set (0.84 sec)
Query OK, 0 rows affected (0.85 sec)

#6
mysql> call getSnowTemp(3,3);
2 rows in set (0.73 sec)
Query OK, 0 rows affected (0.74 sec)

#7
mysql> call getSnowTemp(3,0);
9 rows in set (0.63 sec)
Query OK, 0 rows affected (0.64 sec)

我观察到了我没想到的行为,并出现了以下问题:

  1. 为什么执行#1,#2和#3会给我们不同的执行时间?

  2. 为什么所有存储过程的执行都有一个“改进趋势”,这意味着每次下一次执行都会在更短的时间内执行(意味着在同一个MySQL会话中,我希望在退出之后在它中将再次显示与上述相同的行为)? (比较#3与#7的执行情况)

  3. 如果需要,我可以提供存储过程的查询,但我认为它与问题没有关系。注意:在测试期间,执行存储过程的表保持不变(意味着没有插入行)。

0 个答案:

没有答案