MySQL max_execution_time参数原理解析

MySQL max_execution_time参数解析

一、参数解释说明

参数max_execution_time用来控制select语句的最大执行时间,单位是毫秒,可以动态修改,分为session和global两种级别,如果设置为0的话,则证明不设限制。

二、使用示例

mysql> set net_read_timeout=2;
Query OK, 0 rows affected (0.00 sec)

mysql> select count(*) from t10 a,t10 b where a.name != b.name;
ERROR 3024 (HY000): Query execution was interrupted, maximum statement execution time exceeded
mysql>
mysql>
mysql> set session max_execution_time=10000;
Query OK, 0 rows affected (0.00 sec)

mysql> select count(*) from t10 a,t10 b where a.name != b.name;
ERROR 3024 (HY000): Query execution was interrupted, maximum statement execution time exceeded
mysql>

三、内部原理

MySQL在每次query请求发起前,会去执行is_timer_applicable_to_statement去检测此sql是否需要进行max_execution_time的监控,判断逻辑如下

/**
  Check whether max statement time is applicable to statement or not.


你可能感兴趣的:(MySQL-源码研究)