// 对 从根儿上理解 MySQL 的学习记录和思考
MySQL 使用:1)启动 MySQL 服务器程序;
2)启动 MySQL 客户端程序;连接到服务器程序;
3)在客户端程序输入命令作为请求,发送到服务器程序;服务器程序接收请求,处理命令后将结果返回给客户端程序。
============================================================================
1. 客户端 / 服务器 架构
本质上是客户端程序和服务器程序,程序和硬件相依存
可以在同一台主机,一般是不同主机
客户端程序生成消息,包装后发送到服务器程序
服务器程序处理消息,根据实际情况发送给响应的客户端程序
============================================================================
2. 为什么配置环境变量?
在命令行下执行可执行文件时,需要给出相对路径或绝对路径
当该路径很长时,操作不便
可以将重复前缀目录设为环境变量 PATH 的值
该环境变量的含义是:当输入一个命令时,系统将在此变量定义的目录中依次查找
3. How about 系统变量?
4. 启动服务器程序
1)mysqld 命令
2)Windows 服务:
需要长时间运行某个程序,需要在计算机启动时一并启动
就会注册为一个 Windows 服务,操作系统会帮助管理
5. 启动客户端程序
成功启动服务器程序后,就可以启动客户端程序连接到服务器
bin 目录下有很多客户端程序
如:
mysql -h主机名 -u用户名 -p密码
mysql> 是一个客户端提示符,写在后面的命令发送给服务器
断开命令:quit / exit / q
6. 多个客户端程序
同一主机,多个cmd窗口
不同主机,使用局域网连接,指定好 IP 地址为主机名使用命令连接
============================================================================
7. 程序启动后,操作系统创建进程并做资源分配——操作系统
============================================================================
8. 客户端与服务器建立连接——计网
本质是进程之间的通信
1)TCP / IP
网络环境中,每台主机都有一个唯一的 IP 地址
采用 TCP 网络通信协议
当某个进程要通信,向操作系统申请一个端口号
IP + 端口号 可以唯一地确定一个进程
就可以通信了
默认申请 3306 端口
MySQL 服务器会默认监听 3306 端口
可以设置指定端口让服务器监听
2)命名管道和共享内存
3)Unix 域套接字文件
============================================================================
9. 服务器处理请求
1)连接管理
建立连接,客户端连接到服务器
服务器进程创建一个线程专门处理与客户端的交互,可重复使用
限制客户端数量
连接安全:
信息认证
SSL 安全套接字
2)解析与优化
查询缓存——刚刚查询过的请求和结果缓存起来
语法解析——分析文本,语法判断,提取涉及到的数据
查询优化——执行计划
3)存储引擎
封装了数据的存储和提取操作的模块
进行实际的数据操作,不同的引擎管理的表存储结构不同,采用的存取算法也不同
向上层提供统一的调用接口(存储引擎 API)
常用存储引擎:
InnoDB
MyISAM



