事务四大特性以及实现原理是什么_事务的实现原理「建议收藏」

事务四大特性以及实现原理是什么_事务的实现原理「建议收藏」事物的四大特性?ACID1.原子性atomicity一个事物是一个不可分割的工作单位,其中的操作,要么都做,要么不做

事务四大特性以及实现原理是什么_事务的实现原理「建议收藏」

事物的四大特性?
    ACID
    1.原子性 atomicity
        一个事物是一个不可分割的工作单位,其中的操作,要么都做,要么不做。不存在中间状态。
    2.一致性 consisitency
        事物执行的前后,数据必须处于一种合法的状态。(可以自己定义 ,保持数据的一致性。)
    3.隔离性 lsolation
        多个事物并发执行的时候,事物内部的操作与其他事物是隔离的,并发执行,互不干扰。
    4.持久性 Durability
        事物一旦提交,对数据库的改变是永久性的。不受任何影响。

四大特性的实现原理?
    1.mysql如何保证一致性的?
        两个层面。
/*        
        1.数据库    通过原子性, 持久性,隔离性,来保证一致性。
                    AID 三大特性,是前提。
        2.应用层面    通过代码判断数据库数据是否有效,然后再决定是回滚还是提交数据。
*/

    2.mysql怎怎么保证原子性的?
    /*
1.利用innodb的undo log。 叫做回滚的日志

        当事务回滚的时候,能够撤销所有已经成功执行的SQL语句,需要记录你要回滚的响应日志
2.举例说明        
        当你update一条数据,需要记录之前的旧值,回滚的时候,根据旧值进行update操作。
            
        undo log 记录了这些回滚需要的信息,当事务执行失败,就可以以利undo log 中的信息
        将数据回滚到修改之前的样子。
    */
        
    3.mysql怎么保持久性的?
    /*
1.        是利用innodb 的 redo log。、

        mysql把磁盘上的数据加载到内存中,在内存中对数据进行修改,在刷回磁盘上。
        此时宕机,内存中的数据就会丢失。
        
2.如何避免宕机?        
        在事物提交之前将数据写入磁盘中。——–【引发的问题。】》只修改一个页面里的一个字节,就要将整个页面刷入磁盘,太浪费资源了
        
        毕竟一个事务里的SQL可能牵涉到多个数据页的修改,而这些数据页可能不是相邻的,
        也就是属于随机IO。显然操作随机IO,速度会比较慢。
        
3.采用redo log?
        做数据修改的时候,不仅在内村中操作,还会在redo  log 中记录这次操作,
        提交事物的时候,会将redo log 日志进行刷盘 redo log 一部分在内存中,一部分在磁盘上。
        数据库宕机重启,就将redo log中的内容恢复到数据库中,再根据undo log 和binlog 内容决定
        回滚还是提交数据。
4.好处?    
        redo log 体积小,只记录了那一页修改了什么,体积小,刷盘快。
        一直往末尾进行追加,属于顺序io.效率比随机io来快。
    */
    
    4.mysql怎么保证隔离性的。
/*
    利用锁 和mvcc 机制。
    
    MVCC,即多版本并发控制(Multi Version Concurrency Control),
    一个行记录数据有多个版本对快照数据,这些快照数据在undo log中。
    
    如果一个事务读取的行正在做DELELE或者UPDATE操作,
    读取操作不会等行上的锁释放,而是读取该行的快照版本。
    
    在事务隔离级别为读已提交(Read Commited)时,一个事务能够读到另一个事务已经提交的数据,
    是不满足隔离性的。但是当事务隔离级别为可重复读(Repeateable Read)中,是满足隔离性的。
*/

今天的文章事务四大特性以及实现原理是什么_事务的实现原理「建议收藏」分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/86080.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注