Web开发系列(十):事务和锁

栏目: 数据库 · 发布时间: 7年前

内容简介:事务,有哪四个特性?想必十有八九在面试中问过这个问题:ACID 是数据库事务满足的四个特性,在哪些地方需要用到事务呢?例如在数据库中并发更新一个商品的点赞数,通常的做法是:如果这中间存在并发,而恰好CPU调度到另一个进程中执行,数据就有可能紊乱。事务便是因此而生的,事务保证了一系列动作要么全都被 执行,要么全都没有执行。

事务

事务,有哪四个特性?想必十有八九在面试中问过这个问题:

  • 原子性(Atomicity):事务作为一个整体被执行,包含在其中的对数据库的操作要么全部被执行,要么都不执行
  • 一致性(Consistency):事务应确保数据库的状态从一个一致状态转变为另一个一致状态。一致状态的含义是数据库中的数据应满足完整性约束
  • 隔离性(Isolation):多个事务并发执行时,一个事务的执行不应影响其他事务的执行
  • 持久性(Durability):已被提交的事务对数据库的修改应该永久保存在数据库中

ACID 是数据库事务满足的四个特性,在哪些地方需要用到事务呢?例如在数据库中并发更新一个商品的点赞数,通常的做法是:

  • 取出当前的点赞数
  • +1
  • 把+1之后的值写入数据库

如果这中间存在并发,而恰好CPU调度到另一个进程中执行,数据就有可能紊乱。事务便是因此而生的,事务保证了一系列动作要么全都被 执行,要么全都没有执行。

为了保证并发更新的数据准确性,我们就需要了解到锁这个概念,即,想要修改这个数据,必须要先持有锁,锁的持有者可以更新数据, 其他的只能等待下一次夺取锁。

锁在实现方式上分为乐观锁和悲观锁,乐观锁即认为冲突很少发生,所以每次都会先复制一份先前的数据,记录下时间戳,等到更新数据 的时候,则检查数据是否已经被更改过,如果没有,则更新,否则则回滚,参见MVCC。而悲观锁则相反,采用一种相对保守的策略,悲观锁 认为冲突是极有可能大概率发生的,所以在更新数据之前,一定要先拿到锁才会开始。

参考:


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

蚁群算法及其应用

蚁群算法及其应用

李士勇 / 哈工大出版社 / 2004-9 / 25.00元

蚁群算法是意大利学者Dorigo等人于1991年创立的,是继神经网络、遗传算法、免疫算法之后的又一种新兴的启发式搜索算法。蚂蚁群体是一种社会性昆虫,它们有组织、有分工,还有通讯系统,它们相互协作,能完成从蚁穴到食物源寻找最短路径的复杂任务。模拟蚂蚁群体智能的人工蚁群算法具有分布计算、信息正反馈和启发式搜索的特点,不仅在求解组合优化问题中获得广泛应用,而且也用于连续时间系统的优化。 《蚁群算......一起来看看 《蚁群算法及其应用》 这本书的介绍吧!

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

html转js在线工具
html转js在线工具

html转js在线工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具