设为首页
收藏本站
淘宝精选
开启辅助访问
登录
注册后绑定Q登陆
手机号登录
手机号码,快捷登录
微信登录
QQ登录
快捷导航
发布信息
搜索
搜索
支持我们
使用96IE来支持论坛
首页
任务
勋章
签到
签到等于每天打卡
导读
邀请码
装机必备的软件、去广告版
装机助手
装机网
精品操作系统下载
免费邀请码
记录
Doing
每日签到
本版
帖子
用户
PCOS技术网
»
首页
›
≡技术交流≡
›
电脑技术交流
›
为什么oracle不会发生锁升级?
返回列表
发新帖
查看:
484
|
回复:
2
为什么oracle不会发生锁升级?
[复制链接]
amwdnuff
amwdnuff
当前离线
积分
10395266
IP卡
狗仔卡
签到天数: 2626 天
连续签到: 5 天
[LV.Master]至尊海神IIIIII
发表于 2009-9-25 22:43
|
广东
|
显示全部楼层
|
阅读模式
为什么oracle不会发生锁升级?
大家都知道oracle里面是不会发生锁升级的。而在sqlserver,db2里面都会发生锁升级,也就是当锁的行达到一定程度时锁就会升一级。
为什么oracle里面不会发生锁升级呢?
因为oracle的行锁是存放在每行的行头里面的,占用一个字节,它代表的是该事务所占用的ITL号。而不像其他数据库里面行锁是集中存放的,集中存放的话,当行锁的个数达到一定程度时,由于存放的空间问题,就需要发生锁升级。
oracle的行锁在事务提交时也不是马上就释放的,也就是delay clean out。
这个存放行锁的字节,如果是0,说明没有锁,如果大于0,则说明有行锁,这个数字代表的是该事务所占用的ITL号。假设事务1(所占用3号ITL)需要访问行1,那么它先读取行头的这个字节,如果是0,那么就可以直接访问该行的数据,如果大于0,假设是2,那么到第2号ITL槽去找相关的事务信息,如果事务已经提交的话,那么就将原先的锁信息清理掉,将该行的行锁标志为自己所用的ITL号,即3;如果2号ITL中的事务未提交,则出现enqueue等待,发生锁冲突。
PCOS系统下载站:http://zhuangji.wang
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
抢沙发
千斤顶
显身卡
amwdnuff
amwdnuff
当前离线
积分
10395266
IP卡
狗仔卡
签到天数: 2626 天
连续签到: 5 天
[LV.Master]至尊海神IIIIII
楼主
|
发表于 2009-9-25 22:43
|
广东
|
显示全部楼层
为什么oracle不会发生锁升级?
为什么oracle不会发生锁升级?
大家都知道oracle里面是不会发生锁升级的。而在sqlserver,db2里面都会发生锁升级,也就是当锁的行达到一定程度时锁就会升一级。
为什么oracle里面不会发生锁升级呢?
因为oracle的行锁是存放在每行的行头里面的,占用一个字节,它代表的是该事务所占用的ITL号。而不像其他数据库里面行锁是集中存放的,集中存放的话,当行锁的个数达到一定程度时,由于存放的空间问题,就需要发生锁升级。
oracle的行锁在事务提交时也不是马上就释放的,也就是delay clean out。
这个存放行锁的字节,如果是0,说明没有锁,如果大于0,则说明有行锁,这个数字代表的是该事务所占用的ITL号。假设事务1(所占用3号ITL)需要访问行1,那么它先读取行头的这个字节,如果是0,那么就可以直接访问该行的数据,如果大于0,假设是2,那么到第2号ITL槽去找相关的事务信息,如果事务已经提交的话,那么就将原先的锁信息清理掉,将该行的行锁标志为自己所用的ITL号,即3;如果2号ITL中的事务未提交,则出现enqueue等待,发生锁冲突。
PCOS系统下载站:http://zhuangji.wang
回复
支持
反对
使用道具
举报
显身卡
amwdnuff
amwdnuff
当前离线
积分
10395266
IP卡
狗仔卡
签到天数: 2626 天
连续签到: 5 天
[LV.Master]至尊海神IIIIII
楼主
|
发表于 2009-9-25 22:43
|
广东
|
显示全部楼层
为什么oracle不会发生锁升级?
为什么oracle不会发生锁升级?
大家都知道oracle里面是不会发生锁升级的。而在sqlserver,db2里面都会发生锁升级,也就是当锁的行达到一定程度时锁就会升一级。
为什么oracle里面不会发生锁升级呢?
因为oracle的行锁是存放在每行的行头里面的,占用一个字节,它代表的是该事务所占用的ITL号。而不像其他数据库里面行锁是集中存放的,集中存放的话,当行锁的个数达到一定程度时,由于存放的空间问题,就需要发生锁升级。
oracle的行锁在事务提交时也不是马上就释放的,也就是delay clean out。
这个存放行锁的字节,如果是0,说明没有锁,如果大于0,则说明有行锁,这个数字代表的是该事务所占用的ITL号。假设事务1(所占用3号ITL)需要访问行1,那么它先读取行头的这个字节,如果是0,那么就可以直接访问该行的数据,如果大于0,假设是2,那么到第2号ITL槽去找相关的事务信息,如果事务已经提交的话,那么就将原先的锁信息清理掉,将该行的行锁标志为自己所用的ITL号,即3;如果2号ITL中的事务未提交,则出现enqueue等待,发生锁冲突。
PCOS系统下载站:http://zhuangji.wang
回复
支持
反对
使用道具
举报
显身卡
返回列表
发新帖
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
注册后绑定Q登陆
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页