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磁盘存储格式,各种表空间(系统表空间,独立表空间,通用
表空间)的作用和优缺点是什么,ibdata、ibd、frm文件分别是干嘛的(3.5、表空间)
12. 行字段存储:底层页和行的存储格式(3.6、InnoDB底层逻辑存储结构)
13. 行字段存储:varchar,null底层是如何存储的,最大可用存储多大的长度(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 log、undo log和buffer 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在事务
中的写入时机)
1、MySQL架构
如下图为MySQL架构涉及到的常用组件:
评论