最新公告
  • 欢迎您光临极客文库,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入我们
  • 事务机制

    关系型数据库是需要遵循 ACID 规则的,分别介绍如下 。

    A( Atomic )原子性:

    即事务要么全部做完,要么全部都不做。 只要其中一个操作失败,就认为事务失败,需要回滚 。

    C ( Consistency )一致性:

    数据库要一直处于一致的状态 。

    I ( Isolation )独立性:

    并发的事务之间不会互相影响 。

    D ( Durability )持久性:

    一旦事务提交后,它所做的修改将会永久地保存在数据库中 。

    为了达到以上事务特性,数据库定义了几种事务隔离级别 。

    1 ) 未授权读取( Read Uncommitted ) :

    会产生脏读,可以读取未提交的记录, 实际情况下不会使用 。

    2 ) 授权读取( Read Committed ):

    会存在不可重复读以及幻读的现象 。 不可重复读重点在修改,即读取过的数据两次读的值不一样;幻读则侧重于记录数目 变化,多次执行同一个查询返回的记录不完全相同 。

    3 ) 可重复读取( Repeatable Read ):

    解决了不可重复读的问题, 会存在幻读现象 。InnoDB 使用 MVCC+Gap Lock ( InnoDB 行锁的一种)避免了幻读问题。

    4 ) 串行( Serializable ):

    也称可串行读,此级别下读操作会隐式获取共享锁,保证不同事务间的互斥 。 其消除了脏读 、 幻读,但事务并发度急剧下降 。

    这里需要注意的是, MySQL 的默认事务级别为 Repeatable Read ,而 JDBC 的默认事务级别为 Read Committed ,因此使用的时候要特别注意 。

    此外,由 于 Read Committed 有不可重复读的问题,因此不能在 Statement 格式的 Binlog 下使用 ,必须设置为 Mixed 或者 Row。

    事务隔离的实现基于锁机制和并发调度 。

    其中并发调度使用的是 MVCC (多版本并发控制),通过保存修改行的旧版本信息来支持并发一致性读和回滚等特性。

    本站所有文章均由网友分享,仅用于参考学习用,请勿直接转载,如有侵权,请联系网站客服删除相关文章。若由于商用引起版权纠纷,一切责任均由使用者承担
    极客文库 » 数据库中的事务机制

    常见问题FAQ

    如果资源链接失效了怎么办?
    本站用户分享的所有资源都有自动备份机制,如果资源链接失效,请联系本站客服QQ:2580505920更新资源地址。
    如果用户分享的资源与描述不符怎么办?
    可以联系客服QQ:2580505920,如果要求合理可以安排退款或者退赞助积分。
    如何分享个人资源获取赞助积分或其他奖励?
    本站用户可以分享自己的资源,但是必须保证资源没有侵权行为。点击个人中心,根据操作填写并上传即可。资源所获收益完全归属上传者,每周可申请提现一次。
    如果您发现了本资源有侵权行为怎么办?
    及时联系客服QQ:2580505920,核实予以删除。

    Leave a Reply

    Hi, 如果你对这款资源有疑问,可以跟我联系哦!

    联系发布者

    Leave a Reply

    Hi, 如果你对这款资源有疑问,可以跟我联系哦!

    联系发布者
    • 108会员总数(位)
    • 3695资源总数(个)
    • 3本周发布(个)
    • 0 今日发布(个)
    • 181稳定运行(天)

    欢迎加入「极客文库」,成为原创作者从这里开始!

    立即加入 了解更多
    成为赞助用户享有更多特权立即升级