首页 > 数据库 > mysql事务处理和并发锁

mysql事务处理和并发锁

2010年04月08号
查看评论 发表评论 1,502次浏览

这段时间因为工作关系,研究到库存系统的开发问题,从这里出发我们考虑了一些有关库存信息中需要的操作和,可能遇到的事务处理问题。特别是关于数据表锁定问题,一旦出现并发现象的时候,我们如何保证数据的完整性,值得我们考虑。事务操作,要保证的三个原则性:

原子性(Atomicity):事务是一个原子操作单元,其对数据的修改,要么全部执行,要么全都不执行;

一致性(Consistent):在事务开始和完成时,数据都必须保持一致状态;

隔离性(Isolation):数据库系统提供一定的隔离机制,保证事务在不受外部并发操作影响的“独立”环境执行;

持久性(Durable):事务完成之后,它对于数据的修改是永久性的,即使出现系统故障也能够保持。

于是,我们假设两个对象A和B

并发对象A 和B

初始状态数据表查询结果:

mysql事务处理和并发锁

事务开始的顺序 A->B

A:开始事务

mysql事务处理和并发锁

此刻没有提交进行commit

在此状态下B开始了自己的事务:

mysql事务处理和并发锁

显然,在A没有进行Commit行为的时候,B的事务中的动作无法完成,一直处于事务等待阶段,前提是在没有超出时限,B的动作无法提交。

此刻,如果A进行Commit:

mysql事务处理和并发锁

此刻 B的动作中,由等待的

mysql事务处理和并发锁

转变到

mysql事务处理和并发锁

说明A完成事务开始解锁,B事务可以进行,但是此刻B事务没有提交(Commit)

注意:在这里我们进行两个操作,就是两个对象进行查询

A的查询:

mysql事务处理和并发锁

依然存在ID为1的这项,原因是B的结果没提交,但A依旧可以读该项数据,但是数据为删除前的数据。

但是,对照B的查询:

mysql事务处理和并发锁

可以知道,B对象结果已经在处理了,只是没有提交解锁。

分析可以知道,A读的是B没有提交前的结果集合,但B读的是自己操作的结果集,当B完成提交的时候

此刻,A的结果集合

mysql事务处理和并发锁

发现现在状态下和B的集合一样,A=B,这也是在理论值的范围内的。

由此,可以发现其实MYSQL锁的简单性,当然,也说明当数据库进行锁操作时候,只能是写操作控制,对于读数据,往往只能访问到修改前的数据,这部分数据常常被称为”dirty”或脏数据。在现实中,我们常常是有这样的需求,当A进行写操作时候,期望B不要读数据,是对读行为的控制,这样保证并发的时候不要出现B查的时候有,但是这个过程正好是A进行写操作的过程,虽然加锁防止并发写,但是却把对于B来说他在此过程中所看到的数据将被修改,即等A完成写操作的时候,B读的数据将被丢弃,这样说来B读到的数据应该是脏数据,或是无效数据,除非A的动作因为某些原因导致事务回滚,操作失败,这样现实数据结果和B看到的一致的时候,才断定B看到的是有效数据,而不是脏数据或是无效数据

类别数据库 标签
  1. 匿名
    发表于 2010年04月09号 13时57分39秒 | 1楼

    非常不错。

  2. 收缩机
    发表于 2010年04月10号 16时27分06秒 | 2楼

    朋友是琴,演奏生活的美好,博主加油

  3. 二维码
    发表于 2010年04月12号 09时52分00秒 | 3楼

    来过了,支持一下。

  4. zithromax online
    发表于 2010年04月12号 12时38分21秒 | 4楼

    Thank you! You often write very interesting articles. You improved my mood.

  5. 网站特效
    发表于 2010年04月12号 16时10分42秒 | 5楼

    刚到这个地方,大家好,看了支持一下呀,嘿嘿

  6. 网页模板
    发表于 2010年04月12号 20时46分36秒 | 6楼

    这里不错,头一次来留言

  7. 最新歌曲
    发表于 2010年04月12号 22时18分05秒 | 7楼

    传中的n楼是属于我的吗

  8. buy diflucan
    发表于 2010年04月16号 14时20分40秒 | 8楼

    I read blogs on a similar topic, but i never visited your blog. I added it to favorites and i’ll be your constant reader.

  9. 好玩吗
    发表于 2010年04月16号 20时19分09秒 | 9楼

    博主常用手机访问吗?试试我的站呢wei369.com/wap

  10. 明星八卦
    发表于 2010年04月19号 15时59分11秒 | 10楼

    经常更新就好.

  11. 山东SEO
    发表于 2010年04月19号 16时02分25秒 | 11楼

    无聊中,来过了,留个印。。

  12. joss
    发表于 2010年04月19号 16时36分18秒 | 12楼

    欢迎来我joss空间光顾,

  13. ats
    发表于 2010年04月19号 19时14分42秒 | 13楼

    博主你好
    你修改的这个模板可以发一份吗
    非常感谢
    cnnvip@gmail.com

  14. 青岛SEO
    发表于 2010年04月20号 16时01分42秒 | 14楼

    恩,不错!来了留个小脚丫,呵呵

  15. 静脉曲张
    发表于 2010年04月20号 18时51分30秒 | 15楼

    恩,同意博主的观点。。。

评论页数:
1 2 3 322
你必需 登陆 才能发表评论.