线上生产环境在某些时候经常性的出现数据库操作死锁,导致业务人员无法进行操作。经过DBA的分析,是某一张表的insert操作和delete操作发生了死锁。简单介绍下数据库的情况(因为涉及到真实数据,这里做了模拟,不影响具体的分析和分析的结果。)假设存在如下2张表:
Order 表的数据如下:
Customer表的数据如下:
Order和Custo...
分类:
数据库 时间:
2016-04-08 15:11:11
阅读次数:
160
乐观锁(Optimistic Locking): 乐观锁意思是不锁定表的情况下,利用业务的控制来解决并发问题,这样即保证数据的并发可读性又保证保存数据的排他性,保 证性能的同时解决了并发带来的脏数据问题。 相对悲观锁而言,乐观锁机制采取了更加宽松的加锁机制。悲观锁大多数情况下依 靠数据库的锁机制实现 ...
分类:
其他好文 时间:
2016-04-06 15:20:37
阅读次数:
184
Lock锁简介Lock锁机制是JDK 5之后新增的锁机制,不同于内置锁,Lock锁必须显式声明,并在合适的位置释放锁。Lock是一个接口,其由三个具体的实现:ReentrantLock、ReetrantReadWriteLock.ReadLock 和 ReetrantReadWriteLock.WriteLock,即重入锁、读锁和写锁。增加Lock机制主要是因为内置锁存在一些功能上局限性。比如无法中...
分类:
编程语言 时间:
2016-04-05 16:21:10
阅读次数:
185
目前在Java中存在两种锁机制:synchronized和Lock,Lock接口及其实现类是JDK5增加的内容,其作者是大名鼎鼎的并发专家Doug Lea。本文并不比较synchronized与Lock孰优孰劣,只是介绍二者的实现原理。 数据同步需要依赖锁,那锁的同步又依赖谁?synchronize ...
分类:
其他好文 时间:
2016-04-05 12:09:27
阅读次数:
128
一、前言 最开始打算分析ReentrantLock,但是分析到最后,发现离不开LockSuport的支持,所以,索性就先开始分析LockSupport,因为它是锁中的基础,是一个提供锁机制的工具类,所以先对其进行分析。 二、LockSupport源码分析 2.1 类的属性 public class ...
分类:
其他好文 时间:
2016-04-02 17:29:06
阅读次数:
272
悲观锁(Pessimistic Lock), 顾名思义,就是很悲观,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会block直到它拿到锁。传统的关系型数据库里边就用到了很多这种锁机制,比如行锁,表锁等,读锁,写锁等,都是在做操作之前先上锁。 乐观锁(Op ...
分类:
其他好文 时间:
2016-03-31 14:34:53
阅读次数:
151
Oracle 多粒度锁机制介绍 根据保护对象的不同,Oracle数据库锁可以分为以下几大类: (1) DML lock(data locks,数据锁):用于保护数据的完整性; (2) DDL lock(dictionary locks,字典锁):用于保护数据库对象的结构(例如表、视图、索引的结构定义 ...
分类:
数据库 时间:
2016-03-30 12:24:56
阅读次数:
171
用关键字synchronized声明方法在某些情况下是有弊端的,比如A线程调用同步方法之行一个长时间的任务,那么B线程必须等待比较长的时间,在这样的情况下可以使用synchronized同步语句快来解决。 一、用同步代码块解决同步方法的弊端 Task类 常量工具类 线程类——2个 运行类 结果 这里 ...
分类:
编程语言 时间:
2016-03-28 10:32:44
阅读次数:
233
1. 2.第一类丢失更新 3.脏读 4.虚读、幻读 5.不可重复读 6.第二类丢失更新 7.数据库的锁机制 8.数据库事务的隔离机制
分类:
Web程序 时间:
2016-03-21 23:08:41
阅读次数:
274