易截截图软件、单文件、免安装、纯绿色、仅160KB

学习《Oracle 9i10g编程艺术》的笔记 (十) 锁

 1.在Oracle 中,你会了解到:
事务是每个数据库的核心,它们是“好东西”。
应该延迟到适当的时刻才提交。不要太快提交,以避免对系统带来压力。这是因为,如果
事务很长或很大,一般不会对系统有压力。相应的原则是:在必要时才提交,但是此前不要提
交。事务的大小只应该根据业务逻辑来定。
只要需要,就应该尽可能长时间地保持对数据所加的锁。这些锁是你能利用的工具,而不
是让你退避三舍的东西。锁不是稀有资源。恰恰相反,只要需要,你就应该长期地保持数据上
的锁。锁可能并不稀少,而且它们可以防止其他会话修改信息。
在Oracle 中,行级锁没有相关的开销,根本没有。不论你是有1 个行锁,还是1 000 000
个行锁,专用于锁定这个信息的“资源”数都是一样的。当然,与修改1 行相比,修改1 000 000
行要做的工作肯定多得多,但是对1 000 000 行锁定所需的资源数与对1 行锁定所需的资源数
完全相同,这是一个固定的常量。
不要以为锁升级“对系统更好”(例如,使用表锁而不是行锁)。在Oracle 中,锁升级(lock
escalate)对系统没有任何好处,不会节省任何资源。也许有时会使用表锁,如批处理中,此
时你很清楚会更新整个表,而且不希望其他会话锁定表中的行。但是使用表锁绝对不是为了避
免分配行锁,想以此来方便系统。
可以同时得到并发性和一致性。每次你都能快速而准确地得到数据。数据读取器不会被数
据写入器阻塞。数据写入器也不会被数据读取器阻塞。这是Oracle 与大多数其他关系数据库之
间的根本区别之一。
2.丢失更新
丢失更新(lost update)是一个经典的数据库问题。实际上,所有多用户计算机环境都存在这个问
题。简单地说,出现下面的情况时(按以下所列的顺序),就会发生丢失更新:
(1) 会话Session1 中的一个事务获取(查询)一行数据,放入本地内存,并显示给一个最终用户User1。
(2) 会话Session2 中的另一个事务也获取这一行,但是将数据显示给另一个最终用户User2。
(3) User1 使用应用修改了这一行,让应用更新数据库并提交。会话Session1 的事务现在已经执行。
(4) User2 也修改这一行,让应用更新数据库并提交。会话Session2 的事务现在已经执行。
这个过程称为“丢失更新”,因为第(3)步所做的所有修改都会丢失。例如,请考虑一个员工更新屏幕,
这里允许用户修改地址、工作电话号码等信息。应用本身非常简单:只有一个很小的搜索屏幕要


相关文档:

oracle 表空间操作

oracle表空间操作详解
  1
  2
  3作者:   来源:    更新日期:2006-01-04 
  5
  6 
  7建立表空间
  8
  9CREATE TABLESPACE data01
 10DATAFILE '/ora ......

甲骨文推出“Oracle加快计划”

 二零零九年十月二十日,打从三年前推出Oracle加紧计划以来,甲骨文公司已经增加了七,000多家治理软件中型企业客户,当前中型企业客户总量已经超过25,000家。
透过推出马向中型企业客户的Oracle加快计划新功能,包括新式加快计划解决方案、Oracle企业加速器、财务选件和调度步骤等,甲骨文在不停兑现顺利。
面临中型 ......

学习《Oracle 9i10g编程艺术》的笔记 (四)

 1.数据库独立性
将应用从数据库A 移植到数据库B 时,我时常遇到这种问题:应用在数据库A 上原本无懈可击,到了
数据库B 上却不能工作,或者表现得很离奇。看到这种情况,我们的第一个想法往往是,数据库B 是一个
“不好的”数据库。而真正的原因其实是数据库B 的工作方式完全不同。没有哪个数据库是错的 ......

oracle大数据量导入(sqllaoder)

 今天做了1个数据导入需求,文本记录有12万多条,TXT文件大小6M多,因为以前都是用oracle的text import方式导入,刚试验了一下,不灵验,当导入到2万多条的时候,PLSQL就当掉了,走不动了。
 因为考虑到1次导入,所有决定采用SQLLOADER的方式。 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号