原文:http://blog.csdn.net/minipeach/article/details/5325161/ 做项目时由于业务逻辑的需要,必须对数据表的一行或多行加入行锁,举个最简单的例子,图书借阅系统。假设 id=1 的这本书库存为 1 ,但是有 2 个人同时来借这本书,此处的逻辑为 问题
分类:
数据库 时间:
2016-03-18 20:08:41
阅读次数:
229
这篇文章主要介绍表锁和行锁一.表锁1.查看表锁的竞争情况showstatuslike‘table_locks%‘如果Table_locks_waited很大,则说明表锁竞争很激烈,并发性能低下。
分类:
数据库 时间:
2016-03-16 01:33:52
阅读次数:
236
悲观锁(Pessimistic Lock), 顾名思义,就是很悲观,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会block直到它拿到锁。传统的关系型数据库里边就用到了很多这种锁机制,比如行锁,表锁等,读锁,写锁等,都是在做操作之前先上锁。 乐观锁(
分类:
其他好文 时间:
2016-03-14 09:34:53
阅读次数:
168
数据库锁的基本原理 为了保证数据的完事性和一致性,数据库系统采用锁来实现事务的隔离性。各种大型数据库采用的锁基本理论是一致的,但在具体实现上各有差别。 从并发事务锁定的关系上看,可以分为共享锁定和独占锁定。从锁定的对象不同,一般可以分为表锁定和行锁定。 锁 共享锁用于读取数据操作,它是非独占的,允许
分类:
数据库 时间:
2016-02-27 22:08:41
阅读次数:
238
经常听到DBA在谈论各种数据库时。都会提到一个词语:锁升级。 那么。什么是锁升级呢?它的作用又是什么呢?在什么情况下会出现锁升级呢? 锁升级,就是将众多细粒度锁转换为较少的粗粒度的锁以削减系统开销的进程。假如行锁是有开销的,那对1行加锁可能没问题,但对1万行加锁。那对系统开销就非常大了,此时。数据库
分类:
其他好文 时间:
2016-02-18 13:55:32
阅读次数:
119
在平常的高并发的程序中,为了保证数据的一致性,因此都会用到锁,来对当前的线程进行锁定。在单机操作中,很好做到,比如可以采用Synchronized、Lock或者其他的读写多来锁定当前的线程。但是在分布式的系统中,就很难做到这一点。因此可以采用zookeeper中节点的特性来满足这一点。大致实现的思路如下。 1.每个客户端都去zookeeper上创建临时的顺序节点 2.客户端判断当前自己创建的节点是...
分类:
其他好文 时间:
2016-02-03 11:50:02
阅读次数:
135
行锁的3中算法 Record Lock:单个行记录上的锁 Gap Lock:间隙锁,锁定一个范围,但不包含记录本身 Next-key Lock:Gap Lock+Record Lock锁定一个范围,并且锁定记录本身 Record Lock总是会去锁住索引记录,如果InnoDB存储引擎表在建立的时候没
分类:
数据库 时间:
2016-02-01 18:49:44
阅读次数:
198
Mysql分库分表方案本文转自:这里Mysql分库分表方案1.为什么要分表:当一张表的数据达到几千万时,你查询一次所花的时间会变多,如果有联合查询的话,我想有可能会死在那儿了。分表的目的就在于此,减小数据库的负担,缩短查询时间。mysql中有一种机制是表锁定和行锁定,是为了保证数据的完整性。表锁定表...
分类:
数据库 时间:
2016-01-14 00:50:13
阅读次数:
255
Mysql分库分表方案1.为什么要分表:当一张表的数据达到几千万时,你查询一次所花的时间会变多,如果有联合查询的话,我想有可能会死在那儿了。分表的目的就在于此,减小数据库的负担,缩短查询时间。mysql中有一种机制是表锁定和行锁定,是为了保证数据的完整性。表锁定表示你们都不能对这张表进行操作,必须等...
分类:
数据库 时间:
2016-01-12 15:03:33
阅读次数:
209
锁.whit(); //将线程丢进线程池,暂停运行。 锁.notify(); //唤醒线程池中的最先存入那个同锁线程 锁.notifyAll(); //唤醒线程池中所有的同锁线程都使用在同步中,因为要对持有监视器(锁)的线程操作。所以要使用在同步中,因为只有同步才具有锁。为什么这些操作线程的...
分类:
编程语言 时间:
2015-12-27 17:47:12
阅读次数:
183