本文的主要围绕着下面这些问题展开的,在阅读之前可以先思考一下问题的答案是什么
SQL语句→缓存查询→解析器→优化器→执行器。
MySQL8.0之后为什么删除了查询缓存?
这个问题可以参考《纳尼?你居然不知道MySQL8删除查询缓存的原因》
MySQL的存储引擎采用了插件的形式,我们可以选择不同的存储引擎,首先要了解一不同的存储引擎各有什么特点
1、查看profiling是否开启sql
代码解读复制代码mysql> select @@profiling;
2、profiling=0代表关闭,我们需要把profiling打开,即设置为1:shell
代码解读复制代码mysql> set profiling=1;
然后我们执行一个SQL查询(你可以执行任何一个SQL查询):csharp
代码解读复制代码mysql> select * from wucai.heros;
查看当前会话所产生的所有profiles:sql
代码解读复制代码mysql> show Profiles;
刚才执行了两次查询,Query ID分别为1和2。如果我们想要获取上一次查询的执行时间,可以使用:mysql
代码解读复制代码mysql> show profile;
查询指定的Query ID,比如:sql
代码解读复制代码mysql> show profile for query 2;
一旦数据表有更新,缓存都将清空,因此只有数据表是静态的时候,或者数据表很少发生变化时,使用缓存查询才有价值,否则如果数据表经常更新,反而增加了SQL的查询时间。
代码解读复制代码mysql> select version();