服务器程序和客户端程序本质上是两个进程,所以连接过程的本质就是两个进程直接的通信,MySQL支持下面三种方式来进行通信。
一:TCP/IP
数据库服务器进程和客户端进程可能运行在不同的主机中,需要通过网络来进行通信
二:命名管道&共享内存
适用于window系统
三:Unix域套接字文件
适用于类Unix系统
服务器处理客户端请求,大致分为三个过程:
处理连接
mysql不会频繁的销毁进程,而是把旧用户的线程分配给新用户
解析与优化
又分为三个阶段
查询缓存
需要单独的开销
缓存不是很智能,请求字符不同,导致缓存不会命中
请求中包含某些系统函数,用户自定义的变量,函数,或者一些系统表的时候,不会进行缓存
表的结构或者数据被修改,使用insert ,update函数操作后,缓存就会被清除
语法解析
暂时知道有此过程就行
查询优化
暂时知道有此过程就行
存储引擎
MySQL服务器把数据的存储和提取操作都封装到了一个叫存储引擎的模块里,如果把数据存储在物理存储器上面,如何读取数据,都是存储引擎做的事情。
我们把不涉及到存储真实数据的操作,比如说,处理连接,解析与优化等统称为MySQL server ,然后把设计到真实数据的统称为存储引擎服务。 存储引擎向上面的MySQL Server层提供API 用来操作存储引擎。
MySQL server完成了查询优化后,只需按照生成的执行计划调用底层存储引擎提供的API,获取到数据后返回给客户端就好了
常用的存储引擎有InnoDB和MyISAM
关于存储引擎的一些操作
查看支持的存储引擎操作
show ENGINES
后面的就不再过多介绍了,网上都很多,重复性的记录不再写了,用到的时候查一下就行了。