《MySQL是怎样运行的》读书笔记
这篇笔记主要记录一些阅读过程中遇到的一些小细节。
created: 11/6/2021
第1章–初识MySQL
基础知识
-
启动命令参数
-
-h 表示服务器进程所在的计算机的域名或者IP地址。如果在本机可以省略参数或localhost或127.0.0.1
-
-u 表示用户名,也能写成’–user = user_name’
-
-p 表示密码,也能写成’–password = 密码’
-
-
MySQL采用TCP作为服务器和客户端之间的网络通信协议,默认端口号为3306,可以通过
mysqld -Pxxxx
来改变 -
服务器处理客户端请求
- 连接管理
- 连接建立后如果断开,服务器不会马上销毁线程,而是将交互的线程缓存起来,有新的客户端连接就可以直接连接上,省去了频繁创建和销毁线程的开销。
- 采用TLS (Transport Layer Security)协议来对连接加密。
- 解析与优化
- 查询缓存
- 就是把查询结果缓存起来,方便第二次查询时直接使用,某些特殊的请求(第二次调用结果不同的)并不会缓存
- 查询缓存在MySQL 5.7.20开始不再推荐,在MySQL 8.0之后已经被移除!
- 语法解析
- 类似于编译过程,涉及词法解析、语法分析、语义分析等等。
- 查询优化
- 优化程序会对我们的MySQL语句进行优化,比如外连接转内连接,表达式简化,子查询转连接等等。
- 可以用EXPLAIN语句来查看某个语句的执行计划
- 查询缓存
- 存储引擎
- 功能:接收上层传下来的指令,然后对表中的数据进行读取或者写入操作。
- 连接管理
-
MySQL服务器处理请求的过程可以划分为两个
-
server层
- 连接管理、查询缓存、语法解析、查询优化这些功能并不涉及真实数据的功能属于server层
- 不同的存储引擎为server层提供统一的调用接口
- server层在判断某条记录符合要求后,先把记录发送到缓冲区,等到缓冲区满了再发给客户端,缓冲区大小由系统变量
net_buffer_length
控制。
-
存储引擎层
- 存储真实数据的功能属于存储引擎层
两者交互一般以记录为单位
-
-
常用存储引擎:InnoDB、 MyISAM、MEMORY(偶尔), InnoD是MySQL默认存储引擎(5.5.5版本后,之前为MyISAM)。
对存储引擎操作
-
SHOW ENGINE;
查看服务器程序支持的引擎- Support 表示引擎是否可用
- DEFALULT 默认引擎
- Comment 对引擎描述
- Transactions 事务处理
- XA 分布式事务
- Savepoints 事物部分回滚
-
mysql CREATE TABLE table_name( # 创建 建表语句 )ENGINE = 引擎名;
-
mysql ALTER TABLE 表名 ENGINE = 存储引擎名称; # 修改
第2章–启动选项和系统变量
启动选项、配置文件
命令行启动选项参数
-
只对当次启动生效
-
启动项前一般加
--
(长形式),多个单词间-
与_
连接等价,区分大小写
配置文件
//
//
目前暂时用不到,留个坑
//
//