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 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> MySQL技术内幕:InnoDB存储引擎阅读笔记(一) -> 正文阅读

[大数据]MySQL技术内幕:InnoDB存储引擎阅读笔记(一)

第一章以及第二章前半部分

数据库和数据库实例的区别

数据库是二进制文件,存放在二级存储器,数据库实例是程序进程,用来完成对数据库的一系列操作。

数据库体系结构

在这里插入图片描述
包括以下几部分:

  1. 连接池组件
  2. 管理服务和工具组件
  3. SQL接口组件
  4. 查询分析器组件
  5. 优化器
  6. 缓冲
  7. 插件式存储引擎
  8. 物理文件

InnoDB引擎的特点

  • 存储引擎是基于表的,而不是数据库
  • 行锁设计
  • 支持外键
  • 支持非锁定读(默认读操作不会产生锁)
  • InnoDB使用MVCC(多版本并发控制)来获得高并发性。实现了SQL标准的4种隔离级别
  • 使用next-key locking的策略避免幻读产生
  • 提供插入缓冲、二次写、自适应哈希索引、预读等功能
  • 可以查看MySQL官方手册了解几个不同存储引擎的区别

InnoDB体系架构

在这里插入图片描述InnoDB存储引擎有多个内存块,可以认为这些内存块组成一个大的内存池,负责:

  • 维护所有进程/线程需要访问的多个内部数据结构
  • 缓存磁盘上数据,方便快速地读取,同时对磁盘文件的数据修改之前在这里缓存
  • 重做日志缓冲

后台线程的主要作用是刷新内存池中的数据,保证缓冲池中内存缓存的是最新的数据,此外将已经修改的数据文件刷新到磁盘文件,保证在数据库发生异常的情况下InnoDB能回复到正常运行状态。

线程

InnoDB是多线程的模型。所以后台有多个不同的后台线程,处理不同任务。

  • Master thread:核心的后台线程,负责将缓冲池中的数据异步刷新到磁盘,保证数据一致性。包括1脏页的刷新,2合并插入缓冲,3UNDO页的回收。
  • IO Thread:InnoDB中大量使用AIO处理IO请求。IO Thread负责这些IO请求的回调处理。
  • Purge Thread:事务被提交后,其锁使用的undo_log可能不再需要,因此需要Purge Thread来回收已经使用并分配的undo页。Purge Thread以前是在Master Thread中的,现在可以单独作为线程使用,使用 innodb_purge_threads = 1来启用,且支持多个线程。
  • Purge Cleaner Thread :将之前版本中脏页的刷新操作都放入到单独的线程中来完成,减轻Master Thread的工作,以及对于用户查询线程的阻塞。

内存

InnoDB存储引擎是基于磁盘存储的。将记录按照页的方式进行管理。
缓冲池的作用是为了缓解cpu速度和磁盘读取速度的差距。
缓冲池简单说 就是 一块内存区域。通过内存速度来弥补磁盘速度较慢对数据库性能影响。

  • 读取操作:先将磁盘的页放入缓冲池,如果下一次再读取相同的页,判断是否在缓冲池中,如果在,就是命中,不在,则从磁盘读取。
  • 修改操作:先修改在缓冲池中的页,以一定频率刷新到磁盘上。以一种Checkpoint机制刷新回到磁盘。
  • 缓冲池大小可以通过 参数 innodb_buffer_pool_size 设置。
  • 缓冲池中具体缓存的数据页,不能简单地认为只有索引页和数据页。如下图:
  • 在这里插入图片描述
  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-11-11 12:46:40  更:2021-11-11 12:48:51 
 
开发: 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 5:18:51-

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