1、MySQL技术内幕:InnoDB存储引擎1 MySQL体系结构和存储引擎1 MySQL体系结构和存储引擎011.1 定义数据库和实例021.2 MySQL体系结构031.3 MySQL表存储引擎041.4 各种存储引擎之间的比较051.5 连接MySQL061.6 小结1.3 MySQL表存储引擎1 MySQL体系结构和存储引擎1.3.1 InnoDB存储引擎1.3.2 MyISAM存储引擎1.3.3 NDB存储引擎1.3.6 Federated存储引擎1.3.5 Archive存储引擎1.3.4 Memory存储引擎1 MySQL体系结构和存储引擎1.3 MySQL表存储引擎A1.3.7 M
2、aria存储引擎1.3.8 其他存储引擎1 MySQL体系结构和存储引擎1.5 连接MySQLCBA1.5.1 TCP/IP1.5.2 命名管道和共享内存1.5.3 Unix域套接字2 InnoDB存储引擎2 InnoDB存储引擎AEDBC2.2 InnoDB体系架构2.3 master thread2.5 启动、关闭与恢复2.4 关键特性2.1 InnoDB存储引擎概述2 InnoDB存储引擎2.7 小结2 InnoDB存储引擎2.2 InnoDB体系架构2.2.2 内存022.2.1 后台线程012 InnoDB存储引擎2.3 master thread2.3.1 master threa
3、d源码分析2.3.2 master thread的潜在问题LOGOM.94275.CN2 InnoDB存储引擎2.4 关键特性2.4.1 插入缓冲012.4.3 自适应哈希索引032.4.2 两次写023 文件3 文件3.1 参数文件3.2 日志文件3.3 套接字文件3.6 InnoDB存储引擎文件3.5 表结构定义文件3.4 pid文件3 文件3.7 小结3 文件3.1 参数文件3.1.1 什么是参数13.1.2 参数类型23 文件3.2 日志文件3.2.1 错误日志3.2.2 慢查询日志3.2.3 查询日志3.2.4 二进制日志3 文件3.6 InnoDB存储引擎文件AB3.6.2 重做日
4、志文件3.6.1 表空间文件4 表4 表4.2 InnoDB逻辑存储结构4.4 InnoDB行记录格式4.6 Named File Formats4.1 InnoDB存储引擎表类型4.3 InnoDB物理存储结构4.5 InnoDB数据页结构4 表014.7 约束4.8 视图024.9 分区表034.10 小结044 表4.2 InnoDB逻辑存储结构4.2.3 区4.2.1 表空间4.2.2 段4.2.4 页4.2.5 行4.4 InnoDB行记录格式4 表4.4.2 Redundant行记录格式4.4.4 Compressed与Dynamic行记录格式4.4.1 Compact行记录格式4
5、.4.3 行溢出数据4.4.5 Char的行结构存储4 表4.5 InnoDB数据页结构4.5.1 File Header014.5.2 Page Header024.5.3 Infimum和Supremum记录034.5.4 User Records与FreeSpace044.5.5 Page Directory054.5.6 File Trailer064 表4.5 InnoDB数据页结构4.5.7 InnoDB数据页结构示例分析4 表4.7 约束014.7.1 数据完整性024.7.2 约束的创建和查找034.7.3 约束和索引的区别044.7.4 对于错误数据的约束054.7.5 EN
6、UM和SET约束064.7.6 触发器与约束4 表4.7 约束4.7.7 外键4 表4.8 视图4.8.1 视图的作用4.8.2 物化视图4 表4.9 分区表01034.9.1 分区概述4.9.2 RANGE分区4.9.3 LIST分区020405064.9.4 HASH分区4.9.5 KEY分区4.9.6 COLUMNS分区4 表4.9 分区表4.9.7 子分区014.9.9 分区和性能034.9.8 分区中的NULL值025 索引与算法5 索引与算法5.6 B+树索引的使用5.5 B+树索引5.4 B+树5.3 平衡二叉树5.2 二分查找法5.1 InnoDB存储引擎索引概述5 索引与算法
7、5.7 哈希算法5.8 小结5 索引与算法5.4 B+树A5.4.1 B+树的插入操作5.4.2 B+树的删除操作5 索引与算法5.5 B+树索引5.5.1 聚集索引5.5.2 辅助索引5.5.3 B+树索引的管理5 索引与算法5.6 B+树索引的使用5.6.1 什么时候使用B+树索引5.6.2 顺序读、随机读与预读取5.6.3 辅助索引的优化使用5.6.4 联合索引5 索引与算法5.7 哈希算法5.7.1 哈希表5.7.2 InnoDB存储引擎中的哈希算法5.7.3 自适应哈希索引6 锁6 锁6.1 什么是锁6.2 InnoDB存储引擎中的锁6.3 锁的算法6.6 死锁6.5 阻塞6.4 锁
8、问题6 锁6.7 锁升级6.8 小结6 锁6.2 InnoDB存储引擎中的锁6.2.1 锁的类型6.2.2 一致性的非锁定读操作6.2.3 SELECTFOR UPDATESELECTLOCK IN SHARE MODE0102036.2.4 自增长和锁6.2.5 外键和锁04056 锁6.4 锁问题016.4.1 丢失更新6.4.2 脏读026.4.3 不可重复读037 事务7 事务01037.1 事务概述7.2 事务的实现7.3 事务控制语句020405067.4 隐式提交的SQL语句7.5 对于事务操作的统计7.6 事务的隔离级别7 事务7.8 不好的事务习惯027.9 小结7.7 分布
9、式事务017 事务7.2 事务的实现7.2.1 redo7.2.2 undo7 事务7.8 不好的事务习惯CBA7.8.1 在循环中提交7.8.2 使用自动提交7.8.3 使用自动回滚8 备份与恢复8 备份与恢复8.1 备份与恢复概述8.2 冷备8.3 逻辑备份8.6 快照备份8.5 热备8.4 二进制日志备份与恢复8 备份与恢复8.7 复制8.8 小结8 备份与恢复8.3 逻辑备份018.3.1 mysqldump028.3.2 SELECTINTO OUTFILE038.3.3 逻辑备份的恢复048.3.4 LOAD DATA INFILE058.3.5 mysqlimport8.5 热备
10、8 备份与恢复8.5.1 ibbackup018.5.2 XtraBackup028.5.3 XtraBackup实现增量备份038 备份与恢复8.7 复制A8.7.1 复制的工作原理8.7.2 快照+复制的备份架构9 性能调优9 性能调优AEDBC9.2 内存的重要性9.3 硬盘对数据库性能的影响9.5 操作系统的选择也很重要9.4 合理地设置RAID9.1 选择合适的CPU9 性能调优9.8 小结9.7 选择合适的基准测试工具9.3 硬盘对数据库性能的影响9 性能调优9.3.1 传统机械硬盘19.3.2 固态硬盘29 性能调优9.4 合理地设置RAID9.4.1 RAID类型9.4.2 R
11、AID Write Back功能9.4.3 RAID配置工具LOGOM.94275.CN9 性能调优9.7 选择合适的基准测试工具9.7.1 sysbench9.7.2 mysql-tpcc10 InnoDB存储引擎源代码的编译和调试10 InnoDB存储引擎源代码的编译和调试10.1 获取InnoDB存储引擎源代码10.4 小结10.2 InnoDB源代码结构10.3 编译和调试InnoDB源代码68%44%21%15%10.3.1 Windows下的调试10.3.2 Linux下的调试 附录A Secondary Buffer Pool For InnoDB附录A Secondary Buffer Pool For InnoDB附录B Master Thread源代码附录B Master Thread源代码附录C Doublewrite源代码附录C Doublewrite源代码附录D 哈希算法和哈希表源代码附录D 哈希算法和哈希表源代码感谢聆听