Buffer Pool的家庭地位如何?
Buffer Pool是啥?
数据库中的数据,实际上最终都要存放在磁盘文件。但对DB执行CRUD时,不可能直接更新磁盘数据,因为若你对磁盘进行随机读写操作,那速度太慢,随便一个大磁盘文件的随机读写操作,可能都要几百ms。真这么玩,你的DB每秒也就只能处理几百个请求了!
在对数据库执行CRUD时,实际上主要都是操作内存里的Buffer Pool中的数据,即你实际上主要是对DB的内存里的数据结构进行增删改。
在DB内存里执行一堆增删改操作后,内存数据是更新了,但这时若DB突然宕机,那内存里更新好的数据不就都没了?
所以MySQL也怕这个问题,于是引入了redo log,你在对内存数据进行增删改时,他同时也会把增删改对应日志写入redo log:
即使DB突然宕机,没事儿,只要从redo log日志文件读出你之前做过哪些增删改操作,瞬间就能重新把这些增删改操作在你的内存里执行一遍,就恢复了之前做过哪些操作了。
总结
Buffer Pool就是DB中我们第一个必须要搞清楚的核心组件,因为增删改操作首先就是针对这个内存中的Buffer Pool里的数据执行的,同时配合了后续的redo log、刷磁盘等机制和操作。
所以Buffer Pool就是数据库的一个内存组件,里面缓存了磁盘上的真实数据,Java业务系统对数据库执行的增删改操作,其实主要就是对这个内存数据结构中的缓存数据执行。
#Java求职##学习路径#