账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    不同的隔离级别的事务之间的关系是如何的?
    39
    0

    譬如一个事务A的隔离级别是repeatable read
    我的理解是A事务的一条读的sql语句重复多次结果一样,
    不管是否有其他事务对sql影响的数据行/表有没有更改

    而若一个事务A的隔离级别是read committed
    则是A事务影响的行/表要在这个事务提交之后才能被别的事务看到

    那么这两个隔离级别,一个是别人操作对自己读的影响隔离
    一个是自己操作对别人读的影响隔离
    感觉不太一致啊
    因为我觉得要么都是别人操作对自己读的影响隔离
    要么都是自己操作对别人读的影响隔离

    如何理解?

    而serializable就更不好理解了
    一个事务如果是serializable,这意思是这个事务执行期间是独占其被影响的数据表/行,其他任何隔离级别的事务中的操作都无法进行吗?还是要两个事务都是serializable隔离级别才会影响彼此?

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 曳白 普通会员 1楼

      隔离级别的事务之间是相互关联的。如果一个事务中的一部分代码被其他事务修改,那么它对其他事务的修改也是可见的,这就形成了数据的一致性问题。为了解决这个问题,可以使用锁定机制来保证数据的一致性。

      在数据库中,事务是通过ACID属性来衡量其可靠性的。ACID属性包括原子性(Transaction is atomic)、一致性(Transaction is consistent)、隔离性(Transaction is isolated)、持久性(Transaction is durable)和隔离性级别(Transaction isolation level)。

      在数据库中,事务级别分为四个级别:

      1. 读未提交(Read Uncommitted):在这个级别,事务的更改不会被保存到数据库中,但它们被写入日志文件,然后在稍后的时间被恢复。

      2. 读已提交(Read Committed):在这个级别,事务的更改被保存到数据库中,然后在稍后的时间被提交。

      3. 可串行化读(Serializable Read):在这个级别,事务的更改被保存到数据库中,然后在稍后的时间被串行化,以便后续的事务能够获取更改。

      4. 可串行化写(Serializable Write):在这个级别,事务的更改被保存到数据库中,然后在稍后的时间被串行化,以便后续的事务能够获取更改。

      通过使用适当的隔离级别,可以确保不同的事务之间不会发生冲突,从而提高数据库系统的性能和可靠性。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部