MySQL学习笔记:InnoDB后台进程与高可用实践
需积分: 10 89 浏览量
更新于2024-07-17
收藏 1.12MB DOC 举报
"MySQL学习笔记包含了关于MySQL内存结构、后台进程、InnoDB特性和高可用实践的详细内容,适合提升至中级MySQL水平的学习者参考。"
MySQL数据库中的InnoDB存储引擎有着复杂的后台工作流程,这些流程确保了数据的一致性和高效性能。其中,`master_thread`是核心线程,它负责各种关键操作,如脏页刷新、插入缓冲合并和无用undo页的回收。在InnoDB 1.2.x之后,脏页刷新由单独的`page_cleaner thread`处理,而undo页的回收则由`purge thread`独立完成。
`master_thread`执行以下任务:
- 每秒执行一次:日志缓冲刷新、可能的合并插入缓冲、最多刷新100个脏页、在无用户活动时切换到background loop。
- 每10秒执行一次:刷新100个脏页、始终合并5个插入缓冲、日志环空刷新、无用undo删除、可能再刷新100或10个脏页。
- background loop中:无用undo删除、总是合并20个插入缓冲并返回主循环。
如果插入缓冲超过20个,InnoDB会考虑系统的IO能力,通过`innodb_io_capacity`参数进行调整。该参数默认值为200,表示IO吞吐量。插入缓冲的合并数量为`innodb_io_capacity`值的5%,脏页的刷新数量为`innodb_io_capacity`的2倍。
此外,InnoDB还使用多个IO线程来提高并发处理能力:
- `read_io_threads`:负责读取操作,可通过`innodb_read_io_threads`调整,默认为4。
- `write_io_threads`:处理写入操作,可通过`innodb_write_io_threads`调整,默认也为4。
`purge_thread`用于回收已使用的Undo页,可以配置`Innodb_purge_threads`参数来增加线程数,但在InnoDB 1.1版本中,该值只能设置为1。
理解这些后台进程和参数对于优化InnoDB的性能和确保数据一致性至关重要。通过适当调整这些参数,可以根据硬件能力和应用需求来定制MySQL的性能表现,从而实现更高效的数据管理。
160 浏览量
636 浏览量
103 浏览量
191 浏览量
2021-12-30 上传
117 浏览量
412 浏览量
DBGuardian
- 粉丝: 93
- 资源: 5
最新资源
- ftp客户端工具8uftp.rar
- .github:在存储库之间自动分发GitHub Actions工作流
- 01-0005 拍卖系统.zip
- libarayManager系统
- learning-from-human-preferences:复制了OpenAI和DeepMind的“从人类偏好中进行深度强化学习”
- stacshack-2021:StacsHack 2021
- t3chnique:实验 Clojure TADS3 VM
- Group_1_Coursework_SEM:SEM小组1的课程
- myps4host:主持人
- 企业:测试
- ios14移动银行_财务管理应用界面sketch&figma素材.zip
- smishy-taskflow:在org-mode之上的GTD实现
- Java ZIP压缩一个或多个文件(解决中文名称乱码).rar
- collective-instant:立即在 Widen Media Collective 中搜索资产
- pppNOW-开源
- ILD--VueJS-2.0:创新照明设计网站