MySQL 是怎样运行的:从根上理解 MySQL——第 1 章

4,904 阅读3分钟

第 1 章 装作自己是个小白——重新认识 MySQL

1.1 MySQL 的客户端/服务器架构

日常使用 MySQL 的情景:

  1. 启动 MySQL 服务器程序。
  2. 启动 MySQL 客户端程序并连接到服务器程序。
  3. 在客户端程序中输入一些命令语句作为请求发送到服务器程序,服务器程序收到这些请求后,会根据请求的内容来操作具体的数据并向客户端返回操作结果。

1.2 MySQL 的安装

1.2.1 bin 目录下的可执行文件

1.3 启动 MySQL 服务器程序

1.4 启动 MySQL 客户端程序

1.5 客户端与服务器连接的过程

1.5.1 TCP/IP

在网络环境下,每台计算机都有一个唯一的 IP 地址,如果某个进程有需要采用 TCP 协议进行网络通信方面的需求,可以向操作系统申请一个端口号,它的取值范围是0~65535。这样在网络中的其他进程就可以通过 IP 地址 + 端口号的方式来与这个进程连接,这样进程之间就可以通过网络进行通信了。

1.5.2 命名管道和共享内存

命名管道和共享内存是 Windows 操作系统中的两种进程间通信方式。

1.5.3 UNIX 域套接字

1.6 服务器处理客户端请求

1.6 服务器处理客户端请求.png

1.6.1 连接管理

MySQL 服务器会为每一个连接进来的客户端分配一个线程,但是线程分配的太多了会严重影响系统性能,所以我们也需要限制一下可以同时连接到服务器的客户端数量。

1.6.2 解析与优化

16.2.1 查询缓存

MySQL 服务器程序会把刚刚处理过的查询请求和结果缓存起来,如果下一次有一模一样的请求过来,直接从缓存中查找结果。

MySQL 的缓存系统会监测涉及到的每张表,只要该表的结构或者数据被修改了,那使用该表的所有高速缓存查询都将变为无效并从高速缓存中删除。

小贴士

从 MySQL 5.7.20 开始,不推荐使用查询缓存,并在 MySQL 8.0 中删除。

16.2.2 语法解析

因为客户端程序发送过来的请求只是一段文本而已,所以 MySQL 服务器程序首先要对这段文本做解析。

16.2.3 查询优化

MySQL 的优化程序会对我们的语句做一些优化,我们可以使用 EXPLAIN 语句来查看某个语句的执行计划。

1.6.3 存储引擎

MySQL 服务器把数据的存储和提取操作都封装到了一个叫存储引擎的模块。

1.7 常用存储引擎

1.7 常用存储引擎 - 1.png

1.7 常用存储引擎 - 2.png

1.8 关于存储引擎的一些操作

1.8.1 查看当前服务器程序支持的存储引擎

SHOW ENGINES;

1.8.1 查看当前服务器程序支持的存储引擎.png

1.8.2 设置表的存储引擎

我们可以为不同的表设置不同的存储引擎。

1.8.2.1 创建表时指定存储引擎
CREATE TABLE engine_demo_table ( i INT ) ENGINE = MyISAM;
1.8.2.2 修改表的存储引擎
ALTER TABLE engine_demo_table ENGINE = INNODB;