欢迎来到天天文库
浏览记录
ID:5280835
大小:110.37 KB
页数:3页
时间:2017-12-07
《oracle编程高手箴言》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、Oracle编程高手箴言,位图索引的story我想熟悉Oracle数据库的人,一般对这位Oracle高手中的高手编著的《ExpertOracleDatabaseArchitecture-9iand10gprogrammingTechniquesandSolutions》,有所了解吧!同时我也建议大家有时间的话,翻阅一下这本书,会对你在Oracle数据库的学习有很大的帮助。如果您有时间和兴趣,强烈建议您阅读这本书。这本书最大的特点是语言生动活泼,说理清楚,几乎每讲解一个原理,作者都给出了具体实例,让人读起来毫不气闷。另外,Thomas谦逊的态度让我非常佩服,
2、Thomas在Oracle数据库方面工作了16年,并且参与了早期Oracle版本的开发,但他仍然谦虚地说,他每天都能从Oracle文档里学到新的东西。下面从这本书里摘录了一些精彩片段,供您欣赏,虽然不免有断章取义之嫌。位图索引(BitmapIndex)的故事一日,一群Java开发者找到Tom先生,说他们新开发的系统已经上线,但性能及其低下,他们问Tom先生能不能替他们看看问题到底出在什么地方。他们告诉Tom,他们的系统采用JSP+EJB+Oracle编程的典型三层架构,其中EJB中的SQL是由第三方工具产生的。Tom同志一听到EJB,就知道这个系统是不能采
3、用SQL代码跟踪的方法来进行性能调优了。于是,Tom同志告诉这些心急火燎的Java开发者,你们系统的问题肯定在浏览器到数据库之间,但具体问题出在什么地方,我需要看看你们的数据库。于是,Tom同志远程连接到他们的测试数据库(注意不是生产数据库),查看了几个动态性能视图(V$LOCK和V$SQL),最后终于发现了问题的所在。Tom同志发现他们的数据库中有一个位图索引(BitmapIndex)最为可疑,这个索引是建立在一个PROCESS_FLAG的字段上,PROCESS_FLAG字段表示该记录是否被处理了,可能值只有两个,一个是未处理(N),一个是已经处理(Y)
4、。当记录初次插入数据库时,该字段的值为N,但其它进程读取并处理那些未处理的记录(值为N的记录)后,这个字段的值就更新为Y。Tom就问这些Java开发者,你们为什么要在这个PROCESS_FLAG字段上建立位图索引呢?其中有一个开发者振振有词的说,这是为了提高查找速度,一旦建立了位图索引,我们的程序就能快速找到那些数值为N的记录,然后处理。随后,他又拿出一本大部头的Oracle数据库参考手册,对Tom同志说,这书上都是这么说的,对那些数值非常少的字段,比如,我们的
此文档下载收益归作者所有