1 初始MySQL
MySQL的服务器程序和客户端程序
我的电脑安装目录:
/opt/homebrew/Cellar/mysql/8.0.27/
启动MySQL服务器程序
mysqld
不常用,常用mysqld_safe
,它的优点:
- 间接调用mysqld并持续监控服务器的运行状态。
- 当服务器进程出现错误,可以帮助重启服务器程序。
- 输出错误日志
mysql.server
间接地调用mysqld_safe:
mysqld_multi
可以启动或停止多个服务器进程,也能报告他们的运行状态。
mysqld_safe
、mysql.server
、mysqld_multi
都是基于mysqld
的shell脚本。
启动MySQL客服端程序
|
|
关闭客服端命令:
quit
exit
\q
客服端与服务器连接的过程
客服端进程向服务器进程发送请求并得到响应的过程本质上是一个**==进程间通信==**的过程。MySQL支持几种进程通信方式。
1 TCP/IP
mysql服务端进程默认监听3306端口,使用-P
修改:
|
|
客服端程序连接:
|
|
2 命名管道和共享内存
windows特有的。
- 命名管道。分别在启动服务器程序和客服端程序时加上,
--enable-named-pipe
和--pipe
/--protocal=pipe
。 - 共享内存。分别在启动服务器程序和客服端程序时加上,
--shared-memory
和--protocal==memory
。
3 Unix域套接字
在类Unix的同一台机器上。
如果在启动客服端程序时没有指定主机名,或者指定的主机名为localhost,或者指定了--protocol=socket
,那么服务器程序和客服端程序就可以通过Unix域套接字通信了。
服务器程序默认监听的Unix域套接字文件是/tmp/mysql.sock
,修改方式:
|
|
对应的客服端程序启动时修改为:
|
|
服务器处理客服端请求
无论那种通信方式,最后都是实现客服端进程向服务器进程发送一段文本(MySQL语句),服务器进程处理后再向客服端进程返回一段文本(处理结果)。
服务端处理客服端的查询请求时,大致分为3部分:
1.连接管理
每当一个客户端进程连接到服务器进程时,服务器进程都会创建一个线程专门处理与这个客户端的交互;断开后线程不会被立即销毁,而是缓存起来,当另一个新的客户端再进行连接时,就会把这个线程分配给该新的客户端。
当然也需要限制可以同时连接到服务器的客服端数量。
2.解析与优化
- 查询缓存
MySQL5.7.20开始不推荐使用查询缓存,MySQL8.0直接删除了。
- 语法解析
从本质上说,这个从指定的文本中提取出需要的信息是一个编译过程,涉及词法解析、语法分析、语义分析等阶段。
- 查询优化
对我们的语句做一些优化,如外连接转换为内连接、表达式简化、子查询转为连接等等,最中结果是生成一个==执行计划==。
3.存储引擎
在物理上如何表示记录(逻辑上表是有一行一行的记录组成的),怎么从表中读取数据以及怎么把数据写入具体的物理存储器上,都是存储引擎负责的事情。
常用存储引擎
存储引擎的一些操作
当前服务器程序支持的存储引擎
|
|
结果中,Support列表示是否可用;Savepoints表示是否支持事务的部分回滚。
设置表的存储引擎
文章作者 andyron
上次更新 2025-07-17
许可协议 原创文章,如需转载请注明文章作者和出处。谢谢!