什么是数据库的事务,数据库的事务有哪些?一篇短文带你了解

什么是数据库的事务

事务就是为了单个工作单元二执行的一系列操作,如修改,查询,删除数据等。

数据库的事务有哪些

事务有:【原子性,一致性,隔离性,持久性】
原子性: 如原子一样不可分割,在事务中进行的修改,要么全部执行,要么全部不执行。如:在系统在同时插入一条记录到两张表中,为一个事务,那么当插入一张表出现问题,另一张插入成功,那么此时数据库会执行数据回滚,回滚到插入第一张表之前的状态,即两张表都不进行插入。

一致性: 事务必须使得数据库从一个正确状态变到另外一个正确状态。一般来说数据库的一致性指关联数据直接的逻辑关系是否正确和完整,例如:两张表都有学生姓名这两个姓名里面都有张三这个人(指的是同一个人)而且在这两张表中姓名字段是关联的那么想单独修改一张表中张三姓名就会出现数据不一致问题,这样数据库就不会准许这个操作。

隔离性

参考链接:https://zhuanlan.zhihu.com/p/27035174

隔离性指在不同的事务提交的时候,最终呈现出来的是串行的。
(SQL的标准制定者提出四个等级,其中最高级隔离等级才是串行执行)
隔离性的四个级别:【串行化可重复读读已提交未提交读

SERIALIZABLE(串行化) :是最高的隔离级别。通过在每个读的数据行上加共享锁,这时候事务就会有顺序的执行,这样事务之间就不会出现冲突了,幻读问题也就解决了,不过由于加了锁,就会出现锁竞争和等待获取锁的情况

REPEATABLE READ(可重复读) :解决了脏读的问题。事务的多个实例在并发读取数据时读到同样的数据行,这种隔离级别可能会导致出现幻读,比如当用户读取某一个范围的数据行时,这时候另一个事务在这个数据行范围内插入了新行,当用户再读取该范围的数据行时,会发现有新的 “幻影” 数据

READ COMMITTED(读已提交) :事务只能看见已经提交的事务所做的改变,但是这种隔离级别可能会导致不可重复读,因为同一事务的其他实例在该实例处理其间可能会有新的 commit,所以同一个查询操作执行两次或者多次的结果可能不一致。

READ UNCOMMITTED(未提交读): 事务可以看到和读取到其他未提交事务的执行结果,这样一个事务读取到另一个事务还有没提交的记录,就很可能造成脏读。

持久性: 事务一旦提交,则所有的修改都会保存到数据库中。即便此时系统崩溃,修改的数据也不会丢失。

参考链接1: https://blog.csdn.net/qq_25448409/article/details/105376450
参考链接2: https://blog.csdn.net/landstream/article/details/100905269

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值