当并发事务同时访问一个资源的时候,有可能导致数据不一致。因此需要一种致机制来将访问顺序化。锁就是其中的一种机制。 数据库上的操作可以归纳为两中,读和写。多个事务同时读一个对象的时候,是不会有冲突的。同时读和写或者同时写才会产生冲突。因此为了提高并发性,通常定义两种锁: A. 共享锁(Shared L ...
分类:
数据库 时间:
2017-03-24 00:43:02
阅读次数:
198
脏读一个常见的概念。在多线程中,难免会出现在多个线程中对同一个对象的实例变量或者全局静态变量进行并发访问的情况,如果不做正确的同步处理,那么产生的后果就是"脏读",也就是取到的数据其实是被更改过的。注意这里 局部变量是不存在脏读的情况多线程线程实例变量非线程安全看一段代码:public class ... ...
分类:
编程语言 时间:
2017-03-23 18:56:20
阅读次数:
281
synchronized同步代码块用关键字synchronized声明方法在某些情况下是有弊端的,比如A线程调用同步方法执行一个较长时间的任务,那么B线程必须等待比较长的时间。这种情况下可以尝试使用synchronized同步语句块来解决问题。看一下例子:下面例子是优化后的例子 使用代码块锁,原先例... ...
分类:
编程语言 时间:
2017-03-23 18:52:05
阅读次数:
171
一 前言 本来今天打算继续研究InnoDB 锁机制并完成第二篇文章,查找资料的时候忽悠想起来自己遗漏了之前的CSDN的公开课《深入理解MySQL中的undo,redo,mvcc》 。于是乎走入另外一条路了,把MySQL IO 层面的知识复习一遍,加深了对MySQL 数据一致性,主从一致性的理解。本文 ...
分类:
数据库 时间:
2017-03-19 10:44:07
阅读次数:
179
http://www.2cto.com/database/201403/286730.html 1. 数据库并发的问题 数据库带来的并发问题包括: 1. 丢失更新。 2. 未确认的相关性(脏读)。 3. 不一致的分析(非重复读)。 4. 幻像读。 详细描述如下: 1.1.丢失更新 当两个或多个事务选 ...
分类:
数据库 时间:
2017-03-12 23:49:10
阅读次数:
231
业务逻辑的实现过程中,往往需要保证数据访问的排他性。因此,我们就需要通过一些机制来保证这些数据在某个操作过程中不会被外界修改,这样的机制,在这里,也就是所谓的“锁”,即给我们选定的目标数据上锁,使其无法被其它程序修改。 Hibernate 支持两种锁机制: 1. 悲观锁(Pessimistic Lo ...
分类:
Web程序 时间:
2017-03-12 21:41:38
阅读次数:
257
悲观锁(Pessimistic Lock), 顾名思义,就是很悲观,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会block直到它拿到锁。传统的关系型数据库里边就用到了很多这种锁机制,比如行锁,表锁等,读锁,写锁等,都是在做操作之前先上锁。 乐观锁(Op ...
分类:
其他好文 时间:
2017-03-10 22:04:03
阅读次数:
150
ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,它包含一个简单的原语集,分布式应用程序可以基于它实现同步服务,配置维护和命名服务等。Zookeeper是hadoop的一个子项目,其发展历程无需赘述。在分布式应用中,由于工程师不能很好地使用锁机制,以及基于消息的协调机制不适合在某些 ...
分类:
其他好文 时间:
2017-03-09 23:13:09
阅读次数:
389
特点:支持事务。锁定机制的改进,Innodb改变了MylSAM的锁机制,实现了行锁。实现外键。.frm文件来存放结构定义相关的元数据,但是表数据和索引数据是存在一起的,每个表单独存放还是表存放在一起,完全由用户来决定。理论:Innodb的物理结构分为两大部分数据文件(表数据和索..
分类:
数据库 时间:
2017-03-07 23:30:51
阅读次数:
383
悲观锁(Pessimistic Lock), 顾名思义,就是很悲观,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会block直到它拿到锁。传统的关系型数据库里边就用到了很多这种锁机制,比如行锁,表锁等,读锁,写锁等,都是在做操作之前先上锁。 乐观锁(Op ...
分类:
其他好文 时间:
2017-03-06 23:31:45
阅读次数:
247