IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> innodb存储引擎 -> 正文阅读

[大数据]innodb存储引擎

innodb引擎特点:

支持事务(myisam无)
支持行锁,表锁(myisam只支持表锁)
支持外键(myisam无)
通过对版本并发控制(mvcc)来获得高并发性
插入缓存(insert buffer)
二次写(double write)
自适应哈希索引
聚集索引

innodb引擎在mysql数据库5.5.8版本开始,是默认的存储引擎

innodb体系架构

在这里插入图片描述

后台线程

主要作用就是负责刷新内存池中的数据,保证缓冲池中的内存缓存的是最近的数据。
1.master thread
他是一个核心的后要线程,主要负责将缓冲池中的数据异步刷新到磁盘,保证数据的一致性。
2.IO Thread
使用大量的AIO来处理写IO请求,这样可以极大提高数据库的性能
3.purge thread
事务被提交后,时期锁使用的undo 可能不再需要,因此需要pruge thread来回收已经使用并分配的undo页,innodb1.2版本后支持多个purge thread
4.page cleaner thread
将之前的版本中脏页的刷新操作放到单独的线程中完成,减轻master thread 工作量

内存

缓存池

缓存池中的数据页类型有索引页,数据页,undo页,插入缓存,自适应哈希索引等,记录是按照页得方式进行管理的

LRU List ,Free List和Flush List

LRU List

LRU算法:
新数据放到链表头部。
每当缓存命中(缓存数据被访问),则将其数据移到链表头部。
当链表慢的时候,将链表尾部数据丢开

在innodb中,新访问的页并不是直接放到LRU列表的头部,而是放到midpoint位置,在列表长度多的5/8处(大约63%)。
为什么要改成这样呢?
为了防止某些SQL操作可能会使缓冲池中的页被刷新移出,从而影响缓冲池的效率
当这个数据页在old区,再次被访问到,会做如下判断
如果这个数据页在LRU链表中old区存在的时间超过了1秒,就把它移动到young区
这个存在时间由innodb_old_blocks_time控制

Free List:

数据库刚启动时内存中还没有读入任何页,此时这些页由FreeList管理,
当需要从缓冲池中分页时,首先从freelist中查找是否有可用的空闲页,若freelist没有能使用的freebuffer,则会把lru末尾的数据释放,若有则直接使用freelist中的页。

Flush List

在LRU列表中的页被修改后,称该页为脏页(dirty page),即缓冲池中的页和磁盘上的页的数据产生了不一致。这时数据库会通过CHECKPOINT机制将脏页刷新回磁盘,而Flush列表中的页即为脏页列表。需要注意的是,脏页既存在于LRU列表中,也存在于Flush列表中。LRU列表用来管理缓冲池中页的可用性,Flush列表用来管理将页刷新回磁盘,二者互不影响。

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-11-30 15:41:10  更:2021-11-30 15:42:17 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 8:55:53-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码