Mysql服务器的结构
Mysql服务器大致可以分为三层:客户端层、server层和引擎层
下面大致说一下这三层:
(1)客户端层:该层主要是用于用户输入用户名和密码进行连接数据库,一般使用的命令为:
mysql -h 主机名/ip地址 -P 端口号 -u 用户名 -p
按下回车后输入mysql密码即可
(2)server层:sql语句首先进入分析器,分析器细分为词法分析和语法分析,词法分析主要分析sql语句的关键字,例如sql语句中的select,可以得出该语句是查询语句,接着识别出表,表中的列等。
语法分析主要是看sql语句的语法是否正确,不正确会报sql语法错误。待sql语句语法正确后,接着进入优化器,如果sql语句为查询语句,则优化器会为sql语句选择合适的索引,以及join的两个表的执行顺序。sql语句优化完成后进入执行器,执行器调引擎层的读写接口执行sql语句。
(3)引擎层:引擎层主要用于数据的存取,我们常见的引擎有MyIsam引擎和InnoDB引擎。
注:在图中的server层可以看到有一个缓存,在mysql8.0版本之后,缓存就被去掉了;原因是因为虽然数据在缓存中可以提高数据的查询效率,但是当这个数据所在的表中的任意一行记录修改,都会导致该数据在缓存中失效,对于修改比较频繁的表,建议关掉缓存,将缓存设置为demand模式,即按需使用。是否开启缓存主要看业务逻辑。