MySQL:Buffer Pool、Redo log、Undo log、Binlog笔记
MySQL是计算机程序常用的开源数据库管理系统,MySQL技能一直是面试中高频率命中考题,下面一起简单复盘下MySQL基础知识:MySQL是个支持插拔式的数据库管理系统软件,从存储引擎到解析器都可以被替换,下面以Innodb存储引擎为例进行分析。MySQL对内存的管理以页为单位(16k)从磁盘读取到内存的Buffer Pool中,当查询数据时命中数据连同数据伙伴一起读到Buffer Pool中,当写数据时,会写到Buffer Pool中和Redo log中,Redo log是顺序存储,存储引擎是随机存储,Redo log被当作数据恢复日志使用,用来记录数据库宕机、丢失后数据恢复为主(先预写日志Redo Buffer,再进行刷盘操作),因此Redo log能保证数据的不丢失。Undo log是支撑事务回滚操作的文件系统,当修改数据并且进行刷盘后,回复刷盘前的数据靠Undo log进行记录恢复。Binlog和Redo log有着相似之处,记录修改后的数据,Binlog侧重于逻辑日志,记录对数据内存页位置进行修改,属于Server层,Redo log侧重实际的写数据,属于存储引擎层。MySQL的集群高可用主要靠Binlog日志进行实现。
转载自:https://segmentfault.com/a/1190000042187602