**
1.建立连接
通过客户端/服务器端通信协议与mySql建立连接,mysql客户端与服务器端的通信方式是:半双工。对每一个MySQL的连接,时刻都有一个线程状态来标识这个连接正在做什么
通讯机制:
- 全双工:能同时发送和接收消息,例如平时打电话
- 半双工:指的某一时刻,要么发送数据,要么接收数据 ,不能同时做
- 单工:只能发送数据或者接收数据,例如单行道
线程状态:
show processlist: //查看用户正在运行的线程信息,root用户能查看所有线程,其他用户
- id 线程id ,可以使用kill xx
- user:启动这个线程的用户
- Host:发送请求的客户端IP和端口号
- db:当前命令在哪个库执行
- Command:该线程正在执行的操作命令
- creat DB
- Drop BD
- Execute:正在执行一个prepareStatement
- sleep:正在等待客户端发送语句
- Quit:正退出
- Shutdown:正在关闭服务器
- Time:表示该线程处于当前状态的时间,单位是秒
- State:线程状态
-updating:正在搜索匹配记录,进行修改
-sleeping: 正在等待客户端发送新请求
-starting: 正在执行请求处理
- checkingtable: 正在检查数据表
- closing table : 正在将表中数据刷新到磁盘中
- Locked:被其他查询锁住了表
- Sending Data :正在处理Select查询,同时将结果发送给客户端
- info:一般记录线程执行的语句,默认显示100个字符,想查看完整的,使用show full processlist;
2.查询缓存
这是Mysql的一个可优化查询的地方,查询缓存查询到相同的SQL,就返回查询结果。没有开启或没有查询到相同的SQL,就由解析器进行语法语义解析,并生成解析树。