lock基本思路: volitile + CAS +Queue(存放线程) 实现了: 1 可见性(volitile 和 happenedBefor原则共同实现) 与 2 原子性(CAS ,CPU 指令实现) 共享锁和排它锁(ReentrantReadWriteLock): 共享锁与排他锁 共用一个线 ...
分类:
其他好文 时间:
2017-10-17 19:03:23
阅读次数:
135
mysql的服务器逻辑架构图如下: 目前工作用的5.5版本,5.5版本开始mysql开始将innoDB作为默认的存储引擎,innoDB的表是基于聚簇索引建立的。 mysql的存储引擎锁管理非常重要,在给定的资源上,锁定的数据量越少,则系统的并发程度越高,只要相互之间不发生冲突即可。 共享锁也叫读锁, ...
分类:
数据库 时间:
2017-10-10 16:56:45
阅读次数:
207
今天看代码看到有select name from user where id = 1 for update,有点懵逼,完全没有见过,只能说自己见识少了,那就只能学习一下。先做一下基本知识了解(大部分都是整理了别人的文档,如有侵权还请告知): 锁的基本概念 当多事务争取一个资源时,有可能导致数据不一致 ...
分类:
数据库 时间:
2017-09-30 21:48:55
阅读次数:
217
概述 从使用者的角度,AQS的功能可分为两类:独占功能和共享功能。它的子类中,要么实现并使用了它独占功能的API,要么使用了共享锁的功能,而不会同时使用两套API,即使是它的子类ReentrantReadWriteLock,也是通过两个内部类:读锁和写锁,分别实现的两套API来实现的。 AQS是一个 ...
分类:
编程语言 时间:
2017-09-29 17:57:00
阅读次数:
255
mysql InnoDB引擎 共享锁(S) select ... lock in share mode, 加了共享锁的数据, 其它地方只能加共享锁, 不能加排他锁. 排他锁(X) select ...for update, update,delete,insert 都会自动给涉及到的数据加上排他锁, ...
分类:
数据库 时间:
2017-09-25 16:04:58
阅读次数:
183
锁的作用:避免并发请求时对同一个数据对象同时修改,导致数据不一致。 怎么加锁: 1.事务T1在对某个数据对象R1操作之前,先向系统发出请求,对其加锁L1. 2.之后,事务T1对该数据对象R1有了相应的控制,在T1释放L1之前,其它事务不能修改R1. 锁类型: 1.排它锁(X)。 2.共享锁(S)。 ...
分类:
数据库 时间:
2017-09-14 00:34:21
阅读次数:
259
1、synchronized与Lock的区别 使用synchronized这个关键字实现的同步块有一些缺点: (1)锁只有一种类型 (2)线程得到锁或者阻塞 (3)Lock是在Java语言层面基于CAS自旋方式来实现锁的,在并发条件下,其性能要相对比synchronized好一些。 为了解决如上的各 ...
分类:
编程语言 时间:
2017-09-09 22:26:44
阅读次数:
193
问题说明 死锁的第一种情况 解决方法 死锁的第二种情况 解决方法 死锁的第三种情况 解决方法 ...
分类:
数据库 时间:
2017-09-08 11:53:59
阅读次数:
192
解决数据库并发控制问题并实现事务的各个隔离级别 共享锁:代号S锁,锁粒度是行或者元组(多个行),一个事务获取了共享锁后,可以对锁定范围内的数据进行读操作 排他锁:代号X锁,锁粒度与共享锁相同,一个事务获取了共享锁后,可以对锁定范围内的数据进行读和写操作 事务A获取了一个元组的共享锁,事务B还可以立即 ...
分类:
其他好文 时间:
2017-08-26 18:43:31
阅读次数:
143
// 写在前面,实际上,数据库加锁的类型和范围受到多种因素的影响,例如数据库隔离等级,SQL语句,是否使用主键、索引等等。可以查看博文: http://www.cnblogs.com/zhaoyl/p/4121010.html 了解 这一章节讲述了InnoDB使用的锁类型。 共享锁(S)和独占锁(X ...
分类:
数据库 时间:
2017-08-22 01:41:33
阅读次数:
249