• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

InnoDB存储引擎后台线程与内存池

mysql 搞代码 4年前 (2022-01-09) 17次浏览 已收录 0个评论

InnoDB完整支持ACID事务、行锁设计、支持MVCC、提供一致性非锁定读、支持外键-gt;事务安全,适合OLTP应用(在线事务处理)。Mytri

InnoDB完整支持ACID事务、行锁设计、支持MVCC、提供一致性非锁定读、支持外键->事务安全,适合OLTP应用(在线事务处理)。
Mytrix.,Inc.在InnoDB上存储超过1TB的数据,,还有一些其他站点在InnoDB上处理平均每次800插入/更新操作->证明InnoDB是一个高性能、高可用、高可扩展性的存储引擎。
事务ACID:
atomicity原子性:事务commit提交或rollback回滚
consistency一致性:事务发生前后完整性约束不被破坏
isolation隔离性:两个事本文来源gao.dai.ma.com搞@代*码#网务互不干扰(即一个事务不可能看到其他事务中间时刻数据)
durability持久性:更改持久(commit后不发生rollback)

InnoDB体系结构如下:

其中:
后台线程,负责:
刷新内存池中的数据;
将已修改的数据文件刷新到磁盘文件中;
保证数据库发生异常情况下InnoDB能恢复到正常运行状态。
默认情况下,后台线程有7个:
1个master thread;
4个IO thread(insert buffer、log、read、write)->可通过配置文件中的innodb_file_io_threads参数进行修改,在mysql5.5以及innodb plugin版本中,默认IO线程均增加到了4个,读写线程分别用参数innodb_read_io_thread和innodb_write_io_thread来表示;
1个lock锁监控线程;
1个error错误监控线程。
内存池,由多个内存块组成一个大的内存池,负责:
维护所有进程/线程需要访问的多个内存数据结构;
缓存磁盘上的数据,方便快速读取,并且在对磁盘文件的数据进行修改之前在这缓存;
重做日志缓冲;
……

内存池结构如下:

其中:
buffer pool缓冲池:包括data page数据页、index page索引页、插入缓冲、锁信息、自适应哈希索引、数据字典信息;
redo log buffer重做日志缓冲池:每秒产生的事务量在这个缓冲大小之内;
additional memory buffer额外的内存池:每个缓冲池中的帧缓冲还有对应的缓冲控制对象,如LRU、锁等待等。
InnoDB的工作方式是将数据文件按页(每页16K)读取到缓冲池,然后按LRU最近最少使用算法来保留在缓冲池中的缓存数据;如果文件需要修改,总是首先修改在缓冲池中的页(发生修改后,该页即为脏页),然后按照一定的频率将脏页flush刷新到文件。

参考:


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:InnoDB存储引擎后台线程与内存池
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址