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
标签:10,Hash,间隙,幻读,读写,索引,mysql 来源: https://blog.csdn.net/qq_38847545/article/details/123595619
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。