数据库的操做方式有许多种,可是MySql的工做流程数怎样的呢?
客户端mysql
执行sql语句与服务器进行链接
查询缓存redis
执行下面的语句查看MySql默认缓存是否关闭
show variables like 'query_cache%';
默认是关闭的,咱们在使用的通常不使用默认的缓存,都是使用一些专门的缓存器,如 redis,还有Mybatis的一级缓存之类的;
咱们不是用MySql默认的缓存主要是由于sql语句改变或者任意一条数据发生变化都直接失效了;
解析器和预处理sql
咱们在查询的时候为何sql语句出现语法的错误时候会报错呢?
这就是依靠解析器和预处理器来进行处理解析的
解析器:会对一个完整的sql语句进行打碎,获得一个个单词,获得的是什么类型的语句 预处理器:根据MySql的语句规则,对sql进行语法的解析,生成数据结构,获得一个解析树;
查询优化器数据库
咱们所使用的sql语句到mysql服务器中不是最终结果,而优化器会对解析器生成的解析树生成不一样的执行计划,选择最优的执行计划,而mysql中使用的优化器是基于开销的优化器,咱们要选用开销最小的优化器;
在使用sql语句的时候能够使用EXPLAIN
关键字加在语句的最前面查看执行计划;
存储引擎缓存
咱们的数据存储的数据库中,对于不一样的存储引擎对于不一样的需求进行而建立的;
`show table status from `tableName`;`
使用上述语句能够查看使用的存储引擎
若是对数据一致性要求比较高,须要事务支持,能够选择 InnoDB。 若是数据查询多更新少,对查询性能要求比较高,能够选MyISAM。 若是须要一个用于查询的临时表,能够选择 Memory。