百木园-与人分享,
就是让自己快乐。

MySQL体系结构与存储引擎

 1、MySQL体系结构

MySQL的体系结构可以分为两层,MySQL Server层和存储引擎层。

在MySQL Server层中又包括连接层和SQL层,如图1-1所示。

应用程序通过接口( 如ODBC、JDBC)来连接MySQL。

最先连接处理的是连接层,连接层包括通信协议、线程处理、用户名密码认证三个部分。

通信协议负责检测客户端版本是否兼容MySQL服务端。

线程处理是指每一个连接请求都会分配一个对应的线程,

相当于一条SQL对应一个线程,一个线程对应一个逻辑 CPU,并会在多个逻辑CPU之间进行切换。

用户名密码认证验证创建的账号和密码,以及host主机授权是否可以连接到MySQL服务器。

SQL层包含权限判断、查询缓存、解析器、预处理、查询优化器、缓存和执行计划。

          图1-1 MySQL体系结构

权限判断可以审核用户有没有访问某个库、某个表,或者表里某行的权限。

查询缓存通过 Query Cache 进行操作,如果数据在 Query Cache 中,则直接返回结果给客户端。

查询解析器针对 SQL 语句进行解析,判断语法是否正确。预处理器对解析器无法解析的语义进行处理。

优化器对 SQL 进行改写和相应的优化,并生成最优的执行计划,就可以调用程序的 API 接口,通过存储引擎层访问数据。

存储引擎层也是 MySQL 数据库区别于其他数据库最核心的一点。

 

2、query cache 详解

Query Cache在生产中建议关闭,因为它只能缓存静态数据信息,一旦数据发生变化, 经常读写,QueryCache就成了“鸡肋”。

一般像数据仓库之类的可能会考虑开启QueryCache。

这里再提及一句,MySQL 5.6之前版本的Query Cache默认是开启的,5.6 之后默认是关闭的。

如何彻底关闭Query Cache是我们需要关注的。

首先涉及query_ cache 的两个核心参数:

#查询缓存大小mysql> show variables like \'%query_cache_size%\';
+------------------+---------+
| Variable_name | Value |
+------------------+---------+
| query_cache_size | 0 |
+------------------+---------+
1 row in set (0.00 sec)
#查询缓存类型
mysql
> show variables like \'%query_cache_type%\';
+------------------+-------+
| Variable_name | Value |
+------------------+-------+
| query_cache_type | OFF |
+------------------+-------+
1 row in set (0.00 sec)

来源:https://www.cnblogs.com/Sungeek/p/12202605.html
图文来源于网络,如有侵权请联系删除。

未经允许不得转载:百木园 » MySQL体系结构与存储引擎

相关推荐

  • 暂无文章