MySQL

洞悉MySQL底层架构与SQL调优本质
帅旋
关注
充电
IT宅站长,技术博主,架构师,全网id:arthinking。

你该理解的InnoDB引擎知识都在这里了

发布于 2020-05-30 | 更新于 2024-05-16

看完本篇章,您将了解到:

  1. 整体架构: InnoDB存储架构是怎样的 (1、MySQL架构)
  2. 工作原理: 查询语句的底层执行流程是怎样的 (2、查询SQL执行流程)
  3. IO性能: 文件IO操作写磁盘有哪几种方式,有什么IO优化方式 (3.1.2、关于磁盘IO的方式)
  4. 缓存: InnoDB缓存(buffer pool, log buffer)的刷新方式有哪些(3.1.2.2、innodb_flush_method)
  5. 缓存: log buffer是在什么时候写入到磁盘的(3.10.2、如何保证数据不丢失 - 其中第四步log buffer持久化到磁盘的时机为)
  6. 缓存: 为什么redo log prepare状态也要写磁盘?(3.10.2、如何保证数据不丢失 - 为什么第二步redo log prepare状态也要写磁盘?)
  7. 缓存: 脏页写盘一般发生在什么时候(3.10.2、如何保证数据不丢失 - 其中第五步:脏页刷新到磁盘的时机为)
  8. 缓存: 为什么唯一索引的更新不可以借助change buffer(3.2、Change Buffer)
  9. 缓存: log buffer的日志刷盘控制参数innodb_flush_log_at_trx_commit对写性能有什么影响(3.4.1、配置参数)
  10. 缓存: buffer pool的LRU是如何实现的,为什么要这样实现(3.1.1、缓冲池LRU算法)
  11. 表存储: 系统表空间的结构,MySQL InnoDB磁盘存储格式,各种表空间(系统表空间,独立表空间,通用表空间)的作用和优缺点是什么,ibdataibdfrm文件分别是干嘛的(3.5、表空间)
  12. 行字段存储: 底层页和行的存储格式(3.6、InnoDB底层逻辑存储结构)
  13. 行字段存储: varcharnull底层是如何存储的,最大可用存储多大的长度(3.6.3.1、MySQL中varchar最大长度是多少)
  14. 行字段存储: 行记录太长了,一页存不下,该怎么存储?(3.6.3.2、行记录超过页大小如何存储)
  15. 索引: 数据库索引的组织方式是怎样的,明白为什么要采用B+树,而不是哈希表、二叉树或者B树(3.7、索引 - 为什么MySQL使用B+树)
  16. 索引: 索引组织方式是怎样的,为什么大字段会影响表性能(查询性能,更新性能)(3.7、索引)
  17. 索引: 覆盖索引联合索引什么情况下会生效(3.7.2、辅助索引)
  18. 索引: 什么是索引下推,索引下推减少了哪方面的开销?(3.7.2、辅助索引 - 索引条件下推)
  19. 索引: Change Buffer对二级索引DML语句有什么优化(3.2、Change Buffer)
  20. 数据完整性: MySQL是如何保证数据完整性的,redo logundo logbuffer pool数据完整性的关键作用分别是什么(3.10.2、如何保证数据不丢失)
  21. MVCC: MVCC底层是怎么实现的,可重复读和读已提交是怎么实现的(3.11.2、MVCC实现原理)
  22. 双写缓冲区有什么作用(3.9、Doublewrite Buffer)
  23. Redo Log在一个事务中是在什么时候写入的?binlog和Redo Log有什么区别?(3.10.1、Redo Log在事务中的写入时机)

本文作者: 帅旋

本文链接: https://www.itzhai.com/columns/mysql/innodb-engine-key-points.html

版权声明: 版权归作者所有,未经许可不得转载,侵权必究!联系作者请加公众号。

×
IT宅

关注公众号及时获取网站内容更新。

请帅旋喝一杯咖啡

咖啡=电量,给帅旋充杯咖啡,他会满电写代码!

IT宅

关注公众号及时获取网站内容更新。