先摆好一次select执行的图。
为什么标题是update却要摆放select执行的图?
首先要知道update修改数据并不是直接修改表中的数据,而是修改在内存中的数据页。而内存中的数据页是由执行器调用引擎接口加载到内存中的,这一部分跟select是一模一样的,所以直接复用一次select执行时的图。
与select的不同在什么地方?
执行器再找到数据后还有负责更新。这个更新就是修改再内存中的数据页。
除此之外还涉及到3个日志的更新,即undolog、redolog、binlog。
一个更新大致流程就结束了。
在内存修改后的数据页变成了与磁盘上的数据页不一样的数据页,这个数据页叫做脏页。
把脏页刷到磁盘的过程,称为刷脏。
一定要加载到内存再修改?
要说的是前面讲到的buffer pool中存在一个change buffer的缓存,而内存中没有需要的数据页,可以将这个修改缓存在change buffer中,当以后有查询加载了这个数据页时,再应用这个修改。
启用change buffer是不是一定就是好的?</