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

Mysql 索引

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

Mysql 索引

mysql

innodb引擎下常用索引类型是B+树。B+树是一颗N叉树,是一颗矮胖的树,层高一般是1-3层,就能满足千万级别数据的存储,所以只需要经过3次IO,所以这就是B+树查询快的原因。

B+树 分 聚簇索引和普通索引

聚簇索引:一般都是以自增主键作为聚簇索引,聚簇索引的特点,在叶子节点中会保存每行中所有数据。而普通索引在叶子节点是保存的索引字段及主键。

思考:为什么要用自增主键做聚簇索引?

因为:自增主键是有序的,在维护索引的过程中,每次插入一条记录都是追加操作,不涉及挪动其他记录,不触发叶子节点的分裂。

加餐:

在InnoDB存储引擎中,表都是根据主键顺序组织存放的,这种存储方式的表称为索引组织表。

InnoDB逻辑存储结构:表空间—》段——》区——》页

隔离级别:
分为读未提交、读已提交、可重复读、串行化。
mysql默认的隔离级别是可重复读,下面重点讲一下可重复读。事务T启动的时候会创建一个视图read-view,之后事务T执行期间,即使有其他事务修改了数据,事务T看到的仍然跟在启动时看到的一样。可重复读的核心就是一致性读。
一个数据版本,对于一个事务视图来说,除了自己的更新总是可见以外,有三种情况:
1、版本未提交,不可见;
2、版本已提交,但是在视图创建后提交的,不可见;
3、版本已提交,而且是在视图创建前提交的,可见。
而事务更新数据的时候,只能用当前读。如果当前的记录的行锁被其他事务占用的话,就需要进入锁等待。更新数据都是先读后写的,而这个读,只能读当前的值,称为“当前读”。这里,我们提到一个概念,叫做当前读。其实除了update语句外,select语句如果加锁,也是当前读。当前读,总是读取已经提交完成的最新版本。

而读提交的逻辑和可重复读的逻辑类似,他们最主要的区别是:
在可重复读隔离级别下,只需要在事务开始的时候创建一致性视图,之后事务里的其他查询都共用这个一致性视图;
在读提交隔离级别下,每一个语句执行前都会重新算出一个新的视图。

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

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

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