数据库事务四大特性的理解

数据库事务,事务是指一系列逻辑上不可分割的SQL语句,事务有四大特性(ACID):一致性、原子性、隔离性、持久性。

按照个人浅显的理解,一致性是事务最基本的属性,其他的三个特性都是为了保证数据一致性存在的。

一致性是指,事务完成时数据保持一致性,处于一种有意义的状态,就比如转账,A用户转钱给B用户,如果A的钱减少了,而B的的余额却没有增加,那么我们认为此时数据不一致。

事务的原子性解决了上面的问题,转账的加钱减钱要么都发生要么都不发生。但是原子性不能完全解决一致性的问题,在多个事务并发进行的情况下,即使保证了每个事务的原子性,仍然可能导致数据不一致,列如 事务1需要将100元转入帐号A:先读取帐号A的值,然后在这个值上加上100。但是,在这两个操作之间,另一个事务2修改了帐号A的值,为它增加了100元。那么最后的结果应该是A增加了200元。但事实上,
事务1最终完成后,帐号A只增加了100元,因为事务2的修改结果被事务1覆盖掉了。

为了保证并发情况下的一致性,引入了隔离性,即保证每一个事务能够看到的数据总是一致的,就好象其它并发事务并不存在一样。

事务一旦提交,对数据库的影响是永久的,保证所有操作都是有效的。

编程式事务:在代码中手动产生事务对象、手动提交或回滚事务。
申明式事务:声明式事务建立在AOP之上的。其本质是对方法前后进行拦截,然后在目标方法开始之前创建或者加入一个事务,在执行完目标方法之后根据执行情况提交或者回滚事务。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 关于Mongodb的全面总结 MongoDB的内部构造《MongoDB The Definitive Guide》...
    中v中阅读 32,056评论 2 89
  • 数据库中经常被问到四大特性和隔离级别,一般都是涉及到概念性问题,在此做一些整理总结,方便理解。 1、事务的隔离级别...
    Hughman阅读 1,940评论 0 5
  • 我们抓住的都只是些看起来庞大却本质上无关紧要的东西;遗失的,总是无法弥补的部分,因为它形态微小,或甚至本身就并不可...
    湾得佛阅读 76评论 0 1
  • 这是一种极度的悲观主义和完美主义所带来的后果吗。 运动的时候害怕啊,虽然明明是自己想要做的东西。害怕雾霾,我在跑步...
    冋三金阅读 374评论 0 1