读快照,当前读
select * from ** where ** 认为是快照读默认启动只有一条查询的事务,加for update就是当前读,其他事务未提交时当前读会阻塞;update 和delete都是当前读
行锁、表锁、间隙所
行锁:主键列或索引列;主键和唯一索引力度最小最轻量级;普通索引锁满足条件的所有行
表锁:无索引列
间隙锁:发生在普通索引,插入时锁住不存在的列所在的间隙,比如6不存在,存在5,10那么就锁住5-10之间所有间隙,左开右闭
普通索引满足5,10,15,20时,当前读=10的记录时,mysql会锁住10这一条,同时锁住5-10以及10-15的间隙不包含两端,防止中间的insert,主要是防止再插入一条10产生幻读
脏读、不可重复读、幻读
脏读:读到还未提交的数据
不可重复读:两次读同一数据结果不一致,第一次读取更新前的数据,第二次读到更新后的数据
幻读:两次读,第二次读比第一次多读到了新增的数据
事务隔离级别
1.读未提交:即无隔离级别,脏读、不可重复读、幻读均会出现
2.读已提交:不可重复读、幻读会出现
3.可重复读:幻读(mysql可解决,也是mysql默认使用的隔离级别)
4.串行化
mysql索引构成
索引类型分类:B+树和Hash
B+树:所有叶子节点高度不超过1;内容全部存储在叶子节点上,并且叶子结点可以有兄弟关系的指针连接起来叶子节点的内容,方便范围,begin和in类型的查询
Hash:借助内容的Hash值做桶分析;并解决优化Hash冲突的问题,等值查询时有优势
索引形态分类
1.聚簇索引:索引存放内容包含数据,访问效率相对较高;至多只能有一个
2.非聚簇索引:索引存放数据指针,数据另外存储;可以有很多,不建议太多,每次update,insert都会调整B+树的结构
————————————————
版权声明:本文为CSDN博主「a0依然、、欒銀龍」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_49759486/article/details/123120024