mysql高性能优化规范建议

更新次数 更新时间 首发 2021.10.25 第一次更新 2021.10.26 1.删除了书中大量不必要的存储引擎类型 2.摘要完毕Mysql架构与历史部分 第二次更新 2021.10.29 1.摘要基准测试内容 2.删除了大量对概念的举例. 第三次更新 2021.11.4 1.简化服务器性能剖析 第四次更新 2021.11.18 摘要完毕Schema与数据类型优化 第五次更新 2022.8

更新次数更新时间
首发2021.10.25
第一次更新2021.10.26 1.删除了书中大量不必要的存储引擎类型 2.摘要完毕Mysql架构与历史部分
第二次更新2021.10.29 1.摘要基准测试内容 2.删除了大量对概念的举例.
第三次更新2021.11.4 1.简化服务器性能剖析
第四次更新2021.11.18 摘要完毕Schema与数据类型优化
第五次更新2022.8.30 索引篇以及性能优化高级篇部分
第六次更新2022.8.31 索引篇以及性能优化高级篇部分内容优化
第七次更新2022.9.2 性能优化高级篇新增order by之后语句优化
第八次更新2022.9.4 1.锁机制更新 2.对引用的’尚硅谷MySQL数据库高级’原理内容研判 3.更新事务内容 4. 重构锁内容
第九次更新2022.11.16 1.更新为什么mysql选择b+树 2.b+树数据结构内容优化
第十次更新2022.11.18 1.索引底层原理:如为什么要遵循最左前缀原则
第十一次更新2022.11.22 1.发现网上大量其他变种b+树拿来讲mysql底层. 强调mysql的b+树叶子节点之间是双向循环链表
第十二次更新2023.1.24 1.补充b+树3-4层的数据量 2.mysql8.0新特性跳跃扫描对最左前缀查询的影响
第十三次更新2023.5.30 1 !=和<>到底走不走索引? 2.!=和<>对主键有没有影响?
第十四次更新2023.5.31 sql分析工具optimizer trace
第十五次更新2023.7.20 不连续模糊查询怎么解决
第十六次更新2023.10.27 激进定义分步查询比关联查询优秀
第十七次更新2024.2.29 更新了redo日志讲解


文章目录

  • 前言
  • 一、java开发之路的基石mysql组件的架构简介
    • 1.1.1 Mysql的逻辑架构
      • 1.1.2 连接管理与安全
      • 1.1.3 优化与执行
    • 1.2 锁的并发控制
      • 1.2.1 锁粒度
      • 1.2.2 怎么解决`脏读、不可重复读、幻读`这些问题呢?其实有两种可选的解决方案:
      • 1.2.3从数据操作的类型划分: 读写锁
      • 1.2.4从锁的粒度划分: 表级锁,行级锁,页锁
        • 1.2.4.1表锁 (不依赖存储引擎)
        • 1.2.4.2表级别的读写锁:
        • 1.2.4.3 意向锁
        • 1.2.4.4 自增锁
        • 1.2.4.5 元数据锁
      • 1.2.5 行锁
        • 1.2.5.1 记录锁
        • 1.2.5.2 间隙锁
        • 1.2.5.3 临键锁
        • 1.2.5.4 插入意向锁
      • 1.2.6 页锁
    • 1.3 事务(熟悉ACID可跳过)
      • 1.3.1 隔离级别
      • 1.3.2 死锁
      • 1.3.3 事务日志
        • 1.3.3.1 为啥需要redo日志
        • 1.3.3.2 redo log刷盘策略:
        • 1.3.3.3 redo log写入策略:
        • 1.3.3.4 undo日志
      • 1.3.4 mysql中的事务
        • 设置提交模式和隔离级别
        • 在事务中混合使用存储引擎
        • 隐式和显式锁定
    • 1.4多版本并发控制
    • 1.5 MySQL的存储引擎
      • ✔1.5.1 InnoDB引擎
        • InnoDB概览
        • MyISAM存储引擎
        • MyISAM特性
        • MyISAM压缩表
        • MyISAM性能
      • 1.5.3Mysql内建的其他主要存储引擎简要介绍
        • Archive引擎
        • CSV引擎
        • Memory引擎
        • NDB集群引擎
      • 1.5.4 第三方存储引擎
        • OLTP类引擎
        • 面向列的存储引擎
      • 1.5.5 选择合适的引擎
      • 1.5.6 转换表的引擎
    • 1.6 Mysql架构部分总结
  • 第二章.MySQL基准测试
    • 2.1 为什么需要基准测试?
    • 2.2 基准测试的策略
      • 2.2.1 测试何种指标
    • 2.3 基准测试方法
      • 常见的错误
      • 2.3.1 设计和规划基准测试
      • 2.3.2 基准测试应该运行多长时间
      • 2.3.3 获取系统性能和状态
      • 2.3.4 获得准确的测试结果
      • 2.3.5 运行基准测试并分析结果
      • 2.3.6 绘图的重要性
    • 2.4 基准测试工具
    • 2.5 基准测试案例
    • 2.6 总结
  • 服务器性能剖析
    • 3.1 性能优化简介
      • 3.1.1通过性能剖析进行优化
      • 3.1.2 理解性能剖析
    • 3.2 对应用程序进行性能剖析
      • MySQL企业监控器的查询分析功能
    • 3.3剖析MySQL查询
      • 3.3.1剖析服务器负载
    • 3.4诊断间歇性问题
      • 3.4.1捕获诊断数据
    • 3.5 其他剖析工具
    • 3.6总结
  • 第四章 Schema与数据类型优化
    • 4.1 选择优化的数据类型
      • 4.1.1 整数类型
      • 4.1.2 实数类型
      • 4.1.3 字符串类型
        • VARCHAR
        • CHAR
        • 4.1.4日期和时间类型
        • DATETIME
        • TIMESTAMP
    • 4.2加快ALTER TABLE操作的速度
      • 4.2.1只修改.frm文件
    • 4.3 总结
  • 五.创建高性能索引
    • 5.1 基本定义
    • 5.2 b+tree的数据结构
      • 为啥b+树大概3到4层?
      • 5. 2.0 为什么要选择b+树?
        • 5.2.0.1 二叉搜索树
        • 5.2.0.2 AVL(二叉平衡树)
        • 5.2.0.3 红黑树(也称为平衡二叉树)
      • 5.2.1 重要! b+tree索引生效的条件
        • 5.2.1.1 为什么要遵循最左前缀原则?
      • 5.2.2 下面是一些关于B+Tree索引的限制
    • 5.2.3 深度分析!=和<>
    • 5.3 哈希索引
    • 5.4 空间数据索引(R+Tree)
    • 5.5 全文索引
    • 5.6 聚簇(聚集)索引
      • 5.6.1为什么InnoDB表必须建主键,并且推荐使用整型的自增主键?
    • 5.7哪些情况需要建立索引
    • 5.8哪些情况不要建索引
    • 5.9 索引的优劣
    • 5.10 采用逻辑删除的原因
  • 六. mysql高级实践技能
    • 6.1 sql性能下降的原因
    • 6.2 查询性能优化
      • 6.2.1常见瓶颈
      • 6.2.2 explain
    • 6.3 索引优化
      • 6.3.1 小表驱动大表(join)
      • 6.3.2 避免索引失效
      • 6.3.3 其他问题
        • 6.3.3.1.什么是回表
        • 6.3.3.2.解决like%字符串%时索引不被使用的方法?
        • 6.3.3.3.覆盖索引为什么可以不遵循最左前缀查询?
        • 6.3.3.4 注意: and表是并列关系.只要and中有最左前缀索引(带头大哥).那么无论顺序如何.都会被mysql查询优化器优化,变成正常的索引序列.但范围之后依然全失效
        • 6.3.3.5 mysq表关联底层机制
    • 6.4 count()函数
    • 6.5 查询优化
      • 6.5.1 小表驱动大表
      • 6.5.2 order by排序优化
      • 6.5.3 group by排序
    • 6.6 慢查询日志
    • 6.7 show profile
    • 6.8 全局查询日志
    • 6.7 optimizer trace分析工具
  • 七.其他问题
    • 7.1 不连续模糊查询
    • 7.2 建议分步查询
知秋君
上一篇 2024-07-28 19:12
下一篇 2024-07-28 18:48

相关推荐