innodb存储引擎(第2版) 读后感(一)

来源:互联网 发布:js设置标签隐藏 编辑:程序博客网 时间:2024/05/01 05:38

1,innodb 后台线程管理:

  1.1 Master thread

    主要负责将缓冲池中的数据异步刷新到磁盘,保证数据的一致性,包括脏页的刷新、合并插入缓冲(INSERT BUFFER)、UNDO 页的回收等

  1.2 IO thread

   主要是负责这些AIO 请求的回调,通过innodb_read_io_threads 和innodb_write_io_threads参数定义

  1.3 purge thread

    事务被提交后,其所使用的undolog 可能不再需要,因此需要PurgeThread 来回收已经使用并分配的undo 页,可以使用参数innodb_purge_threads=1 配置多个线程

  1.4 Page Cleane

    InnoDB 1.2.x 版本中引入的。其作用是将之前版本中脏页的刷新操作都放入到单独的线程中来完成

 

2,innodb 内存管理:

 2.1 缓冲池

缓冲池中缓存的数据页类型有:索引页、数据页、undo 页、插入缓冲(insert buffer)、自适应哈希索引(adaptive hash index)、InnoDB 存储的锁信息(lock
info)、数据字典信息(data dictionary)等。.可以使用innodb_buffer_pool_size 和innodb_buffer_pool_instance配置。

缓冲池包括LRU list , free list 和flush list 组成

 LRU list :数据库中的缓冲池是通过LRU(Latest Recent Used,最近最少使用)算法来进行管理的,midpoint 位置可由参数innodb_old_blocks_pct 控制,innodb_old_blocks_time,用于表示页读取到mid 位置后需要等待多久才会被加入到LRU 列表的热端,当页从LRU 列表的old 部分加入到new 部分时,称此时发生的操作为page made young,而因为innodb_old_blocks_time 的设置而导致页没有从old 部分移动到new 部分的操作称为page not made young。InnoDB 存储引擎从1.0.x 版本开始支持压缩页的功能,即将原本16KB 的页压缩为1KB、2KB、4KB 和8KB。对于非16KB 的页,是通过unzip_LRU 列表进行管理的

free list: 记录了数据库刚启动时的空闲页列表

flush list: 记录了脏页列表

2.2 重做日志缓冲

InnoDB 存储引擎首先将重做日志信息先放入到这个缓冲区,然后
按一定频率将其刷新到重做日志文件。该值可由配置参数innodb_log_buffer_size 控制,默认为
8MB

2.3 额外的内存池

在对一些数据结构本身的内存进行分配时,需要从额外的内存池中进行
申请,在申请了很大的InnoDB 缓冲池时,也应考虑相应地增加这个值,该值由innodb_additional_mem_pool_size指定

 

0 0
原创粉丝点击