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(九)存储引擎、索引 -> 正文阅读

[大数据]Mysql(九)存储引擎、索引

一、存储引擎

什么是存储引擎

存储引擎就是mysql中的一个组件,这个组件的作用就是为不同的表类型来处理SQL操作.

简单来说,存储引擎的作用就是处理SQL操作的.

查看所有的存储引擎:SHOW ENGINES

MYISAM、INNODB、MEMORY的区别

对比项????????????????????????MyISAMInnoDBMEMORY
外键不支持支持不支持
事务不支持支持不支持
行表锁表锁,操作任何一行数据都会锁住整个表

行锁,只锁定操作的行,适合高并发

InnoDB行锁是通过给索引上的索引项加锁来实现的,只有通过索引条件检索数据,InnoDB才使用行级锁,否则,InnoDB将使用表锁

表锁,操作任何一行数据都会锁住整个表
缓存只缓存索引,不缓存真实数据不仅缓存索引,还要缓存真实数据,对内存的要求较高,而内存大小对性能影响也较大
关注节约资源,消耗少,简单业务并发,事务,更大资源
默认安装YY
默认使用NY
自带系统表使用YN
集群索引????????????????不支持支持不支持
使用场景以查询为主,较少的更新删除操作,对事务完整性、并发性要求不高的情况对事务的完整性有比较高的要求,并发情况下要求数据一致性更新不频繁的小表,用来快速得到访问结果

三、索引

什么是索引?

索引是帮助mysql高效获取数据的数据结构,一般来说索引本身也很大,不能全部存在内存中,因此索引往往保存在硬盘中

索引的优势

提高了检索效率,降低了数据io成本

通过索引对数据进行排序,降低了数据排序的成本,降低了cpu的消耗

索引的劣势

虽然索大大提高了查询速度,但是同时降低了更新表的速度,比如对表进行更新了之后,mysql不仅要更新数据,还要更新索引文件

索引也是一张表,保存了主键与索引字段并指向实体表的记录,所以也占用了不少空间

索引分类

按照功能分类:

普通索引:最基本的索引,没有任何限制

唯一索引:索引列的值必须唯一,但允许空,如果是组合索引,列值组合必须唯一

主键索引:一种特殊的唯一索引,不允许空,在建表时主键列同时创建主键索引

联合索引:将单列索引进行组合

外键索引:只有InnoDB支持,用来保证数据一致性,完整性和实现级联操作

全文索引:快速匹配全部文档的方式,innodb5.6版本后才支持。memory不支持????????

按照数据结构分类:

B Tree索引:Mysql使用最频繁的索引,是Innodb和myisam存储引擎默认的索引类型,底层是基于b+tree

hash索引:mysql中menmory存储引擎默认支持的索引类型

磁盘存储的特点

系统从磁盘读取数据到内存时是以磁盘块为基本单位的,同一块磁盘块的数据会被一次性读取出来,而不是需要什么读取什么

例如有三个磁盘块,第一个磁盘块存储1、2、3,第二个磁盘块存储4、5、6,第三个磁盘块存储7、8、9.现在想要读取数据5,会将4、5、6都读到内存中。

B-TREE(以innodb为例):

?每个节点中不仅保存key,还保存着数据,会增加查询数据时磁盘的IO次数

B+Tree

非叶子节点只存储key,所有的数据都存储在叶子节点上,所有的叶子节点之间都有指针,方便进行范围查找

B-Tree和B+Tree的区别

?1、b-tree的关键字和数据都是放在一起的,而b+tree非叶子节点只有关键字和指向下一节点的指针,数据放在叶子节点上

2、在b-tree中,越靠近根节点的数据查找时间更快,只要找到关键字即可确认数据的位置,而b+tree中每个记录查找的时间基本上是一样的,都要从根节点出发到叶子节点,然后在每个叶子节点之间还需要计算,由于b+tree中非叶子节点不存放数据,所有可以容纳的元素更多,减少了io的次数,整体看上去树高比b-tree小。

3、b+tree的叶子节点使用指针连接在一起,方便顺序遍历

为什么选用b+tree作为索引数据结构

1、b+tree读写代价更低,它的非叶子节点不含数据信息,所以一块磁盘中能存放的索引就更多,一次读入内存中的关键字也就阅读,从而减少了磁盘io

2、b+tree读写更加稳定

3、b+tree的叶子节点使用指针连接在一起,方便了顺序遍历

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-10-16 19:42:31  更:2021-10-16 19:42:35 
 
开发: 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 1:00:04-

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