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

Mysql(九)存储引擎、索引

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

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的叶子节点使用指针连接在一起,方便了顺序遍历

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

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

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