一、事务
什么是事务?
事务就是一系列对数据库操作的语句集合,它是对数据库操作的最小逻辑单元,在数据库中,事务主要是解决:原子性、一致性、隔离性、持久性四大问题。
何为原子性、一致性、隔离性、持久性?
“原子性”:失败即回滚
“一致性”:我的理解(能量守恒,也就是无论两次事务怎么操作,总的结果是不变的)
“持久性”:当事务完成提交以后,数据就永远保存在了数据库中
“隔离性”:事务与事务之间是相互隔离的(这里要谈到事务隔离级别)
事务的隔离级别?
“读未提交”:无法解决任何问题
“读已提交”:解决“脏读”,不能解决“可重复读和幻读”
“可重复读”:解决“可重复读和脏读”,不能解决“幻读”
“串行化”:可以解决“脏读、可重复读、幻读”
脏读、可重复读、幻读的理解?(这里假设两个事务A和B)
“脏读”:A完成事务的一系列操作,但未提交,这个时候B事务拿到A事务未提交的数据,这时A再回滚,那么数据库中的数据与B拿到的数据也就不一致,也就是说B拿到的数据是“脏数据”
“可重复读”:当A执行一个查询事务,第一次查询完成,这时,事务B开始,并更新了对应的数据,并且提交成功,那么A再次查询的数据也就和第一次查询的数据不一致。
“幻读”:当A要查询某个范围的数据,这时B事务在此期间对这个范围的数据进行了增删操作,那么A再次查询数据的时候会发现范围数据中有增加的数据或者删除的数据,那么就造成了幻读的问题。
幻读与可重复读的区别?
可重复读着重于更改操作,事务读取同一条数据不一致的情况,而幻读着重于增加或者删除的操作,事务读取某一个范围的数据,出现数据有增加或者删除的操作。
关于MYSQL事务其他待更新...