Mysql数据库的事务隔离所产生问题
文档:https://dev.mysql.com/doc/refman/5.7/en/set-transaction.html
获取、设置隔离级别
1 | SET [GLOBAL | SESSION] TRANSACTION |
脏读
某个事务更新一份数据,另一个在此时读取额同一份数据,前一个事务rollback了,则另一个事务读取的数据就是脏数据。
事务隔离修改成读已提交
不可重复度
一个事务两次查询数据不一致,当事务A第一次查询数据后,并没有及时commit或者rollback,这时事务B插入了一条新的数据,但是现在事务A又查了一次数据库发现和前面第一次查的数据内容不一致。(这种像是特性,不像是问题,但是根据隔离性规定事务AB之间的数据应该不能被互相干扰的)
事务隔离级别提升为可重复读,然后又会有幻读的问题
幻读
一个事务两次查询数据不一致,导致事务更新会携带上不该有的数据记录。事务A第一次查询时有1条数据,事务B插入一条数据,这时事务A又去更新数据发现更新影响条数为2条,导致数据不一致。
通过序列化级别处理,此时并不能并发了。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 🍍Blog!