栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

InnoDB存储引擎学习笔记(更新ing)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

InnoDB存储引擎学习笔记(更新ing)

InnoDB存储引擎 1.MySQL常用的几大存储引擎介绍
//通过该命令可查看当前mysql支持的存储引擎
show engines;

1.InnoDB

InnoDB存储引擎支持事务,其设计目标主要面向在线事务处理(OLTP)的应用

特点:

  1. 行锁
  2. 支持外键
  3. 非锁定读(默认读不会产生锁)

MySQL5.5.8开始,InnoDB是默认存储引擎

InnoDB通过使用MVCC(多版本并发控制)来获取高并发,并且实现了SQL标准的4种隔离级别,默认是Repeatable级别。同时使用一种叫next-key locking的策略来避免幻读。除此之外,InnoDB存储引擎还提供了插入缓冲(insert buffer)、二次写(double buffer)、自适应哈希索引(adaptive hash index)、预读(read ahead)等高性能和高可用的功能。

InnoDB采用了聚集(涉及B+树)的方式,因此每张表的主键都是按顺序存储的,没有显示的定义主键时,会为每一行生成一个6个字节的RowId作为主键

2.MyISAM

MyISAM不支持事务、表锁涉及,但支持全文索引

3.NDB

集群存储引擎,数据放在内存中(5.1版本开始,非索引数据可以放在磁盘上),主键查找极快

4.Memory

数据存放在内存中,非常适合存储临表、数据仓库的纬度表;默认使用的hash索引

5.Archive

只支持insert和select操作

2.InnoDB来了 1.这是InnoDB简单的架构图

内存池:

  1. 维护所有的进程/线程需要访问的多个内部数据结构
  2. 缓存磁盘上的数据,加快访问速度。同时在对磁盘文件数据修改之前在这里缓存
  3. 重做日志(redo log)缓冲

后台线程:主要负责刷新内存池中的数据,保证缓冲池的缓存是最近的数据;将已修改的数据文件刷新到磁盘文件,发生异常时也能借此恢复到正常状态

2.详细介绍后台线程

InnoDB是多线程模型,因此后台有多个不同的后台线程,负责处理不同的任务:

1.Master Thread

核心后台线程,主要负责将缓冲池的数据异步刷新到磁盘(包括脏页的刷新、合并插入缓冲、undo页的回收),保证数据的一致性

2.IO Thread

InnoDB中大量使用AIO(Async IO,异步io)来处理写请求,这样可以极大提高数据库性能。

IO Thread就是负责这些AIO的回调处理

3.Purge Thread

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

4.Page Cleaner Thread

其作用是将之前版本中的脏页刷新操作都放入到单独的线程中来完成,减轻原Master Thread的工作及对用户查询线程的阻塞,进一步提高InnoDB的性能

3.InnoDB内存介绍
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/590760.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号