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-31 10:58