1.MySQL C/S模型
Server(服务端): mysqld
Client(客户端):
socket:仅本地连接使用
tcp/ip :应用连接使用
TCP\IP方式(远程、本地):
mysql -uroot -p123 -h 10.0.0.51 -P3306
Socket方式(仅本地):
mysql -uroot -p123 -S /tmp/mysql.sock
2.实例
mysqld ----->master thread ------->干活的线程+育分配的内存结构
boss 经理 员工 办公室
3.mysqld的程序结构
3.1MySQL的专用管理和操作命令SQL
DDL 数据定义语言
DCL 数据控制语音
DML 数据操作语言
DQL 数据查询语言
3.2 SQL语句的执行过程
select user,host from mysql.user;
(1) mysql -uroot -pxxx
3.2.1 连接层
(1)提供连接协议
sokcet
TCP\IP
(2)验证user password host port(端口号)
(3)提供连接线程
show processlist;
功能:接受SQL语句,返回结果
3.2.2 SQL层
(1)语法检查和SQL_MODE检查
(2) 语义检查和权限检查
(3) 解析预处理,生成解析树(执行计划树)
(4)优化会根据自带算法,评估最优的方案(代价模型算法)
代价:cpu io mem
(5) 选择最优的方案进行执行SQL
(6) 提供查询缓存(默认是没有开启的),会使用redis tair替代查询缓存功能
(7) 提供日志记录(日志管理章节):binlog默认是没开启的。
3.2.3 存储引擎层
相当于文件系统,将数据取出,再交给SQL层结构化成表,返回给用户。