数据库事务四大特性

这篇具有很好参考价值的文章主要介绍了数据库事务四大特性。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

数据库事务四大特性,数据库事务的4大特性(ACID):

 

原子性(Atomicity):

 

事务是数据库的逻辑工作单位,它对数据库的修改要么全部执行,要么全部不执行。

 

一致性(Consistemcy):

 

事务前后,数据库的状态都满足所有的完整性约束。

 

隔离性(Isolation):

 

并发执行的事务是隔离的,一个不影响一个。如果有两个事务,运行在相同的时间内,执行相同的功能,事务的隔离性将确保每一事务在系统中认为只有该事务在使用系统。这种属性有时称为串行化,为了防止事务操作间的混淆,必须串行化或序列化请求,使得在同一时间仅有一个请求用于同一数据。通过设置数据库的隔离级别,可以达到不同的隔离效果。

 

持久性(Durability):

 

在事务完成以后,该事务所对数据库所作的更改便持久的保存在数据库之中,并不会被回滚。

 

并发事务引起的问题:

更新丢失:

 

两个事务都同时更新一行数据,但是第二个事务却中途失败退出,导致对数据的两个修改都失效了。这是因为系统没有执行任何的锁操作,因此并发事务并没有被隔离开来。

 

脏读:

 

脏读又称无效数据读出。一个事务读取另外一个事务还没有提交的数据叫脏读。

 

例如:事务T1修改了一行数据,但是还没有提交,这时候事务T2读取了被事务T1修改后的数据,之后事务T1因为某种原因Rollback了,那么事务T2读取的数据就是脏的。

 

不可重复读:

 

不可重复读是指在同一个事务内,两个相同的查询返回了不同的结果。

 

例如:事务T1读取某一数据,事务T2读取并修改了该数据,T1为了对读取值进行检验而再次读取该数据,便得到了不同的结果。

 

幻读:

 

事务在操作过程中进行两次查询,第二次查询的结果包含了第一次查询中未出现的数据或者缺少了第一次查询中出现的数据

 

例如:系统管理员A将数据库中所有学生的成绩从具体分数改为ABCDE等级,但是系统管理员B就在这个时候插入了一条具体分数的记录,当系统管理员A改结束后发现还有一条记录没有改过来,就好像发生了幻觉一样。这就叫幻读。

 

事务的隔离级别:

以上的4种问题(更新丢失、脏读、不可重复读、幻读)都和事务的隔离级别有关。通过设置事务的隔离级别,可以避免上述问题的发生。

 

未授权读取级别:

 

也称为读未提交(Read Uncommitted)。

 

以操作同一行数据为前提,读事务允许其他读事务和写事务,未提交的写事务禁止其他写事务(但允许其他读事务)。

 

此隔离级别可以防止更新丢失,但不能防止脏读、不可重复读、幻读。

 

此隔离级别可以通过“排他写锁”实现。

 

授权读取级别:

 

也称为读提交(Read Committed)。

 

以操作同一行数据为前提,读事务允许其他读事务和写事务,未提交的写事务禁止其他读事务和写事务。

 

此隔离级别可以防止更新丢失、脏读,但不能防止不可重复读、幻读。

 

此隔离级别可以通过“瞬间共享读锁”和“排他写锁”实现。

 

可重复读取级别:

 

可重复读取(Repeatable Read)。

 

以操作同一行数据为前提,读事务禁止其他写事务(但允许其他读事务),未提交的写事务禁止其他读事务和写事务。

 

此隔离级别可以防止更新丢失、脏读、不可重复读,但不能防止幻读。

 

此隔离级别可以通过“共享读锁”和“排他写锁”实现。

 

序列化级别:

 

序列化(Serializable)。

 

提供严格的事务隔离。它要求事务序列化执行,事务只能一个接着一个地执行,不能并发执行。

 

此隔离级别可以防止更新丢失、脏读、不可重复读、幻读。

 

如果仅仅通过“行级锁”是无法实现事务序列化的,必须通过其他机制保证新插入的数据不会被刚执行查询操作的事务访问到。

 

隔离级别越高,越能保证数据的完整性和一致性,但是对并发性能的影响也越大。对于多数应用程序,可以优先考虑把数据库系统的隔离级别设为Read Committed。它能够避免更新丢失、脏读,而且具有较好的并发性能。尽管它会导致不可重复读、幻读这些并发问题,在可能出现这类问题的个别场合,可以由应用程序采用悲观锁或乐观锁来控制。文章来源地址https://www.toymoban.com/news/detail-678811.html

到了这里,关于数据库事务四大特性的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 事务四大特性

    ACID :如果一个数据库支持事务的操作,那么该数据库必须要具备以下四个特性 1、原子性(Atomicity) 事务包含的所有操作要么全部成功,要么全部失败回滚,因此事务的操作如果成功就必须要完全应用到数据库,如果操作失败则不能对数据库有任何影响 2、一致性(Consistenc

    2024年02月04日
    浏览(13)
  • Spring事务的四大特性+事务的传播机制+隔离机制

    Spring事务的四大特性+事务的传播机制+隔离机制

    原子性是指事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生。 事务是一个原子操作, 由一系列动作组成。 组成一个事务的多个数据库操作是一个不可分割的原子单元 ,只有所有的操作执行成功,整个事务才提交。 事务中的任何一个数据库操作失败

    2024年01月20日
    浏览(17)
  • 【面试题】MySQL 事务的四大特性说一下?

    【面试题】MySQL 事务的四大特性说一下?

    事务是一个或多个 SQL 语句组成的一个执行单元,这些 SQL 语句要么全部执行成功,要么全部不执行,不会出现部分执行的情况。事务是数据库管理系统执行过程中的一个逻辑单位,由一个有限的数据库操作序列构成。 事务的主要作用是保证数据库操作的一致性,即事务内的

    2024年04月22日
    浏览(12)
  • MySQL 篇-深入了解事务四大特性及原理

    MySQL 篇-深入了解事务四大特性及原理

    🔥博客主页: 【 小扳_-CSDN博客】 ❤感谢大家点赞👍收藏⭐评论✍     文章目录         1.0 事务的概述         2.0 事务的特性         2.1 原子性         2.2 一致性         2.3 持久性         2.4 隔离性         2.4.1 脏读问题         2.4.2 不可重复读问题  

    2024年03月22日
    浏览(12)
  • 数据库——事务,事务隔离级别

    数据库——事务,事务隔离级别

    什么是事务? 事务是逻辑上的一组操作,要么都执行,要么都不执行。 事务最经典也经常被拿出来说例子就是转账了。假如小明要给小红转账1000元,这个转账会涉及到两个关键操作就是:将小明的余额减少1000元,将小红的余额增加1000元。万一在这两个操作之间突然出现错误

    2024年02月11日
    浏览(14)
  • 【数据库】Python脚本实现数据库批量插入事务

    【数据库】Python脚本实现数据库批量插入事务

    在工作中可能会遇到需要批量插入的场景, 而批量插入的过程具有 耗时长 的特点, 再此过程很容易出现程序崩溃的情况.为了解决插入大量数据插入后崩溃导致 已插入数据无法清理 及 未插入数据无法筛出 的问题, 需要编写一个脚本记录已插入和未插入的数据, 并可以根据记录

    2024年02月08日
    浏览(9)
  • spring事务和数据库事务是怎么实现

    Spring事务的本质其实就是数据库对事务的支持,没有数据库的事务支持,spring是无法提供事务功能的。对于纯JDBC操作数据库,想要用到事务,可以按照以下步骤进行: 获取连接 Connection con = DriverManager.getConnection() 开启事务con.setAutoCommit(true/false); 执行CRUD 提交事务/回滚事务

    2024年02月13日
    浏览(14)
  • 02--数据库事务

    02--数据库事务

    事务:一组逻辑操作单元,使数据从一种状态变换到另一种状态。 事务处理(事务操作): 保证所有事务都作为一个工作单元来执行,即使出现了故障,都不能改变这种执行方式。当在一个事务中执行多个操作时,要么所有的事务都 被提交(commit) ,那么这些修改就永久地保存

    2024年01月20日
    浏览(15)
  • QxOrm数据库事务

    数据库事务是作为单个逻辑工作单元执行的一系列操作: 如果在执行事务期间未发生错误,则系统 将提交 事务。 如果在事务期间发生错误,或者用户指定了 回滚 操作,则事务中的数据操作不会保留到数据库中。 概念 ​ 事务是一种机制、一个操作序列,包含了一组数据库

    2024年02月02日
    浏览(13)
  • 【数据库】索引与事务

    【数据库】索引与事务

    目录 1、索引 1.1、概念 1.2、索引的作用 1.3、 索引的缺点 1.4、数据库中实现索引的数据结构 1.4.1、B树/B-树 1.4.2、B+树   1.4.3、回表 1.5、使用场景 1.6、索引的使用  1.6.1、查看索引 1.6.2、创建索引  1.6.3、 删除索引 1.7、索引的分类 2、事务 2.1、为什么使用事务 2.2、事务的概

    2024年02月02日
    浏览(12)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包