参考比较多,就不一一列举大佬们的博客了,如有错误请指正。
四种隔离级别:
Read Uncommitted(读取未提交内容):事务之间不独立
Read Committed(读取提交内容):事务提交后结果才变化
Repeatable Read(可重读):事务之间会有行锁
Serializable(可串行化):表锁
脏读:
读取错误的信息,脏数据。(原因:事务未设置隔离)
解决办法:设置隔离级别。
不可重复读:
一个事务多次读取数据,结果不同。(原因:读取数据时数据被别的事务或者其他语句修改)
解决办法:加一个写锁,写锁的优先级大于读锁
幻读:
(原因:事务之间有交叉,事务结果有影响,插入或者删除操作,因为写操作别锁了,MySQL默认级别)
解决办法:锁表