【转】mysql-innodb-buffer pool 结构分析
16lz
2021-01-22
转自:http://blog.csdn.net/wyzxg/article/details/7700394
MySQL官网配置说明地址:http://dev.mysql.com/doc/refman/5.5/en/innodb-parameters.html
其他参考:
《高性能MySQL》 - 8.4.5 InnoDB缓冲池
《MySQL技术内幕InnoDB存储引擎》(第二版内容有所更新) - 2.3 InnoDB体系结构
##############################################
书中是先对后台线程进行说明,然后对内存部分进行说明,这样更好理解innoDB引擎内存池在使用时的过程。
【后台线程】
InnoDB有多个内存块,可以认为这些内存块组成了一个大的内存池,负责如下工作:
维护所有进程/线程需要访问的多个内部数据结构。
缓存磁盘上的数据,方便快速的读取,并且在对磁盘文件的数据进行修改之前在这里缓存。
重做日志(redo log)缓冲。
后台线程的主要作用是负责刷新内存池中的数据,保证缓冲池中的内存缓存的是最近的数据。此外,将已修改的数据文件刷新到磁盘文件,同时保证在数据库发生异常情况下InnoDB能恢复到正常运行状态。
默认情况下,InnoDB存储引擎的后台线程有7个,4个IO thread,1个master thread,1个锁(lock)监控线程,1个错误监控线程。IO thread的数量由配置文件中的innodb_file_io_threads参数控制,默认为4,可以通过show engine innodb status \G查看IO thread,例如:
更多相关文章
- mysql批量结束线程
- 创建线程时设置CPU关联
- Python爬虫系列(三)多线程爬取斗图网站(皮皮虾,我们上车)
- 我在Firefox中遇到内存泄漏或内存使用率高吗?
- 转载和积累系列 - Nodejs HTTP多线程
- AngularJS - 删除绑定以避免内存泄漏
- python 的多线程 调用input后 别的线程也不运行了
- Python是如何进行内存管理的
- python之内存概念