问题出处,丁奇45讲
疑惑:Mysql每次执行完Sql语句之后,不是立马更新磁盘数据吗?不然怎么保证数据一致性?如果按照日志空闲提交法,A修改一个数据,B有可能一个小时后才能看到数据,那么Mysql不是就失去了价值。
所以:每一次执行完Sql,必然会更新磁盘,那么,日志减少磁盘IO,不就是错误的论证吗?
可是,丁奇是大佬,应该不会错的,是我想的方向哪里出问题了吗?
丁奇45讲,第二讲,update语句底层,日志优化频繁磁盘IO
我们增删改查的数据都是缓冲池中的数据,如果一条数据被修改了,会被放到缓冲池的flush list中,这时候我们马上查询这条数据,查的也是flush list中的数据,flush list中的脏页会通过checkpoint的机制刷盘
我也是这样想的,只是不大确定
日志让随机IO变成顺序IO降低IO成本。日志让数据可以批量刷盘来减少IO次数
可是如果是批量,那么磁盘上的数据,怎么和用户操作及时同步?用户对某条数据做了修改,提交至内存,未提交到磁盘,累计批量,在批量过程中间,他的操作,不能被磁盘感知,就造成了数据不一致