1、初窥Mysql

48 阅读1分钟

1. MySQL的驱动与连接池

image.png

2. 一条SQL查询的执行过程

image.png

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日志一致的。