事务

作者: 红烧鸡翅膀_我喜欢吃 | 来源:发表于2020-02-19 12:53 被阅读0次

    事务是一系列的操作以原子性的执行,要么全部成功、要么全部失败。

    -----------------------------------------------------------

    四个特性:原子性、一致性、隔离性、持久性

    -----------------------------------------------------------

    隔离级别:操作同一数据的事务与事务之间的关系

    1、读未提交,读事务和写事务均不加锁,可能出现脏读(如果写事务回退,那读到的就是没有提交的数据)、幻读、不可重复读的情况。

    2、读已提交(不可重复读),写事务对修改行加排他锁(X锁),读到的数据是多次写事务的数据,多次结果不一样。(会出现不可重复读和幻读)

    3、可重复读;mysql默认级别。写事务对修改行加排他锁,读事务要加S锁(共享锁)【加了S锁就不能加X锁,但是可以继续加S锁】,保证读的时候没人能修改。mysql没有使用这种机制,采用了MVCC(多版本并发控制),在每个表增加了两个字段(最新版本和删除版本号列),select all操作其实是要对这两个字段过滤。

    会出现幻读:因为写事务只对行增加了X锁,新增和删除表的数据会变化,之前搜索出3天可能待会就会5条,除非写事务对整个表加锁,即4

    4、串行化:解决三个问题,要求事务一个接着一个执行,读写都加X锁,或者写加表级别的锁。

    -------------------------------------------------------------

    事务传播机制 (解决事务嵌套事务的问题)

    1、required 正在执行的事务,遇到新的事务,新的事务加入,一个异常,全部都异常,try catch也没用(一个回退,通知所有回退)

    默认常用

    2、required_new 遇到新事务,新建一个,互不干扰,无需牵扯。

    。。。还有5个极少用的,有时间细看

    相关文章

      网友评论

          本文标题:事务

          本文链接:https://www.haomeiwen.com/subject/gpfafhtx.html