美文网首页
mysql 优化流程

mysql 优化流程

作者: test_java | 来源:发表于2020-10-19 11:11 被阅读0次

1 . 预发跑 SQL explain

2. 排除 缓存 SQL nocache

3. 看一下行数对不对 不对可以用analyze table t 矫正

4. 添加索引 , 索引不一定是最优的 force index 强制走 索引, 不建议使用

5. 存在回表的情况

6. 覆盖索引避免回表, 不要* ,主键 索引

7. 联合索引,不能无限制建 ,高频 场景

8. 最左前原则 按照索引定义的字段顺序写sql

9 . 合理安排联合索引的顺序

10. 5.6版本之后, 索引下推, 减少回表次数

11. 给字符串 加索引

       前缀索引
      倒序存储
      Hash

12 . 数据库的fush 的时机

1.redo log 满啦, 修改checkpoint flush 到磁盘
2. 系统 内存不足淘汰数据页

buffer pool 要知道磁盘的IO能力, 设置 innodb_io_capacty 设置磁盘的IO PS fio测试
innodb_io_capacity 设置低了, 会让innoDB 错误估算系统能力,导致脏页累积

3. 系统空闲的时候,找间隙刷脏页
4. mysql正常关闭,会把内存脏页 flush到磁盘

13 .inndb刷磁盘速度

1.脏页比例
2.redolog 写盘的速度
3.innodb_fulsh_nieighbors 机械磁盘的随机io不太行 减少随机io性能大幅提升 设置为 1最好
4.现在都是ssd了, 设置为0 就好了, 8.0 之后默认为 0

14. 索引字段不要做函数操作,会破坏索引值的有序性,优化器会放弃走树结构 ,如果触发隐式转换 那也会走cast函数 会放弃走索引

15 字符集 不同可能走不上索引, convert 也是函数走不上

pps:

索引 选择, 1.普通索引,唯一索引,覆盖索引,最左前缀索引

MVCC

1.版本链 在聚集索引中,要两个隐藏列 trx_id roll_pointer
2.读未提交,(直接读取最新版本)
3.序列化 (加锁)

  1. Read View (读已提交, 每次读取生成一个)(可重复度, 每一次生成一个)

相关文章

网友评论

      本文标题:mysql 优化流程

      本文链接:https://www.haomeiwen.com/subject/axttmktx.html