锁和并发(一)【2015.12.16】

并发控制模型

  1.悲观并发控制:

A.默认冲突存在,当前进程通过获取当前数据的锁阻止其他进程的访问。

B.读与写之间是相互阻塞。

2.乐观并发控制:

A.使用行版本控制保持数据被操作前的状态。

B.读与写之间不会相互阻塞;但是写会发生阻塞,SQL SERVER会把冲突的错误信息发送给上层的应用程序。

并发造成的数据行为

  1.丢失更新

当两个进程都读取数据A并修改了数据值,就会造成某个进程修改的数据值被覆盖。

数据A=10

 时间 进程1   进程2
 1 SELECT A   
 2   SELECT A 
 3 UPDATA A=A+10   
 4   UPDATE A=A+20 

运行完,数据A=30

进程1对数据A的修改被丢失了。

2.脏读

进程1修改数据A值但未提交,进程2读取了修改后的数据A,随后进程1又回滚了对数据A的修改,造成进程2读取了不一致的状态值。

数据A=10

 时间 进程1   进程2
 1 UPDATA A=A+10(未提交)  
 2   SELECT A 
 3 UPDATA A=A-10(回滚)  

A值本身没有变化,但是进程2读取的A值为20。

  3.不可重复读

进程1读取数据A之后,进程2修改了数据A,进程1再次读取A值,与之前读取的A值不一致。

4.幻影

这种行为发生在一个数据集内的部分数据被修改。

时间: 2024-11-03 03:39:57

锁和并发(一)【2015.12.16】的相关文章

2015.12.16 doubleLinkedList-Function

1 #include <stdio.h> 2 #include <stdbool.h> 3 #include <stdlib.h> 4 5 typedef struct node{ 6 struct node *previous; 7 int age; 8 struct node *next; 9 }Node; 10 11 //创建一个结点 12 Node *createNode(); 13 //初始化链表 14 void intial(Node *const pHea

#VSTS日志# 2015/12/10 – 终于可以删除工作项了

最近的更新不少,废话少说,直接上干货 定制工作项字段 本周的更新后,所有的用户都可以在vsts上直接给工作项添加字段了,具体内容包括– 添加新字段(日期,字符串,整形,数字)– 字段显示位置配置– 过程模版继承– 过程模版安全性配置 很多人都知道,在vsts在线版上一直缺少工作项定制能力,这次的更新一定让很多人兴奋,但是我们的工作还没有完,后续我们会逐步完成字段下拉菜单,工作流配置,html字段,添加全新的工作项类型等功能.关于本功能的具体内容,请参考以下博客 http://devopshub.

(实例篇)php 使用redis锁限制并发访问类示例

1.并发访问限制问题 对于一些需要限制同一个用户并发访问的场景,如果用户并发请求多次,而服务器处理没有加锁限制,用户则可以多次请求成功. 例如换领优惠券,如果用户同一时间并发提交换领码,在没有加锁限制的情况下,用户则可以使用同一个换领码同时兑换到多张优惠券. 伪代码如下: if A(可以换领)         B(执行换领)              C(更新为已换领)             D(结束) 如果用户并发提交换领码,都能通过可以换领(A)的判断,因为必须有一个执行换领(B)后,才会

并发编程(6)基于锁的并发数据结构设计

主要内容: 并发数据结构设计的意义 指导如何设计 实现为并发设计的数据结构 如果一种数据结构可以被多个线程所访问,其要不就是绝对不变的(其值不会发生变化,并且不需同步),要不程序就要对数据结构进行正确的设计,以确保其能在多线程环境下能够(正确的)同步.一种选择是使用独立的互斥量,其可以锁住需要保护的数据,另一种选择是设计一种能够并发访问的数据结构.第一种使用互斥量,在同一时间只有一个线程可以访问数据,实际是一种串行的序列化访问.显示的组织了多线程对数据结构的并发访问. 所以,缩小保护区域,减少序

乐观锁与悲观锁——解决并发问题

悲观锁(Pessimistic Lock), 顾名思义,就是很悲观,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会block直到它拿到锁.传统的关系型数据库里边就用到了很多这种锁机制,比如行锁,表锁等,读锁,写锁等,都是在做操作之前先上锁. 乐观锁(Optimistic Lock), 顾名思义,就是很乐观,每次去拿数据的时候都认为别人不会修改,所以不会上锁,但是在更新的时候会判断一下在此期间别人有没有去更新这个数据,可以使用版本号等机制.乐观锁适用于

【我的书】Unity Shader的书 — 文件夹(2015.12.21更新)

写在前面 感谢全部点进来看的朋友.没错.我眼下打算写一本关于Unity Shader的书. 出书的目的有以下几个: 总结我接触Unity Shader以来的历程,给其它人一个借鉴.我非常明确学Shader的艰难,在群里也见了非常多人提出的问题. 我认为学习Shader还是一件有规律可循的事情,但问题是中文资料难觅,而大家又不愿意去看英文...这对我有什么优点呢?强迫我对知识进行梳理,对细节问题把握更清楚. 第二个原因你懂的. 关于本书的定位问题: 面向Unity Shader刚開始学习的人,但要

【谜客帝国】第17届阳光原创联想题会(2015.3.16)

[谜客帝国]第17届阳光原创联想题会(2015.3.16)主持:瓷   计分:晴画1.此题   开始   歌曲   甲子  1   一2.双杠   愚蠢   其中   丑牛  1   二3.网开一面  玲珑曲线   一再包抄  真心团圆   3  三围4.太祖革弊强国运  政务公开除陈规日中差距从此始  发展才是硬道理   4  明治维新5.经典童话  埃及少女  刚刚上映  郑钧歌曲   3 灰姑娘6.新年快乐  狼不出没  未必高兴  南朝人名   2  羊欣7.新年雨连绵  猴头探龙宫 未

2015/12/26 十六、 八 、二 进制转十进制

十六进制41BD 转换十进制4*16^3+1*16^2+11*16^1+13*16^0=16384+256+176+13=16829 十六进制A10C.8 转换十进制10*16^3+1*16^2+0*16^1+12*16^0+8*16^-1=40960+0+16+12+0.5=41228.5 八进制146.1 转换成十进制1*8^2+4*8^1+6*8^0+1*8^-1=64+32+6+0.125=102.125 八进制5312.2 转换成十进制5*8^3+3*8^2+1*8^1+2*8^0+2

mysql练习题-2016.12.16

>>>>>>>>>> 练习时间:2016.12.16 编辑时间:2016-12-20-->22:12:08 题: 涉及:多表查询.exists.count().group by.order by 1.1 关系模式 学生student:   SNO:学号:   SNAME:姓名:   AGE:年龄 :   SEX:性别 课程course:CNO:课程代码,CNAME:课程名称,TEACHER:教师 学生成绩SC:SNO:学号,CNO:课程代码