MySQL阅读笔记——1.MySQL架构

  MySQL后台服务器进程默认名称mysqld,客户端名称mysql,mysqld_safe是一个启动脚本,间接调用mysqld还会启用监控进程产出日志。systemctl start mysqld.service 会调用mysqld_safe

连接管理、查询缓存、语法解析、查询优化这些逻辑层面的划分为MySql server,MySQL server提供统一调用接口(存储引擎API),数据的真实存储划分为 存储引擎 功能。

MySQL将查询结果逐条返回给客户端,只是在客户端进行收集后汇总后才呈现给用户

连接管理

  MySQL为每一个连接都创建一个线程,断开连接不会立即销毁,缓存起来。MySQL建立连接成本很高,除了TCP三次握手,还要做登陆权限判断,以及获取连接的数据读写权限

解析优化

查询缓存

  每个客户端线程共享查询缓存,缓存并不智能,查询请求有任何字符不同或者调用了系统函数,都不会进行缓存。MySQL缓存系统会监控每张表,只要表的数据或者结构改变则该表的所有查询缓存全部失效。查询缓存需要在服务器单独维护造成一部分开销,因此在MySQL8中删除,因为更新表的时候会将该表的所有查询缓存全部清除。

语法解析

  词法解析、语法分析,语义分析等

查询优化

  可以使用EXPLAIN查看sql执行计划进行查询优化。从MySQL 5.7.20开始,不推荐使用查询缓存,并在MySQL 8.0中删除

WAL技术,全称Write-Ahead Logging,将数据先写入日志(顺序写),再写入磁盘。InnoDB引擎写入记录前线顺序写入redo日志,之后在系统空闲的时候将undo日志操作写入到磁盘,binlog是server层的归档日志

存储引擎

  存储引擎以前叫“表处理器”,存储引擎是负责对表中的数据进行提取和写入工作的,我们可以为不同的表设置不同的存储引擎,也就是说不同的表可以有不同的物理存储结构,不同的提取和写入方式。默认引擎:InnoDB具备外键功能的事务存储引擎,MyISAM不支持事务。

 

原文地址:https://www.cnblogs.com/leon618/p/13783175.html