oracle数据库:开发成功的Oracle应用_笔记7
1.3.2理解并发控制
并发控制在不同的数据库中各不相同。正是因为并发控制,才使得数据库不同于文件系统,也使得不同的数据库彼此有所区别。程序员的数据库应用要在并发访问条件下正常地工作,这一点很重要,但这也是人们时常疏于测试的一个方面。有些技术在一切都顺利执行的情况下可能工作得很好,但是如果任务要同时进行,这些技术的表现可能就差强人意了。如果对数据库如何实现并发控制了解不够,就会遭遇以下结果:
.破坏数据的完整性;
.随着用户数的增多,应用的运行速度减慢;
.不能很好地扩展应用来支持大量用户。
并发问题最难跟踪,就像调试多线程程序一样。
1实现锁定
数据库使用锁(lock)来保证任何给定时刻最多只有一个事务在修改给定的一段数据。实质上讲,正是锁机制才使并发控制成为可能。例如,如果没有某种锁定模型来阻止对同一行的并发更新,数据库就不可能提供多用户访问。不过,如果滥用或者使用不当,锁反倒会阻碍并发性。如果你或数据库本身不必要地对数据锁定,能并发地完成操作的人数就会减少。因此,要理解什么是锁定,数据库中锁定是怎样工作的,这对于开发可扩展地、正确的应用至关重要。
以下是对Oracle锁定策略的总结。
.Oracle只在修改时才对数据加行级锁。正常情况下不会升级到块级锁或表级锁。
.如果只是读数据,Oracle绝不会对数据锁定。不会因为简单的读操作在数据行上锁定。
.写入器(writer)不会阻塞读取器(reader)。换种说法,读read不会被写write阻塞。这一点几乎与其他许多数据库都不一样。
.写入器想写某行数据,但另一个写入器已经锁定了这行数据,此时该写入器才会被阻塞。读取器绝对不会阻塞写入器。
开发应用时必须考虑这些因素,而且还要认识到这个策略是Oracle所独有的。
2.防止丢失更新
Oracle的无阻塞方法有一个副作用,如果确实想保证一次最多只有一个用户访问一行数据,开发人员就得自己做些工作。
http://www.52ij.com/jishu/5135.htmloracle数据库:开发成功的Oracle应用_笔记6
本文来源 我爱IT技术网 http://www.52ij.com/jishu/5136.html 转载请保留链接。
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
