MYSQL服务器优化
- MYSQL数据库组成
- 连接器的优化
- 缓存器的优化
- 分析器的介绍
- 优化器的介绍
- 执行器的介绍
- 存储引擎的介绍
- 事务的优化
- 日志的优化
MYSQL数据库组成
1.连接器:链接客户端,校验登录信息,维持和管理链接。
注:一个用户成功建立连接后,即使你用管理员账号对这个用户的权限做了修改,也不会影响已经存在连接的权限。修改完成后,只有再新建的连接才会使用新的权限设置。用户的权限表在系统表空间的mysql的user表中。
2.缓存器(查询缓存):MYSQL8.0及之后版本被移除了。查询MYSQL数据库的查询缓存。缓存命中的话也会检查是否有执行权限
3.分析器:分析SQL语句,检查语法是否正确。
4.优化器:根据MYSQL自己的逻辑,进行SQL语句的优化。eg:通过计算执行成本,选择执行方式。
5.执行器:1.检查是否有执行权限,2.执行SQL语句,并返回结果。
6.存储引擎:存储MYSQL数据的存储引擎。目前主要有INNODB、MYISAM、MOMERRY等。
连接器的优化
客户端如果长时间不发送command到Server端,连接器就会自动将它断开。
这个时间是由参数 wait_timeout控制的,默认值是8小时。
优化点:
1.保证访问MYSQL服务器的网络质量。
2.根据业务对链接进行线程池管理。
3.根据业务设置合理的wait_time参数。
缓存器的优化
MySQL拿到一个查询请求(普通的SELECT语句)后,会先到缓存器(查询缓存),查看是否有该查询对应的缓存数据。
如果存在,则把缓存在内存中的数据直接返回客户端。(key是查询的语句,value是查询的结果。)
如果不存在,则按照查询流程从存储引擎中获取数据。
优化点:
1.查询缓存命中率不高的话,建议关闭该缓存功能。
因为,除了缓存命中率不高意外,内存碎片管理的时间开销以及空间开销都是必要的。因此MYSQL8.0后移除了缓存器(查询缓存)。
分析器的介绍
1、词法分析
2、语法分析
3、语义分析
4、构造执行树
5、生成执行计划
优化器的介绍
优化器会通过计算执行成本而选择相应的执行方案。
优化器阶段完成后,这个语句的执行方案就确定下来了,然后进入执行器阶段。
优化点:
1.有时候可以通过强制使用索引,来打破优化器的负优化。
eg: force index(索引名)
select * from table force index(索引名 ) where 索引字段 = 2022;
SQL优化详见文章《MYSQL的SQL语句优化》
执行器的介绍
1、开始执行的时候,要先判断一下链接用户对操作是否有执行权限
2、如果有权限,则根据执行计划继续执行。
存储引擎的介绍
目前主要使用的存储引擎:INNODB、MYISAM、MOMERRY等。
事务的优化
MYSQL默认的事务级别是RR,实际运维中,通常是设置为RC。
待续
日志的优化
redo log
undo log
bin log
普通查询日志
slow query log
error log
reply log(中继日志)
待续