1、介绍

MySQL的体系结构可以分为:MySQL Server 层存储引擎层

MySQL Server 层 又包含 连接层 和 SQL 层。

应用程序通过接口 (如 ODBC、JDBC)来连接mysql,最先连接处理的是连接层。

(1)连接层包括:通信协议、线程处理、用户名密码认证三个部分。

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

  • 线程处理:是指每一个连接请求都会分配一个对应的线程,相当于一条SQL对应一个线程,一个线程对应一个逻辑CPU,并会在多个逻辑CPU之间进行切换。

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

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

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

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

  • 查询解析器:针对SQL语句进行解析,判断语法是否正确。

  • 预处理:对解析器无法解析的语义进行处理。

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

2、Query Cache详解

Query Cache 只能缓存静态数据信息,一旦数据发生变化,经常读写,Query Cache 就比较鸡肋。

一般数据仓库之类的可能会考虑开启Query Cache.
MySQL 5.6 之前 Query Cache 默认开启,5.6之后默认关闭。

(1)怎样彻底关闭 Query Cache

query_cache 核心参数

show variables like '%query_cache_size%';

show variables like '%query_cache_type%';


要彻底关闭Query Cache,需要 关闭 query_cache_type,并把 query_cache_size 设置为 0,即可关闭查询缓存。

有些教程仅设置了 query_cache_size 为 0,并不是很严谨。

(2)进行压力测试

作者:admin  创建时间:2023-01-30 17:35
最后编辑:admin  更新时间:2023-01-31 10:58