标签:事务 隔离 幻读 数据 视图 脏读 提交 MySQL 级别
MySQL的隔离级别、可能出现的问题和解决方法。
隔离级别 | 概念 | 实现方式 | 出现的问题 | 现象 | 举例说明 | 解决方法 |
---|---|---|---|---|---|---|
读未提交 | 一个事务还没提交时,它做的变更就能被别的事务看到 | 直接返回最新值 | 脏读 | 读取到了其他事务未提交或者回滚的数据 | A事务读取到了B未提交的数据 | 隔离级别设置为读已提交 |
读已提交 | 一个事务提交之后,它做的变更才会被其他事务看到 | SQL语句执行的时候创建视图 | 不可重复读 | 在一次事务中读到的数据不一样(这期间别的事务提交了) | A事务两次相同的查询语句,结果却不一样。 | 隔离级别设置为可重复读 |
可重复读(默认) | 一个事务执行过程中看到的数据,总是跟这个事务在启动时看到的数据是一致的。当然在可重复读隔离级别下,未提交变更对其他事务也是不可见的。 | 事务启动时创建一个视图,整个事务期间都使用这个视图。 | 幻读 | 一个事务按相同条件检索,发现了新的数据(发现不了修改了的数据) | A事务把表中某个字段+1,恰巧这时候事务B向该表中表中插入了一条数据。A用户提交事务之后发现还有数据未修改,好像产生了幻觉。 | 隔离级别设置成串行化(效率差),不建议。||增加范围锁RangeS,锁定检索范围为只读 |
串行化 | 顾名思义是对于同一行记录,“写”会加“写锁”,“读”会加“读锁”。当出现读写锁冲突的时候,后访问的事务必须等前一个事务执行完成,才能继续执行。 | 加锁 |
标签:事务,隔离,幻读,数据,视图,脏读,提交,MySQL,级别 来源: https://www.cnblogs.com/china-golang/p/16692608.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。