一条sql语句在mysql中如何执行的
一条sql语句在mysql中如何执行的
连接器: 身份认证和权限相关(登录 MySQL 的时候)。
查询缓存: 执行查询语句的时候,会先查询缓存(MySQL 8.0 版本后移除,因为这个功能不太实用)。
分析器: 没有命中缓存的话,SQL 语句就会经过分析器,分析器说白了就是要先看你的 SQL 语句要干嘛,再检查你的 SQL 语句语法是否正确。
优化器: 按照 MySQL 认为最优的方案去执行。
执行器: 执行语句,然后从存储引擎返回数据。
具体看连接,内有查询和更新语句例子,还有redo log和binlog相关知识点,提一句,redo log是为实现事务的持久性,binlog是为了做机器备份和主从同步,另外还有个日志是undo log,存数据快照方便回滚和mvcc的快照读,为实现事务的持久性和原子性。