1)MySQL向外提供的交互接口(Connectors)
Connectors 组件是 MySQL 向外提供的交互组件,如Java,.NET,PHP等语言可以通过该组件来操作 MySQL 语句,实现与 MySQL 的交互。建立连接之后,可以通过show processlist 语句来查看已经建立的连接。
如果客户端一段时间内没有活泼行为,那么连接器在默认的8个小时后会主动断开连接。加果在连接被断开之后,客户端再次发送请求的话,就会收到一个错误提醒:Lost connection to MySQL server during query。
客户端连接到MySQL数据库上时,根据连接时间的长短可以分为:短连接和长连接。短连接比较简单,指每次查询之后会断开,再次查询必要重新建立连接,因此使用短连接的本钱较高;长连接指长时间连接到MySOL数据库上并实行数据库操作,因此长连接会导致出现内存溢出的问题从而使MySQL异常重启。
在使用长连接时,可以使用客户端函数mysql_reset_connection()来重新初始化连接资源。这个过程不必要重连和重新做权限验证,但是会将连接规复到刚刚创建完时的状态。 2)连接池组件(Connection Pool)
负责监听客户端向MySQL服务器端的各种请求,接收请求、转发请求到目的模块。每个乐成连接MySQL服务器端的客户请求都会被创建或分配一个线程,该线程负责客户端与MySQL服务器端的通讯,接收客户端发送的命令,传递服务器端的效果信息等。 3)管理服务组件和工具组件(Management Service &Utilities)
提供对MySOL的集成管理,如备份(Backup)、规复(Recovery)、安全管理(Security)等。 4)SQL接口组件(SQL Interface)
接收用户SQL命令,如DML、DDL和存储过程等,并将最终效果返回给用户。 5)查询分析器组件(Parser)
体系在实行输入语句之前,必须分析出语句想要干什么。例如:起首通过select关键字得知这是一条查询命令,还包括分析要查询的是哪张表以及查询条件是什么。同时,分析器必须分析输入语句的语法正确性。如果SQL中存在语法的错误,则查询分析器组件将返回提示信息“You have an error in your SQL syntax”。 6)优化器组件(Optimizer)
优化器是MySQL用来对输人语句在实行之前所做的最后一步优化。优化内容包括:是否选择索引、选择哪个索引、多表查询的联合序次等。每一种实行方法的逻辑效果是一样的,但是实行的效率会有不同,而优化器的作用就是决定选择使用哪一种方案。 7)查询缓存组件(Query Caches & Buffers)
这个查询缓存是比较容易理解的。在每一次查询时,MySQL 都先去看看是否命中缓存,命中则直接返回,提高了体系的相应速率。但是这个功能有一个相当大的弊病,那就是一旦这个表中数据发生更改,那么这张表对应的全部缓存都会失效。
对于更新压力大的数据库来说,查询缓存的命中率会非常低。除非业务体系就只有一张静态表,很长时间才会更新一次。比如,一个体系设置表,那这张表上的查询才适合使用查询缓存。所以在生产体系中,发起关闭该功能。
在MySQL8.0版本之前,可以通过将参数“query_cachetype”设置成OFF,来关闭查询缓存的功能。但是在MySQL8.0版本之后,直接删掉了这部分的功能。
show variables like '% query_cache% ';
复制代码
MySQL的存储引擎
MySQL 存储引擎层负责数据的存储和提取,其架构模式是插件式的,支持InnoDB、MyISAM、Memory、Archive、NDB Cluster等多个存储引擎。最常用的是InnoDB,我将为大家详细介绍InnoDb、MyISAM 和 Mymery 存储引擎。
我们可以使用 show create table 表名; 来查看创建表时使用的存储引擎。