Code Monkey home page Code Monkey logo

mysql's Introduction

MySQL

MySQL优化

暂时先放个脑图,后期会不断完善。。。

由于图片太大(5M),未能显示,建议下载看看,贼屌。

图片地址

MySQL存储引擎

(下图概览,脑图已上传,地址)

innoDB概览

InnoDB

  1. 从MySQL架构到InnoDB架构

    1. MySQL架构

    2. InnoDB架构

    3. InnoDB的多线程模型

  2. InnoDB简介

  3. InnoDB关键特性

  4. InnoDB内存结构

    1. 缓冲池 - Buffer Pool
      • 为什么会出现
      • 是什么
      • 架构
      • 关键概念 - 数据页
      • 怎么做的
      • 服务器的内存大小很重要
      • 缓冲池中缓存的数据页的类型
      • 怎么识别数据在哪个缓冲页中
      • 缓冲池实例
      • Buffer Pool如何应对高并发场景
      • Buffer Pool的初始化
      • LRU List
      • Free List
      • Flush List
      • 总结
    2. 日志缓冲区 - Log Buffer
      • redo log buffer
      • undo log buffer
    3. 变更缓冲区 - Change Buffer
      • 简介
      • 什么时候合并到数据页
      • 在架构中的位置
      • 作用
      • 组成部分
      • 参数配置
      • 监控变更缓冲区
      • 其他信息
    4. 额外内存池
  5. InnoDB磁盘结构

    1. 页逻辑存储结构
      • 页的结构
        • 页中插入数据的过程
        • COMPACT行格式
        • Page Directory
        • Page Header
        • File Header
        • File Trailer
      • 总结
    2. 表 - table
    3. 索引 - index
      • 聚簇索引和二级索引
      • InnoDB索引的物理结构
      • 排序索引的创建
    4. 表空间 - TableSpaces
      • 系统表空间
      • 每个表的表空间
      • InnoDB内存中对 .ibd 文件的管理
      • 数据字典和 .idb 文件的关系
      • 通用表空间
      • 创建通用表空间
      • 撤销表空间
      • 临时表空间
    5. 数据字典 - Data Dictionary
  6. MySQL文件

    1. 参数文件
      • 作用
      • 参数文件类型
      • 参数类型
      • 参数文件加载顺序
    2. 日志文件
      • 错误日志
      • 慢查询日志
        • 作用
        • 查看慢日志是否开启 / 慢日志位置
        • 满足什么条件会记录到慢日志中
        • 测试慢日志记录
        • mysqldumpslow的高级用法
        • 慢查询日志的输出方式
      • 二进制日志
        • 简介
        • 参数控制
        • 二进制日志的切换
        • 删除二进制日志文件
        • 相关参数
        • 查看二进制日志内容
      • 查询日志
    3. socket文件
    4. pid文件
    5. MYISAM引擎文件
    6. InnoDB常规表文件
    7. InnoDB Redo Log
      • 概念及作用
      • redo log的组成部分
      • 内存中的 redo log buffer
      • 磁盘上的 redo log file 文件
      • 日志块 log block
      • log group 和redo log file
      • redo log格式
      • 什么时候产生redo log?什么时候日志刷盘?
      • 脏页刷盘机制
      • 什么时候释放redo log
      • InnoDB的恢复行为
      • 举例
      • 总结
    8. InnoDB Undo Log
      • 了解几个概念
      • 简介
      • 作用
      • 存储方式
      • 关键结构体
      • purge线程
      • group commit
      • 存储位置
    9. LSN
      • 什么是 LSN
      • 根据 LSN 能获得什么信息
      • LSN 存在的位置
      • 查看 LSN 信息
      • 举例
    10. bin log 和 redo log 的区别
    11. bin log、redo log、undo log写入顺序 - 案例
  7. InnoDB锁

    1. latch - 线程锁
      • 简介
      • 作用
      • 举例
      • 如何查看
      • 分类
      • latch争用发生的原因
      • 如何降低latch争用
      • InnoDB Buffer Pool并发控制加锁过程
    2. lock - 事务锁 介绍
      • 简介与latch区别
      • 加锁位置
      • 加锁原则
    3. latch 和 lock 的区别
    4. lock分类
      • 表级锁
        • 意向锁
        • 自增自动上锁
      • 行级锁
        • 共享读锁
        • 排他写锁
        • 记录锁
        • 间隙锁
        • next-key锁
        • 插入意向锁
        • 空间所以你谓词锁
      • 页级锁
    5. lock加锁案例分析
    6. 不同SQL加的不同lock锁
    7. 死锁
      • 死锁简单案例
      • 死锁本质
      • InnoDB死锁实例
      • 死锁必要条件
      • InnoDB死锁检测
      • 死锁检测机制 - wait-for graph
      • 禁用死锁检测
      • 如何避免死锁
  8. InnoDB事务

  9. 其他知识点

MYISAM

Memory

TempTable

涉及MySQL其他

参考文献:

  1. MySQL官方网站

  2. 阿里数据库月报

  3. 阿里云开发者社区

  4. 《高性能MySQL 第3版》

  5. 《MySQL技术内幕 InnoDB存储引擎》

  6. 简书博客

  7. CSDN博客

  8. 知乎

  9. 其他博客


本文一些知识点未深入研究,链接摘录如下,感兴趣可以继续研究。

延申阅读:

  1. MySQL · 内核分析 · InnoDB mutex 实现分析
  2. MySQL · 内核特性 · InnoDB btree latch 优化历程
  3. MySQL · 引擎特性 · InnoDB UNDO LOG写入 - 源码分析
  4. MySQL · 源码阅读 · InnoDB伙伴内存分配系统实现分析

关于本文文件结构如下

  • mysql-image : 所有图片都会保存到这里,根据 .md 文件的排序命名
  • mysql-optimization : MySQL优化的相关总结
  • mysql-others : MySQL其他,包含所有脑图
  • mysql-storage-engines : MySQL中的存储引擎,如 InnoDB 、MYISAM等

mysql's People

Contributors

asdbex1078 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.