3.NIO包含三个组件:Buffer(缓冲区),Channel(通道),Selector(多路复用选择器)
设计的目的就是当上面提到的+buffers/cache表示的可用内存都已使用完,新的读写请求过来后,会把内存中的部分数据写入磁盘,从而把磁盘的部分空间当做虚拟内存来使用。...
我们执行增删改操作的时候,首先会在Buffer Pool中加独占锁更新缓存页,那么缓存页和底层的物理磁盘上的数据页的原理,在更新完Buffer Pool中的缓存页之后,必须要写一条redo log,这样才能记录下来我们对数据库做的修改。redo...
执行事务的时候,里面很多INSERT、UPDATE和DELETE语句都在更新缓存页里的数据,但是万一事务回滚,你必须有每条SQL语句对应的undo log回滚日志,根据回滚日志去恢复缓存页里被更新的数据。...
提交事务的时候,redo日志必须是刷入磁盘文件里的。这样可以严格的保证提交事务之后,数据是绝对不会丢失的,因为有redo日志在磁盘文件里可以恢复你做的所有修改。如果要是选择0的话,可能你提交事务之后,mysql宕机,那么此时re...
假如6成功之后,mysql宕机了,此时p1修改已写⼊磁盘,但是p2的修改还未写⼊磁盘,最终导致userid=666的记录被修改成功了,userid=888的数据被修改失败了,数据是有问题的...
在对数据库执行增删改操作的时候,实际上主要都是针对内存里的Buffer Pool中的数据进行的,也
我们知道,当limit offset rows中的offset很大时,会出现效率问题:
但一旦涉及到分库分表,就会引申出分布式系统中唯一主键ID的生成问题,永不迁移数据和避免热点的文章中要求需要唯一ID的特性: