事务

事务特性:

原子性:从操作行为角度来讲--事务操作作为一个统一的操作单元,要么都执行,要么都不行。

一致性:从被操作的数据来讲--事务执行前后,事务操作到的数据必须符合业务逻辑,保持前后一直。

持久性:依然是从被操作的数据来讲--事务操作后的数据,是永久执行了的,应该是写到磁盘上的。

隔离性:事务之间操作,应该具有一定的隔离性,不同的隔离级别,会脏读、幻读、不可重复读等现象。

  uncommit-未提交

    脏读:事务A读到了事务B尚未提交的内容

      committed -已经提交

    幻读:事务A读取到了事务B已经提交的insert或delete操作

    不可重复读:事务A读取到了事务B已经提交的update操作,导致事务A在事务未结束之前,读取同一条数据两次,如果中间事务B修改了数据,并提交了,那么事务A会读取到不同的结果。

针对事务的隔离性,

  数据库定义了四种隔离级别:

  serializable:串行化,可以避免脏读、幻读、不可重复读。

  repeatable read:可重复读,针对的是update操作,使用行锁。可以避免脏读和不可重复读。幻读,是insert和delete操作,避免不了

  read committed:读已提交,可以避免脏读。幻读和不可重复读是未提交是否,不能避免

  read uncommitted :读未提交,三种情况都避免不了。

   mysql默认使用repeatable read 。可以通过 set session transaction isolation level xxx啦设置隔离级别。

事务传播行为(7个)- A方法调用B方法,对B来说。以下几个是比较常用的:

  propagation_required、propagation_supports、propagation_required_new、propagation_not_required.

 

  好博分享:https://blog.csdn.net/happydecai/article/details/80338053

 

 

 

 

 

  

 

  

posted @ 2022-08-22 11:17  田海超  阅读(77)  评论(0编辑  收藏  举报