mysql数据库读写、索引和优化

2022/3/19 19:28:48

本文主要是介绍mysql数据库读写、索引和优化,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

Mysql 数据库读和写

读快照,当前读
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



这篇关于mysql数据库读写、索引和优化的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程