MySQL连接
客户端发起连接请求,通过连接器连接,加载系统数据库用户权限,连接管理对象管理权限,判断是否有执行操作权限,然后执行操作。
MySQL读取磁盘数据,调用系统内核,内核调用驱动程序把数据加载到内核的内存,再复制到用户空间的内存之中
基本逻辑结构
MySQL执行查询语句,先查找缓冲区是否有语句对应的key,没有就进行语法分析(检查语句是否正确),语法正确之后进行语句优化(是否有索引字段,先查哪张表),执行器调用存储引擎接口,存储引擎查询对应的数据文件,返回结果集给执行器,执行器判断如果开启缓存,会把结果集以key/value形式存入缓冲区,再把结果返回给客户端。
MySQL缓存
My.cnf 中配置缓存query_cache_type(0,1,2)
0:关闭缓存;1:所有表都缓存;2:按需要缓存
如果设置为2,要对test表缓存: Select SQL_CACHE * from test;
MySQL日志
Bin Log
Binlog是逻辑日志,不限制大小,不覆盖以前的日志。
Binlog恢复数据:
End_log_pos每个操作断点;
BEGIN COMMIT 一个事物
ReDo Log日志
记录InnoDB存储引擎的事务日志,先写日志再写磁盘。
innodb_flush_log_at_trx_commit参数:
设置为0:用户提交,先写到Log Buffer,每间隔一秒写入OS Buffer(用户空间)并调用方法写入日志文件。
设置为1:用户提交,先写到log buffer,直接写入OS Buffer(用户空间)并调用方法写入日志文件。
设置为2:直接写入用户空间并调用方法写入日志文件。