1. MySQL的驱动与连接池
2. 一条SQL查询的执行过程
3. InnoDB的存储引擎架构设计
Buffer Pool加载磁盘数据进入内存。
更新数据前,写undo日志文件,用于事务回滚。
更新Buffer Pool数据,同时写Redo Log,防止系统宕机数据不一致。
redo日志刷盘策略有三种,通过 innodb_flush_log_at_trx_commit
- 0: 事务提交,不一定刷新进磁盘
- 1:事务成功,刷盘进磁盘,推荐选择
- 2:刷入os cache内存缓存,等待操作系统进行刷盘,可能会丢数据
4. binlog解惑
redo log是一种偏向物理性质的重做日志,记录类似:“对哪个数据页中的什么记录,做了什么修改”。
binlog叫作归档日志,偏向逻辑日志,类型“对user表中的id=10的一行数据做了更新操作,更新前的值是,更新后的值是”。
binlog是mysql server层自己的日志。
binlog的刷盘策略,通过sync_binlog参数控制:
- 0:默认值,写入os cache
- 1:提交事务时候,强制落盘
最后一步的目的,是为了保持redo log日志与binlog日志一致的。