浅谈数据库事务四大特性

 更新时间:2017年10月17日 14:59:41   作者:孙华强  
这篇文章主要介绍了浅谈数据库事务四大特性,小编觉得挺不错的,这里分享给大家,供需要的朋友参考。

数据库四大特性分别是:原子性、一致性、分离性、持久性。下面我们看看具体介绍。

原子性

  事务的原子性指的是,事务中包含的程序作为数据库的逻辑工作单位,它所做的对数据修改操作要么全部执行,要么完全不执行。这种特性称为原子性。

  事务的原子性要求,如果把一个事务可看作是一个程序,它要么完整的被执行,要么完全不执行。就是说事务的操纵序列或者完全应用到数据库或者完全不影响数据库。这种特性称为原子性。

  假如用户在一个事务内完成了对数据库的更新,这时所有的更新对外部世界必须是可见的,或者完全没有更新。前者称事务已提交,后者称事务撤消(或流产)。DBMS必须确保由成功提交的事务完成的所有操纵在数据库内有完全的反映,而失败的事务对数据库完全没有影响。

一致性

      事务的一致性指的是在一个事务执行之前和执行之后数据库都必须处于一致性状态。这种特性称为事务的一致性。假如数据库的状态满足所有的完整性约束,就说该数据库是一致的。

      一致性处理数据库中对所有语义约束的保护。例如,当数据库处于一致性状态S1时,对数据库执行一个事务,在事务执行期间假定数据库的状态是不一致的,当事务执行结束时,数据库处在一致性状态S2。

分离性

      分离性指并发的事务是相互隔离的。即一个事务内部的操作及正在操作的数据必须封锁起来,不被其它企图进行修改的事务看到。

      分离性是DBMS针对并发事务间的冲突提供的安全保证。DBMS可以通过加锁在并发执行的事务间提供不同级别的分离。假如并发交叉执行的事务没有任何控制,操纵相同的共享对象的多个并发事务的执行可能引起异常情况。

      DBMS可以在并发执行的事务间提供不同级别的分离。分离的级别和并发事务的吞吐量之间存在反比关系。较多事务的可分离性可能会带来较高的冲突和较多的事务流产。流产的事务要消耗资源,这些资源必须要重新被访问。因此,确保高分离级别的DBMS需要更多的开销。

持久性

  持久性意味着当系统或介质发生故障时,确保已提交事务的更新不能丢失。即一旦一个事务提交,DBMS保证它对数据库中数据的改变应该是永久性的,耐得住任何系统故障。所以,持久性主要在于DBMS的恢复性能。持久性通过数据库备份和恢复来保证。

总结

以上就是本文浅谈数据库四大特性的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站:oracle数据库导入导出命令解析浅谈oracle rac和分布式数据库的区别oracle 数据库启动阶段分析等,如有不足之处,欢迎留言指出,小编会及时回复大家并修改,努力给广大编程爱好者提供一个更好的阅读体验和优质文章供参考。

相关文章

  • Nebula Graph解决风控业务实践

    Nebula Graph解决风控业务实践

    本文主要讲述 Nebula Graph 是如何通过众安保险的选型,以及 Nebula Graph 又是如何落地到具体业务场景帮助众安保险解决风控问题,有需要的朋友可以借鉴参考下
    2022-03-03
  • 时序数据库TDengine写入查询的问题分析

    时序数据库TDengine写入查询的问题分析

    最近TDengine很火,本人也一直很早就有关注,其官方给出的测试性能结果很喜人,所以一开源,本人就进行了相关调研,最终发现还是存在着一定的问题,期待后续的完善吧
    2022-03-03
  • 虚拟主机ACCESS转换成MSSQL完全攻略(图文教程)

    虚拟主机ACCESS转换成MSSQL完全攻略(图文教程)

    大家都知道,ACCESS数据库在数据量到达一定程度后,访问速度会明显变慢,甚至造成崩溃。目前,大多数虚拟主机服务商提供的ASP主机空间一般都同时支持MS ACCESS和MS SQL两种类型的数据库。
    2010-04-04
  • 一些关于数据存储和查询优化的想法

    一些关于数据存储和查询优化的想法

    今天咨询了一下高手,关于数据存储和查询的问题,最终目的就是快,大家可以适当的使用
    2012-05-05
  • Navicat添加外键详细操作步骤

    Navicat添加外键详细操作步骤

    这篇文章主要介绍了Navicat添加外键详细操作步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11
  • mssql注入躲避IDS的方法

    mssql注入躲避IDS的方法

    可能这个技巧早有人已经会了,就是利用openrowset发送本地命令。通常我们的用法是(包括MSDN的列子)
    2008-06-06
  • navicat 导入运行bak文件的详细教程

    navicat 导入运行bak文件的详细教程

    这篇文章主要介绍了navicat 怎么导入运行bak文件,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-07-07
  • SQL行转列、列转行的简单实现

    SQL行转列、列转行的简单实现

    这篇文章主要给大家介绍了关于SQL行转列、列转行的简单实现方法,文中通过示例代码介绍的非常详细,对大家学习或者使用SQL具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-05-05
  • 由拖库攻击谈口令字段的加密策略(数据库加密)

    由拖库攻击谈口令字段的加密策略(数据库加密)

    我不得不惨痛地写在前面的是,这是一个安全崩盘的时代。过去一年,已经证实的遭遇入侵、并导致关键数据被窃或者被泄露的公司,包括索尼、世嘉这样的大型游戏设备厂商;包括花旗银行这样的金融机构,也包括了RSA这样的安全厂商
    2012-01-01
  • Navicat Premium12进行数据库定期自动备份的方法步骤

    Navicat Premium12进行数据库定期自动备份的方法步骤

    本文主要介绍了Navicat Premium 12进行数据库定期自动备份,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-02-02

最新评论