并发控制 并发情况下,需要做一些控制(一般是加锁),保证共享数据的一致性。 并发操作数据库时,需要给数据库中的数据加锁,确保数据库中数据的一致性。 数据库锁的常见分类 按使用方式来分:悲观锁、乐观锁 按锁级别来分:共享锁、排它锁(主要是这2种,当然还有其他的) 按锁粒度来分:行级锁、表级锁、页级锁 ...
分类:
数据库 时间:
2020-03-25 21:47:21
阅读次数:
82
164. 数据库的三范式是什么? 第一范式:强调的是列的原子性,即数据库表的每一列都是不可分割的原子数据项。 第二范式:要求实体的属性完全依赖于主关键字。所谓完全依赖是指不能存在仅依赖主关键字一部分的属性。 第三范式:任何非主属性不依赖于其它非主属性。 表类型如果是 MyISAM ,那 id 就是 ...
分类:
数据库 时间:
2020-03-23 00:17:02
阅读次数:
82
悲观锁:指悲观的认为数据存在脏读。超卖的场景。就会把大量访问锁死。悲观锁 分为 文件锁 和 数据表所 数据表锁又分为 表锁和行锁 ,表锁 是锁着这个表 只让只让他访问,其他都访问不了。而行锁 是针对某一条访问数据,进行的锁定。假如 同时有一万个用户来访问这个商品,但是他只有十个商品数量,此时,如果都 ...
分类:
数据库 时间:
2020-03-22 18:12:09
阅读次数:
107
并发控制 当程序中可能出现并发的情况时,我们就需要通过一定的手段来保证在并发情况下数据的准确性,通过这种手段保证了当前用户和其他用户一起操作时,所得到的结果和他单独操作时的结果是一样的。 这种手段就叫做并发控制。 并发控制的目的是保证一个用户的工作不会对另一个用户的工作产生不合理的影响。 " 没有做 ...
分类:
其他好文 时间:
2020-03-18 09:36:47
阅读次数:
62
事务是有隔离级别 read uncommited (读未提交):不做任何隔离,具有脏读,不可重复对,幻读的问题 read committed (读提交):可以防止脏读,不能防止不可重复读和幻读的问题 repeated read(可重复读):可以防止脏读,不可重复读,不能防止幻读(mysql的默认隔离 ...
分类:
其他好文 时间:
2020-03-18 09:36:28
阅读次数:
65
乐观锁和悲观锁 悲观锁(Pessimistic Lock) 顾名思义,就是很悲观,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会block直到它拿到锁。传统的关系型数据库里边就用到了很多这种锁机制,比如行锁,表锁等,读锁,写锁等,都是在做操作之前先上锁。 ...
分类:
编程语言 时间:
2020-03-15 20:43:39
阅读次数:
80
看题目: 第一种解法采用绝对悲观锁保证绝对的线程安全,思路很简单:不考虑线程协作写代码,然后找出单线程环境下存在控制依赖与数据依赖且涉及共享变量的部分,保证其原子性后确定互斥关系,决定那些操作是互斥的,则共用一把锁。 class H2O { int hNums=0; int oNums=0; pub ...
分类:
其他好文 时间:
2020-03-09 01:24:01
阅读次数:
65
互联网并发编程中,锁的概念时时刻刻都在我们身边,无论是并发编程时候线程锁,还是数据库网络中的锁,都有一些相似之处,都是为了保持数据库的完整性和一致性。不恰当的使用锁,会导致性能下降,出现死锁等情况,所以弄清楚锁的原理概念是必要的。 一、锁分类 二、悲观锁(Pessimistic Lock) 顾名思义 ...
分类:
数据库 时间:
2020-03-07 12:51:05
阅读次数:
94
转自 https://www.cnblogs.com/hustzzl/p/9343797.html 1. Java锁的种类 在笔者面试过程时,经常会被问到各种各样的锁,如乐观锁、读写锁等等,非常繁多,在此做一个总结。介绍的内容如下: 乐观锁/悲观锁 独享锁/共享锁 互斥锁/读写锁 可重入锁 公平锁/ ...
分类:
编程语言 时间:
2020-03-06 12:52:14
阅读次数:
76
乐观锁 乐观锁是一种乐观思想,即认为读多写少,遇到并发写的可能性低,每次去拿数据的时候都认为别人不会修改,所以不会上锁,但是在更新的时候会判断一下在此期间别人有没有去更新这个数据,采取在写时先读出当前版本号,然后加锁操作(比较跟上一次的版本号,如果一样则更新),如果失败则要重复读-比较-写的操作。 ...
分类:
其他好文 时间:
2020-03-02 22:36:07
阅读次数:
64