SHOW GLOBAL STATUS like 'Thread%';
SHOW FULL PROCESSLIST
show GLOBAL VARIABLES like 'wait_timeout';
show VARIABLES like 'max_con%';
MySQL会话级别
show VARIABLES like 'query%';
客户端链接:客户端发起链接请求,服务端检查链接请求的口令,成功则允许链接;TCP链接成功之后,客户端则可以向服务端发起CRUD请求。
查询缓存:如果用户开启缓存,则查询过的SQL将以map的形式存储,并且包含有该条语句的相关权限;如果命中查询缓存,则校检权限,满足后返回。
解析器:进行词法(对每个单词解析)和语法(对关键字、表、域解析)的解析,生成解析树。
预处理器:进行语义解析(如表是否存在等)和权限解析(提交请求的用户是否有权限),生成解析树。
优化器:由于每条SQL的执行过程有很多种,MySQL内置的规则将计算以何种方式执行最优,并返回最优执行计划。(只是内置的规则认为最优,并不代表实际上最优)。
执行器:执行器以执行计划为参数,调用存储引擎(实际上不通的存储引擎,提供了统一的API),调用获取到结果后,如开启缓存,一边写入缓存一边返回给用户。当然,数据的修改新增删除等,实际上是在数据库内置的buffer pool中实现的。
buffer pool
使用LRU算法淘汰,buffer pool有很多的页,一个页大小为4kb,为了使其中的内容写入磁盘,加入了redo log文件,以便故障时恢复至内存,再同步到磁盘。
redo log重做日志:文件用于崩溃故障恢复,不能用作数据恢复,采用顺序IO操作。
binlog文件可解析后,用作数据恢复。
undo log回滚日志:修改数据记录之前的状态,以便发生故障恢复,
存储引擎:不通的存储引擎,数据再磁盘上的组织和存储方式不同
磁盘:数据实际存储的地址空间