度量快速开发平台-专业、快速的软件定制快开平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 部件 流程 SQL
查看: 1515|回复: 4
打印 上一主题 下一主题

[分享] oracle中锁的理论小结

[复制链接]

542

主题

5916

帖子

1万

积分

作者

Rank: 7Rank: 7Rank: 7

积分
13589
跳转到指定楼层
楼主
发表于 2020-3-1 14:58:43 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
首先什么是锁呢?可以理解为他是对一种共享资源并发访问的一种控制:
在数据库中,基本的锁类型有两类,分别是
X-排他锁:如果对象被一个排他锁给琐住,那么按照锁的相容性来讲其他会话就不能够在对这个会话所加锁的对象加任何的锁。
S-共享锁:如果对象被一个共享锁给锁住,那么按照锁的相容性来讲其他会话除了S锁本身,都不能对这个会话所加锁的对象加任何的锁。

在Oracle数据库中,锁是多粒度的,而且其锁类型可以分三大类
1.DML lock:目的是为了保护数据完整性
2.DDL lock:目的是为了保护数据库对象的结构
3.一些内部锁和latch:目的是为了保护数据库的内部结构


主要介绍一下DML锁(1.row level lock  2.table level lock)
1.TX(row level lock)
Oracle对于行级锁是事务级的。当一个事务发起一个更新(update)命令时,无论事务所涉及的行有多少,那么Oracle只会分配一个TX锁,所以在这里Oracle是不会像其他数据库一样有锁的升级(lock escalation),而且这种锁升级也并不是数据库的特性,但是他会执行锁的转换,Oracle会尽可能的在最低级别加锁。因此对于开销来讲1个锁的开销和1000000个锁的开销其实是一样的,都没有什么开销。而且Oracle也不会像其他数据库一样来通过维护一个锁的列表来管理锁的资源。


2.TM(table level lock)
表级锁,其实就是向表加锁了.那么在对一个表加锁之前,数据库需要做一些判断,首先是他要对表加的这个锁是否与表中所加的这个锁相容.其次,还要检查该锁是否与表中的每一行上的锁相容,对于这一点如果我一个表里面有很多的行,那么如果我要对一个表加锁的话,就需要遍历表中的所有行,来查看锁的相容性,这对数据库来讲无疑是高性能的一个障碍.所以呢,Oracle引出了一个意向锁的概念.
那么什么是意向锁呢?如果我给了一个节点加了一个意向锁,就表示我要对其下层节点加一个同等类型的锁,意思也就是说要对一个节点加锁,就要先在其上层节点上加个意向锁,这样一来,如果我要对一个表加锁的话,那么只要判断和意向锁的相容性就好了,不需要再遍历表中的行来检查每一行的锁了,这样系统的效率就大大提高了.
意向锁有那些类型呢?
1.Intent share lock(意向共享锁 IS):如果要对一个对象加S锁,那么首先就要在其上层节点加IS锁
2.Intent exclusive lock(意向排他锁 IX):如果要对一个对象加X锁,首先也要对其上级节点加IX锁.
3.Shared intent exclusive lock(共享意向排他锁):如果一个事务对某个表加了SIX锁的话,则表示整个事务要读取整个的表,同时又会更新个别行.
这样我们可以总结一下,在对数据库对象加锁的时候就有5种
X , S , IX , IS ,  SIX


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

328

主题

3738

帖子

8566

积分

作者

Rank: 7Rank: 7Rank: 7

积分
8566
QQ
沙发
发表于 2020-3-1 16:40:21 | 只看该作者
不错,总结得全面!

点评

还行吧  详情 回复 发表于 2020-3-5 14:01
回复 支持 反对

使用道具 举报

542

主题

5916

帖子

1万

积分

作者

Rank: 7Rank: 7Rank: 7

积分
13589
板凳
 楼主| 发表于 2020-3-5 14:01:40 | 只看该作者
陈晓龙 发表于 2016-4-1 16:40
不错,总结得全面!

还行吧
回复 支持 反对

使用道具 举报

348

主题

3572

帖子

9378

积分

论坛元老

Rank: 8Rank: 8

积分
9378
地板
发表于 2020-3-5 15:46:15 | 只看该作者
哇撒(*@ο@*) 哇~
若現在就覺得失望無力,未來那麽遠妳該怎麽扛...
————————————————————————致自己
回复 支持 反对

使用道具 举报

542

主题

5916

帖子

1万

积分

作者

Rank: 7Rank: 7Rank: 7

积分
13589
5#
 楼主| 发表于 2020-3-5 17:00:57 | 只看该作者
万望 发表于 2016-4-5 15:46
哇撒(*@ο@*) 哇~

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|重庆度量科技  本站关键词:快速开发平台

GMT+8, 2024-12-23 04:27 , Processed in 0.129753 second(s), 29 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表