美文网首页
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