事务并发——并发控制(加锁)

原创 2007年09月22日 09:15:00
事务处理中的并发控制:
1.并发操作
数据库是一个共享资源,允许多个用户程序并行地存取数据库,所以当多个用户并发地存取同一数据,就可能出现数据的不一致性。例如:假设有两个事务T1T2,它们都需要读出并修改数据A,其执行情况如下所示:
执行顺序
1
2
3
4
5
6
事务T1
A
A=A+10
 
提交A
 
提交A
事务T2
 
 
A
 
A=A-30
 
T1工作区中A的值
30
40
40
40
40
40
T2工作区中A的值
 
30
30
30
0
0
数据库中A的值
30
30
30
40
40
0
2.导致结果
正常情况下最后数据库中A的值应该是10,可结果确是0
3.产生原因
由于事务的并发操作,当T1读取A并准备修改时,T2也读取了A,这样T1T2读取的都是30,当T1在第四步将修改后的结果写回数据库,T2接着在第6步也将它的修改结果写回数据库中,这样就将T1的修改结果给覆盖了。
4.解决办法——加锁
在事务要对数据库进行操作前,禁止其他事务再对该数据进行操作。
执行顺序T1
 Lock A
Read A
A=A+10
Write A
Unlock A
T2
Lock A
Read A
A=A-30
Write A
Unlock A
这样最后数据库中A的值就是10而不是0。
【注意】通过采用数据库的加锁机制便可避免由于事务并发而导致的错误,但是对事务加锁并不能解决所有的并发操作,也不是并发控制的唯一办法。
 

事务并发控制和锁机制

前段是时间涉及到数据库的隔离级别问题,在网上搜索一下,发现大部分都说的模棱两可,而且也有很多错误。于是查阅了上学时的课本《数据库系统概论》 和JDBC的文档。现在把总结的结果记录下来,供大家分享. ...
  • mark555
  • mark555
  • 2014年04月16日 15:57
  • 2547

SQL server数据库并发控制--加锁

http://blog.csdn.net/zdplife/article/details/48035837 当多个用户并发地存取数据时,在数据库中就会产生多个事务同时存取同一数据的情况。若对并发操作...
  • sinat_26230689
  • sinat_26230689
  • 2016年06月13日 16:40
  • 1258

数据库事务和并发控制

一、数据库的事务:      事务是用户定义的一个数据库操作序列,这些操作要么全做要么全不做,是不可分割的一个序列。 事务的特征:(ACID) 1、原子性:事务的操作要么全做要么全不做。 2、一致...
  • u011967405
  • u011967405
  • 2016年06月24日 09:46
  • 3152

分布式系统阅读笔记(十六)-----事务和并发控制

介绍 在分布式系统中,事务的运用和共享资源的并发控制是非常常见的。简单的说,事务就是一些原子的操作的集合。原子操作的意思就是要么操作成功要么操作失败,没有其他的选择。并发控制是出现在高并发场景的时候...
  • Androidlushangderen
  • Androidlushangderen
  • 2015年01月16日 15:09
  • 2648

MySQL的并发控制与加锁分析

MySQL的并发控制与加锁分析
  • mine_song
  • mine_song
  • 2017年04月26日 09:05
  • 398

深入理解Mysql——锁、事务与并发控制(辟谣)

mysql用的时间也不短了,但从没有做过总结。今天就来总结一下吧mysql服务器逻辑架构每个连接都会在mysql服务端产生一个线程(内部通过线程池管理线程),比如一个select语句进入,mysql首...
  • lemon89
  • lemon89
  • 2016年05月23日 00:21
  • 5102

MySQL并发控制——事务与事务隔离级别详解

一、首先了解什么是事务 1、事务概念:事务是包含了一组有序的数据库操作命令的序列,它是数据库并发操作的最小控制单位。 2、事务特性:原子性:事务包含的数据库操作命令要么都执行,要么都不执行。 一...
  • zhangliangzi
  • zhangliangzi
  • 2016年06月01日 11:54
  • 1756

高并发场景系列(一) 利用redis实现分布式事务锁,解决高并发环境下减库存

问题描述:某电商平台,首发一款新品手机,每人限购2台,预计会有10W的并发,在该情况下,如果扣减库存,保证不会超卖 方案一 利用数据库机制,通过对记录进行锁定,再进行操作  SELECT * fr...
  • heyewu4107
  • heyewu4107
  • 2017年04月30日 13:36
  • 3165

InnoDB并发事务

InnoDB的设计是为了在处理大数据量的时候得到最好的性能。InnoDB存储引擎维护了一个它自己的缓冲区,用来存储数据和索引。InnoDB将表和索引存储在一个表空间中,这个表空间可能由不同的文件组成。...
  • guodaoying
  • guodaoying
  • 2016年07月07日 14:36
  • 459

高并发与锁(一)

DRP学习中,我们对可能引起并发操作的情况使用了锁,这次先理论上看看并发控制与锁的一些内容吧。     并发控制     在多用户环境中,在同一时间可能会有多个用户更新相同的记录,这会产生冲突。这就是...
  • u010191243
  • u010191243
  • 2015年10月31日 11:03
  • 2218
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:事务并发——并发控制(加锁)
举报原因:
原因补充:

(最多只允许输入30个字)