最近看了一些文档,里面内容有提到过ORACLE和其他数据库中实现锁的机制不太一样。在ORACLE中的锁好像占用的资源很少,而在其他数据库中锁好像要占用较多的资源。
这是为什么呢?希望有所了解的帮忙解答一下,不用太详细,大概说一下两种实现方法就可以了。
这是为什么呢?希望有所了解的帮忙解答一下,不用太详细,大概说一下两种实现方法就可以了。
解决方案 »
- 大三的学生请问下数据库要学到什么程度
- oracle 百万级数据的插入
- oracle中的sql并发能给系统带来哪些安全隐患,又能给系统带来那些负载。
- 关于proc的一个问题
- oracle 连接数异常增加
- 求两表组合的sql语句
- sql语句(在线等)--应该简单
- 为什么我的update语句执行得这么慢?怎样解决?请指教!
- SQL语句高手过来看一看!单表查询问题
- 当我选“登陆到ORACLE MANAGER SERVER”后,输入正确的用户名和密码后,总提示请验证已输入ORACLE MANAGERMENT SERVER的正确主机名和状态
- 菜鸟问问题关于order by的
- oracle怎么从日志中找到以前执行过的sql?
表1 Oracle的TM锁类型
锁模式 锁描述 解释 SQL操作
0 none
1 NULL 空 Select
2 SS(Row-S) 行级共享锁,其他对象只能查询这些数据行 Select for update、Lock for update、Lock row share
3 SX(Row-X) 行级排它锁,在提交前不允许做DML操作 Insert、Update、Delete、Lock row share
4 S(Share) 共享锁 Create index、Lock share
5 SSX(S/Row-X) 共享行级排它锁 Lock share row exclusive
6 X(Exclusive) 排它锁 Alter table、Drop able、Drop index、Truncate table 、Lock exclusive
表2 数据字典视图说明
视图名 描述 主要字段说明
v$session 查询会话的信息和锁的信息。 sid,serial#:表示会话信息。program:表示会话的应用程序信息。row_wait_obj#:表示等待的对象。和dba_objects中的object_id相对应。
v$session_wait 查询等待的会话信息。 sid:表示持有锁的会话信息。Seconds_in_wait:表示等待持续的时间信息Event:表示会话等待的事件。
v$lock 列出系统中的所有的锁。 Sid:表示持有锁的会话信息。Type:表示锁的类型。值包括TM和TX等。ID1:表示锁的对象标识。lmode,request:表示会话等待的锁模式的信息。用数字0-6表示,和表1相对应。
dba_locks 对v$lock的格式化视图。 Session_id:和v$lock中的Sid对应。Lock_type:和v$lock中的type对应。Lock_ID1: 和v$lock中的ID1对应。Mode_held,mode_requested:和v$lock中的lmode,request相对应。
v$locked_object 只包含DML的锁信息,包括回滚段和会话信息。 Xidusn,xidslot,xidsqn:表示回滚段信息。和v$transaction相关联。Object_id:表示被锁对象标识。Session_id:表示持有锁的会话信息。Locked_mode:表示会话等待的锁模式的信息,和v$lock中的lmode一致。
不过我想问的不是ORACLE的锁有哪些类型以及锁的简介重点是“为什么锁在ORACLE中占用资源是可以不用专门考虑的,因为它比较少,而在其他数据库中锁是个很耗资源的东西”
我想谁能从锁的实现机理上来解释一下区别。呵呵
http://download.csdn.net/down/340345/tillmidnight
有人知道这个是什么意思吗我从来没看到过 刚去网上搜了下也没找到