第 1 章 装作自己是个小白——重新认识 MySQL
1.1 MySQL 的客户端/服务器架构
日常使用 MySQL 的情景:
- 启动 MySQL 服务器程序。
- 启动 MySQL 客户端程序并连接到服务器程序。
- 在客户端程序中输入一些命令语句作为请求发送到服务器程序,服务器程序收到这些请求后,会根据请求的内容来操作具体的数据并向客户端返回操作结果。
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.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.8 关于存储引擎的一些操作
1.8.1 查看当前服务器程序支持的存储引擎
SHOW ENGINES;
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;