中国可信网站认证,深圳网站设计公司费用大概多少,wordpress侧边栏自定义,cms建站系统InnoDB擅长处理事务#xff0c;具有自动崩溃恢复的特性
架构图#xff1a; 由4部分组成#xff1a;
1.Buffer Pool#xff1a;缓冲池#xff0c;缓存表数据和索引数据#xff0c;减少磁盘I/O操作#xff0c;提升效率
2.change Buffer#xff1a;写缓冲区#xff0c…InnoDB擅长处理事务具有自动崩溃恢复的特性
架构图 由4部分组成
1.Buffer Pool缓冲池缓存表数据和索引数据减少磁盘I/O操作提升效率
2.change Buffer写缓冲区针对二级索引页的更新优化措施
3.Log Buffer日志缓冲区缓存写入磁盘是log文件的数据用来优化每次更新操作之后都要写入redo log产生的磁盘I/O
4.Hash index:自适应哈希索引 什么是Buffer Pool
Buffer Pool有缓存页Page和控制块组成
1.缓存页InnoDB引擎以页为单位作为磁盘和内存的交互一个页默认大小16KB
Buffer Pool除了 索引页和数据页还有undo页插入缓存页锁信息自适应哈希索引页。
2.控制块存储着缓存页的表空间信息数据页编号与缓存页在Buffer Pool的地址信息
3.默认大小是128M以Page页为单位Page页16KB控制块一般为数据页的5% 如何判断一个页是否在BP中存储? 在MySQL中有一个Hash表数据结构它使用表空间号数据页编号作为一个keyvalue是缓存页对应的控制块。当我们需要访问某个 页的数据时先从Hash表中根据表空间号页号查看是否有对应的缓存页。 Buffer Pool中如何管理Page
Page页分类在BP的底层采用的是链表数据结构管理Page根据状态分为3种类型 free Page空闲的页未被使用的页 clean Page 被使用的页但数据没有修改过 dirty Page脏页被使用过的页并且数据被修改了缓存页中的数据与磁盘数据不一致
上面说的三种类型InnoDB采用三种链表结构进行维护和管理 free list表示空闲缓冲区管理free Page flush list表示是需要刷新到磁盘的缓冲区管理脏页内部页按照修改时间排序 lru list表示正在使用的缓冲区管理被使用的页以及脏页该缓冲区以 midpoint 为基点前面的链表称为new 列表区存放经常被访问的数据占63%后面的链表称为old列表区存放的是使用较少的数据占37%
注意脏页在fiush链表和LRU链表中互不影响LRU链表负责管理page的可用性和释放而fush list负责管理脏页的刷盘操作。