数据库数据锁定机制解析牛
中医减肥 2021年09月06日 浏览:6 次
他夺得了WCG中国区总决赛CF项目冠军。大专学业在读 检索结果如下: 然后执行如下的更新语句:update test set value=2 where id = 20。 在数据commit过后,会发现ORA_ROWSCN发生了变化,如下所示: 对于这种情况还是可以有办法解决的,就是利用Oracle 9i提供的ROWDEPENDENCIES建表关键字,这个关键字在Oracle9i中是为了增加行依赖性跟踪特性的,支持推进复制。在Oracle10g中有可以用来做行级别的ORA_ROWSCN用了。用这个关键字建表以后,在每行会增加一个隐藏的COLUMN,所以每行会增加6个byte的开销。建表语句如下所示: CREATE TABLE TEST(ID,NAME,LOCATION,VALUE,CONSTRAINT test_pk PRIMARY KEY(ID))ROWDEPENDENCIESAS SELECT deptno, dname, loc, 1 FROM pt
同样再执行:update test set value=2 where id = 20。 语句后,我们再看一下commit过后检索的结果: 可以看到这次只有id=20的数据的ORA_ROWSCN发生了更新。所以这个时候我们就可以利用ORA_ROWSCN作为乐观锁,用不着专门再增加一个额外的域了。而且这个域是Oracle负责维护的,开销也不是很大,不过需要Oracle 10g才可以使用。 总之,介绍了Oracle的锁定机制,究竟是悲观锁好还是乐观锁好,其实也是不一定的。Oracle中悲观锁还是很不错的,而且从开始的时候就把数据锁定。免除了后面的很多冲突处理。不过悲观锁需要保持一个Oracle连接,在我们常见的B/S应用中,特别是数据先取得,然后让用户再更新,再返回提交这种流程来说,悲观锁是不大可能的。首先是因为B/S应用中,一般是利用一个连接池,在两次Http Request请求都是不同的数据库Connection。而且也不能锁定一个数据太长时间,否则人人都这么锁定,应用很容易进入死锁状态,这个时候就要采用乐观锁了。而在乐观锁中,虽然采用散列的效果不错,络传输数据会减少很多,而且不用在数据库中增加COLUMN,不过由于散列计算比较占用CPU,所以还是需要仔细考虑一下的。ORA_ROWSCN可以说是比较好的选择,不过第一需要重新建表,第二需要在Oracle10g下才有这个特性,所以也不是到处都可以使用,当一个万金油的。
合肥医院哪家治疗妇科好人体气虚吃什么好
太原睾丸炎治疗费用多少钱

- 上一篇: 数据库数据锁定机制解析覆盖
- 下一篇 数据库机产呢
-
都市健身新概念
2019-07-16
-
眼睛草的功效与作用
2019-07-16
-
菜豆树的功效与作用
2019-07-12
-
中医治疗雀斑都有哪些偏方
2019-07-11
-
中医提醒女性也补肾
2019-07-07
-
水母雪莲花育苗移栽的几点经验
2019-07-02