首页 > 其他分享 >二、InnoDB存储引擎

二、InnoDB存储引擎

时间:2023-08-26 12:22:30浏览次数:48  
标签:存储 缓冲 索引 引擎 InnoDB IO

2.3 InnoDB体系架构

image

1)后台线程

Master Thread:核心线程,主要负责将缓冲池的数据异步刷新到磁盘,保证数据的一致性,包括脏页的刷新、合并插入缓冲、UNDO页的回收等。

IO Thread:处理IO请求

Purge Thread:事务被提交后,其所使用的 undolog 可能不再需要,因此需要 PurgeThread 来回收已经使用并分配的 undo页。

2)内存

缓冲池:简单来说就是一块内存区域,通过内存的速度来弥补磁盘速度较慢对数据库性能的影响。

  • 读取:在数据库中进行读取页的操作,首先将从磁盘读到的页存放在缓冲池中,这个过程称为将页 'FIX' 在缓冲池中。下一次再读相同的页时,首先判断该页是否在缓冲池中。若在,直接读取。否则,读取磁盘。
  • 修改:首先修改缓冲池中的页,再以一定频率刷新到磁盘(checkPoint机制刷新到磁盘 checkpoint机制
    image
    缓冲池管理:LRU(最近最少使用)算法来管理

重做日志缓冲:将重做日志信息放到这里,然后按一定频率将其刷新到重做日志文件。

2.6 InnoDB关键特性

1)插入缓冲

对于非聚集索引的插入或更新操作,不是每一次直接插入到索引页中,而是先判断插入的非聚集索引页是否在缓冲池中,若在,则直接插入;若不在,则先放入到一个 Insert Buffer 中,好似欺骗。

数据库这个非聚集的索引已经插到叶子节点,而实际并没有,只是存放在另一个位置。然后再以一定的频率和情况进行 Insert Buffer和辅助索引页子节点的 merge(合并)操作。这时通常能将多个插入合并到一个操作中(因为在一个索引页中),这就大大提高了对于非聚集索引插入的性能。

然而 Insert Buffer 的使用需要同时满足两个条件:

  • 索引是辅助索引(secondary index)
  • 索引不是唯一的

2)两次写

image

3)自适应哈希索引

InnoDB存储引擎会监控对表上各索引页的查询。如果观察到建立哈希索引可以带来速度提升,则建立哈希索引,称之为自适应哈希索引(adaptive hash index,AHI)。AHI是通过缓冲池的 B+树页构造而来,因此建立的速度很快,而且不需要对整张表构建哈希索引。InnoDB存储引擎会自动根据访问的频率和模式来自动地为某些热点页建立哈希索引。

AHI 有一个要求,即对这个页的连续访问模式必须是一样的。例如对于 (a,b) 这样的联合索引页,其访问模式可以是以下情况:

  • where a=XX
  • where a=XXX and b=XXX

访问模式一样指的是查询的条件一样,若交替进行上述两种查询,那么 InnoDB 存储引擎不会对该页构造 AHI。此外 AHI 还有如下的要求:

  • 以该模式访问了100次
  • 页通过该模式访问了N次,其中 N=页中记录*1 / 16

4)异步IO

用户可以在发出一个IO请求后立即再发出另一个IO请求,当全部IO请求发送完成后,等待所有IO操作的完成,这就是AIO。

5)刷新邻接页

:当刷新一个脏页时,InnoDB存储引擎会检测该页所在区(extent)的所有页,如果是脏页,那么一起进行刷新。

2.8 小结

本章对InnoDB存储引擎及其体系结构进行了概述,先给出了InnoDB存储引擎的历史、InnoDB存储引擎的体系结构(包括后台线程和内存结构):之后又详细介绍了InnoDB存储引擎的关键特性,这些特性使InnoDB存储引擎变得更具 '魅力';最后介绍了启动和关闭MySQL时一些配置文件参数对InnoDB存储引擎的影响。

通过本章的铺垫,读者在学习后面的内容时就会对InnoDB引擎理解得更深入和更全面。

标签:存储,缓冲,索引,引擎,InnoDB,IO
From: https://www.cnblogs.com/lhxBlogs/p/17658638.html

相关文章

  • 【MySQL 8.0】在组复制(MGR)的基础上创建InnoDB Cluster
    [root@node04~]#wgethttps://dev.mysql.com/get/Downloads/MySQL-Shell/mysql-shell-8.0.32-1.el7.x86_64.rpm[root@node04~]#yumlocalinstallmysql-shell-8.0.32-1.el7.x86_64.rpm-y[root@node04~]#mysqlshMySQLJS>\connectroot@node01:3306MySQL......
  • openGauss学习笔记-51 openGauss 高级特性-列存储
    openGauss学习笔记-51openGauss高级特性-列存储openGauss支持行列混合存储。行存储是指将表按行存储到硬盘分区上,列存储是指将表按列存储到硬盘分区上。行、列存储模型各有优劣,建议根据实际情况选择。通常openGauss用于OLTP(联机事务处理)场景的数据库,默认使用行存储,仅对执行复杂......
  • 通过Maven将文件上传到阿里云对象存储OSS
    首先在阿里云开通对象存储OSS功能(免费的),然后在Bucket列表中创建一个Bucket,地域建议选择华东1(杭州),因为这样后面就不用修改Endpoint,或者你直接记住Endpoint也行,读写仅限为公共读,其他的选项就默认的就行了。然后在右上角的头像初点击AccessKey管理,选择继续使用AccessKey,点击创建Ac......
  • pytestx容器化执行引擎
    系统架构前端、后端、pytest均以Docker容器运行服务,单独的容器化执行引擎,项目环境隔离,即用即取,用完即齐,简单,高效。前端容器:页面交互,请求后端,展示HTML报告后端容器:接收前端请求,启动任务,构建镜像,触发运行pytest,挂载HTML报告pytest容器:拉取项目代码,指定目录执行,生成HTML报......
  • 视频云存储/安防监控视频智能分析网关V3:占道经营功能详解
    违规占道经营者经常会在人流量大、车辆集中的道路两旁摆摊,导致公路交通堵塞,给居民出行的造成不便,而且违规占路密集的地方都是交通事故频频发生的区域。TSINGSEE青犀视频云存储/安防监控视频/AI智能分析网关V3运用视频+AI智能分析技术,实现对城市管理中违规、违法事件实时监控监管、......
  • 视频集中存储/云存储平台EasyCVR国标GB28181协议接入的报文交互数据包分析
    安防视频监控/视频集中存储/云存储/磁盘阵列EasyCVR平台可拓展性强、视频能力灵活、部署轻快,可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等,以及支持厂家私有协议与SDK接入,包括海康Ehome、海大宇等设备的SDK等。视频汇聚融合管理平台EasyCVR既具备传统安防视频监控的能力,......
  • 案例分享|驶向智能未来,为新能源汽车网联新引擎注入强劲动力
    在当前环保意识不断增强的国际趋势下,人们对近期热点话题如日本核污染水处理、绿色电力和清洁能源的关注度颇高。尤其是日本核污染水排海决定引发了高度关注。图摘自24日微博要闻在环保与能源结构上的不断探索,新能源越来越成为全社会关注的焦点。随着汽车工业的发展,新能源汽车市场潜......
  • 大模型存储实践|焱融全闪加速 AI 大模型开发应用
    百舸争流 AI存储是大模型高效训练的关键技术人工智能正在从文本、语音、视觉等单模态智能,向着多种模态融合的通用人工智能方向发展。基于多模态的预训练大模型将成为人工智能基础设施,AI大模型是“人工智能预训练大模型”的简称,是“大算力+强算法”结合的产物。它结合了"预训练"......
  • 焱融科技入选中国数据存储领域“最具商业合作价值企业”
    近日,数据智能产业创新服务媒体数据猿联合上海大数据联盟正式发布《2023中国数据存储领域最具商业合作价值企业》,焱融科技凭借在数据存储领域领先的存储技术实力和产品性能、成熟的行业和场景落地实践实力入选榜单。当前,无论是大数据、人工智能、物联网等技术的广泛应用,还是金融、......
  • 磁盘阵列/视频集中存储/安防监控视频智能分析平台新功能:人员聚集
    人工智能技术已经越来越多地融入到视频监控领域中,近期我们也发布了基于AI智能视频云存储/安防监控视频AI智能分析平台的众多新功能,该平台内置多种AI算法,可对实时视频中的人脸、人体、车辆、物体等进行检测、跟踪与抓拍,支持口罩佩戴检测、安全帽佩戴检测、人体检测、区域入侵检测、......