MySQL——InnoDB引擎架构

打印 上一主题 下一主题

主题 2382|帖子 2382|积分 7146

目录
1.InnoDB引擎架构
2.架构-内存架构 
2.1Buffer Pool
2.2Change Buffer
2.21ChangeBuffer意义 
2.3自顺应hash 
2.4日记缓冲区
3.架构-磁盘架构
3.1System Tablespace
3.2File-Per-Table Tablesspaces
 3.3General Tablesspaces
3.4UndoTablespaces
3.5 Temporary Tablespaces
3.6Doublewrite Buffer Files 
3.7Redo Log
4.架构-后台线程
5.总结


1.InnoDB引擎架构

   MySQL5.5版本开始,默认使用InnoDB存储引擎,它擅长事务处理,具有瓦解规复特性,在一样平常开辟中使用非常广泛。下面是InnoDB架构图,左侧为内存结构,右侧为磁盘结构。
  
 
2.架构-内存架构 

2.1Buffer Pool

   没有缓冲池,每一次操作都要去操作磁盘空间,造成大量的磁盘IO,非常浪费性能
  

2.2Change Buffer

   子要针对非唯一二级索引,我们举行增删改操作,在BufferPool不存在的时间,不归去直接操作磁盘,先把数据的变动缓存在ChangeBuffer中,未来读取数据再合并到bufferpool
  

2.21ChangeBuffer意义 

   与聚集索引差异,二级索引通常是非唯一的,并且以相对随机的次序插入二级索引。同样,删除和更新大概会影响索引树中不相邻的二级索引页,如果每一次都操作磁盘,会造成大量的磁盘IO。有了changebuffer之后,我们可以在缓冲池中举行合并处理,减少磁盘IO
  2.3自顺应hash 


2.4日记缓冲区

   参数:innodb_log_size;缓冲区大小
             innodb_flush_log_at_trx_commit;日记革新到磁盘机遇
  

  


3.架构-磁盘架构

3.1System Tablespace


3.2File-Per-Table Tablesspaces


每一个ibd文件都是duli的表空间

 3.3General Tablesspaces

   通用表空间需要我们自己去创建,并且指定关联的表空间,用的不多了解一下就行
  

3.4UndoTablespaces


3.5 Temporary Tablespaces


3.6Doublewrite Buffer Files 


3.7Redo Log


4.架构-后台线程

   磁盘架构和内存架构我们都了解了,那么内存架构是怎么写到是怎么写到磁盘架构呢
  这重要作用就是后台线程
  1.Master Thread
  核心后台线程,负责调度其他线程,还负责将缓冲池中的数据异步革新到磁盘中,保持数据的一致性,还包括脏页的革新,合并插入缓存,undo页的接纳
  2.IO Thread
  在InnoDB存储引擎中大量使用了AIO来处理哀求这样可以极大提高数据库的性能,而IOThread重要负责这些IO哀求的回调
  

  3.Purge Thread
  重要用于接纳事务已经提交了的undo log,在事务提交之后undo log肯能不消了,就用它往返收
  4.Page Clear Thread
  协助Master Thread革新脏页到磁盘的线程,可以减轻MasterThread工作压力,减少阻塞
  


5.总结

   当我们去操作MySQL的时间先去操作缓冲区,如果缓冲区没有数据会将磁盘中的数据加载回来,然后再存储在缓冲区中,我么在增删改的时间都去操作缓冲区,然后缓冲区中的数据 会以肯定频率通过后台线程写道磁盘架构中举行永久化保存

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

立聪堂德州十三局店

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表