数据库事务-简单理解

什么是事务?

  • 包含一条或者多条sql语句的逻辑工作单元。

为什么有?

  • 方便应用层使用,简化数据库操作,提交和回滚

基本特性有哪些?

ACID:

  • A原子性(手段):事务中操作,要么都执行,要么都不。

  • I隔离性(手段):事务的操作和正在操作的数据 被封锁起来,不让其他事务操作。

  • D持久性(手段):事务一旦提交,都能找到这个永久的状态。

  • C一致性(目的):一正确状态到另一正确状态。

并发带来的问题:

  • 丢失更新:我们更新的数据被其他更新覆盖掉,我们更新的数据就丢失了。

  • 脏读:两个并发事务,其中一个读到了正在被操作的数据,出现不一致的问题。

  • 不可重复读:同一行数据,第一次和第二次不一样。

  • 幻读:第一次读一行,第二次读两行。

  • 死锁:事务过程中,因 操作数据 和 争夺锁 而造成一种互相等待的现象。

怎么解决?
  • 丢失更新:都不加锁,写加锁。排他锁。

隔离级别:
  • 读未提交:一事务还未提交,但可读到改变。无安全性,不用。

  • 读已提交(数据库默认):能读到已提交的更新,解决脏读和丢失更新,底层MVCC多版本并发控制

  • 可重复读(mysql默认):多次查询结果一样,解决脏读和不可重复读,底层MVCC多版本并发控制

  • 串行化:强制串行执行,效率低,少用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值