Please enable JavaScript.
Coggle requires JavaScript to display documents.
高性能mysql优化 (优化服务器配置 (配置语法 (作用域,全局,会话 (SET[GLOBAL] a=b;, show global…
高性能mysql优化
优化服务器配置
配置语法
下划线和波折号是一样的
作用域,全局,会话
SET[GLOBAL] a=b;
show global variables;
InnoDB缓存池
内容
行数据,索引,插入缓存区,锁
线程缓存层
IO调优
innode
事务日志
innodb_log_at_trx_commit
查询优化
优化数据访问
请求了不需要的数据
提取了多余的列
多表连接是格外注意
1对1拆分发挥作用了
提取了多余的行,记得使用limit子句
mysql 检查了太多数据
指标
执行时间,检查的行数,返回的行数
explain type
FULL table scan(ALL)
index scan
Range scan
unique index lookup (ref)
const
重构查询
查询的大小和数量的平衡
大查询拆分小查询
删除和更新应该是最容易的,条件不变,增加limit
join子句的拆分
查询缓存
查询缓存是基于查询语句字符串的hash,所以及时空格不一样都算不一样
解析和优化
解析器生成解析树,处理的是语法合法性问题,和各查询子句之间的关系。
优化器根据解析树和优化算法,生成执行计划。
基于cost的优化
基本单位是一次随机读取,不考虑缓存,认为所有的一次随机读取有同样的开销
优化类型
连接表顺序重新排列
外连表转化为内连表
条件的表达式优化
优化count(),MAX(),MIN()
拆分连接
覆盖索引
子查询优化
早期终结(limit)
相等性传递
优化器本身会对查询进行优化,技术人员的查询优化,其实是指导优化器做出更好的选择。
其他优化
代码放入数据库
事件,储存过程,函数,周期性的(减少数据传送开销)
合并表和分区表
分区表更多的用在无法使用索引的情况,可以减少扫描的内容