码迷,mamicode.com
首页 > 数据库 > 详细

数据库的锁

时间:2016-05-11 20:19:13      阅读:224      评论:0      收藏:0      [点我收藏+]

标签:数据   库锁   

在数据库中有两种基本的锁类型:
排它锁(Exclusive Locks,即X锁)和共享锁(Share Locks,即S锁)。
当数据对象被加上排它锁时,其他的事务不能对它读取和修改。
加了共享锁的数据对象可以被其他事务读取,但不能修改。

数据库利用这两种基本的锁类型来对数据库的事务进行并发控制。


根据保护的对象不同,Oracle数据库锁可以分为以下几大类:
DML锁(data locks,数据锁),
用于保护数据的完整性;
DDL锁(dictionary locks,字典锁),
用于保护数据库对象的结构,如表、索引等的结构定义;


在我们实际应用开发中涉及较多的是DML锁,其他两种的话DBA会更加关心点;
DML锁的目的在于保证并发情况下的数据完整性,
主要包括TM锁和TX锁,其中TM锁称为表级锁,TX锁称为事务锁或行级锁。

参考http://zhidao.baidu.com/link?url=-MqhplcsaZoWog2TSLWbv7rTh6l-EfqvZZMOymNdDBZmypkoN9f-WAbLvHNgiS3lilu4y6QQSbcHowIGqrjuea


=============================================================

悲观锁(Pessimistic Lock),
顾名思义,就是很悲观,每次去拿数据的时候都认为别人会修改,
所以每次在拿数据的时候都会上锁,
这样别人想拿这个数据就会block直到它拿到锁。
传统的关系型数据库里边就用到了很多这种锁机制,
比如行锁,表锁等,读锁,写锁等,都是在做操作之前先上锁。


乐观锁(Optimistic Lock),
顾名思义,就是很乐观,每次去拿数据的时候都认为别人不会修改,
所以不会上锁,但是在更新的时候会判断一下在此期间别人有没有去更新这个数据,
可以使用版本号等机制。乐观锁适用于多读的应用类型,这样可以提高吞吐量,
像数据库如果提供类似于write_condition机制的其实都是提供的乐观锁。


本文出自 “w51spring” 博客,请务必保留此出处http://w51spring.blog.51cto.com/7524892/1772126

数据库的锁

标签:数据   库锁   

原文地址:http://w51spring.blog.51cto.com/7524892/1772126

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!