ACID: A(Atomicity):原子性,要么全部执行,要么都不执行 C(consistency):一致性: 特点: 1、一个操作除法级联,这些必须成功,否则全部失败(原子性) 2、所有节点同步更新 3、串行事物 I(Isolation):隔离性 > 乐观锁或悲观锁实现 D(durablity) ...
分类:
数据库 时间:
2018-09-16 16:03:17
阅读次数:
169
一、前言 今天在做一些高并发的简单测试时(主要测试悲观锁、乐观锁、重入机制等等的效率,加深对锁的理解),报了一个莫名其妙的空指针错误: 错误原因指向一个业务实现类,于是赶忙打开该类查看第62行代码: 观察到,第62行只是一个简单的判断语句: 该判断句所引对象来自61行代码: 思考后发现,如果是空指针 ...
分类:
其他好文 时间:
2018-09-09 12:00:53
阅读次数:
226
为什么取1248 二进制 CRUD 移位效率高 在并发和效率选择一个平衡点 一般不会考虑幻读 因为我们不会再一个事务里查询两次,(只能设置为seralizable) 悲观锁和乐观锁的前提是read-uncommitted 在数据库中 默认是repeatable read 悲观锁是想着总有人要更改 所 ...
分类:
Web程序 时间:
2018-09-07 22:52:48
阅读次数:
224
定义: 悲观锁(Pessimistic Lock): 每次获取数据的时候,都会担心数据被修改,所以每次获取数据的时候都会进行加锁,确保在自己使用的过程中数据不会被别人修改,使用完成后进行数据解锁。由于数据进行加锁,期间对该数据进行读写的其他线程都会进行等待。 乐观锁(Optimistic Lock) ...
分类:
编程语言 时间:
2018-09-07 11:09:33
阅读次数:
134
一:乐观锁(Optimistic Lock) 每次获取数据的时候,都不会担心数据会被修改,所以每次获取数据时都不会进行加锁。 但是在更新数据的时候,需要判断该数据是否被别人修改过,如果数据被其他线程修改过,则不进行数据更新。 如果数据没有被其他线程修改,则进行数据更新。由于数据没有进行加锁,期间该数 ...
分类:
其他好文 时间:
2018-09-03 12:11:45
阅读次数:
183
一. Hibernate中的事务 1. 事务的回顾 1.1 什么是事务(Transaction)(面试重点) 是并发控制的单元,是用户定义的一个操作序列。这些操作要么都做,要么都不做,是一个不可分割的工作单位。通过事务,sql 能将逻辑相关的一组操作绑定在一起,以便服务器 保持数据的完整性。事务通常 ...
分类:
Web程序 时间:
2018-09-03 02:43:14
阅读次数:
201
数据库锁:数据库锁出现的原因是为了处理并发问题。 并发控制一般采用三种方法,分别是乐观锁和悲观锁以及时间戳。 乐观锁认为一个用户读数据的时候,别人不会去写自己所读的数据,就是不做任何操作。悲观锁就刚好相反,觉得自己读数据库的时候,别人可能刚好在写自己刚读的数据,其实就是持一种比较保守的态度,悲观锁就 ...
分类:
数据库 时间:
2018-09-02 16:10:15
阅读次数:
184
前言 分布式锁一般有三种实现方式:1. 数据库乐观锁;2. 基于Redis的分布式锁;3. 基于ZooKeeper的分布式锁。本篇博客将介绍第二种方式,基于Redis实现分布式锁。虽然网上已经有各种介绍Redis分布式锁实现的博客,然而他们的实现却有着各种各样的问题,为了避免误人子弟,本篇博客将详细 ...
分类:
编程语言 时间:
2018-08-31 19:29:26
阅读次数:
165
悲观锁(Pessimistic Lock), 顾名思义,就是很悲观,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会block直到它拿到锁。传统的关系型数据库里边就用到了很多这种锁机制,比如行锁,表锁等,读锁,写锁等,都是在做操作之前先上锁。 乐观锁(Op ...
分类:
其他好文 时间:
2018-08-31 17:10:26
阅读次数:
161
操作数据库的时候,可能会由于并发问题而引起的数据的不一致性(数据冲突) 乐观锁 乐观锁不是数据库自带的,需要我们自己去实现。乐观锁是指操作数据库时(更新操作),想法很乐观,认为这次的操作不会导致冲突,在操作数据时,并不进行任何其他的特殊处理(也就是不加锁),而在进行更新后,再去判断是否有冲突了。 通 ...
分类:
数据库 时间:
2018-08-28 13:03:33
阅读次数:
190