Oracle编程高手箴言:位图索引(Bitmap Index)的故事

您如果熟悉Oracle数据库,我想您对Thomas Kyte的大名一定不会陌生。Tomas主持的asktom.oracle.com网站享誉Oracle界数十年,绝非幸致。最近在图书馆借到这位Oracle绝顶高手编著的《Expert Oracle Database Architecture-9i and 10g programming Techniques and Solutions》,翻阅之下,果然盛名无虚,虽然说不上字字珠玑,但作者对Oracle架构的理解和实践确实已达到出神入化的境界。如果您有时间和兴趣,强烈建议您阅读这本书。这本书最大的特点是语言生动活泼,说理清楚,几乎每讲解一个原理,作者都给出了具体实例,让人读起来毫不气闷。

另外,Thomas谦逊的态度让我非常佩服,Thomas在Oracle数据库方面工作了16年,并且参与了早期Oracle版本的开发,但他仍然谦虚地说,他每天都能从Oracle文档里学到新的东西。

下面从这本书里摘录了一些精彩片段,供您欣赏,虽然不免有断章取义之嫌。

位图索引(Bitmap Index)的故事

一日,一群Java开发者找到Tom先生,说他们新开发的系统已经上线,但性能及其低下,他们问Tom先生能不能替他们看看问题到底出在什么地方。他们告诉Tom,他们的系统采用JSP+EJB+Oracle的典型三层架构,其中EJB中的SQL是由第三方工具产生的。Tom同志一听到EJB,就知道这个系统是不能采用SQL代码跟踪的方法来进行性能调优了。于是,Tom同志告诉这些心急火燎的Java开发者,你们系统的问题肯定在浏览器到数据库之间,但具体问题出在什么地方,我需要看看你们的数据库。

于是,Tom同志远程连接到他们的测试数据库(注意不是生产数据库),查看了几个动态性能视图(V$LOCK和V$SQL),最后终于发现了问题的所在。Tom同志发现他们的数据库中有一个位图索引(Bitmap Index)最为可疑,这个索引是建立在一个PROCESS_FLAG的字段上。PROCESS_FLAG字段表示该记录是否被处理了,可能值只有两个,一个是未处理(N),一个是已经处理(Y)。当记录初次插入数据库时,该字段的值为N,但其它进程读取并处理那些未处理的记录(值为N的记录)后,这个字段的值就更新为Y。

Tom就问这些Java开发者,你们为什么要在这个PROCESS_FLAG字段上建立位图索引呢?

其中有一个开发者振振有词的说,这是为了提高查找速度,一旦建立了位图索引,我们的程序就能快速找到那些数值为N的记录,然后处理。随后,他又拿出一本大部头的Oracle数据库参考手册,对Tom同志说,这书上都是这么说的,对那些数值非常少的字段,比如,我们的PROCESS_FLAG字段只有两个值,就应该建立位图索引

相关文档:

如果temp_t1不存在,

oracle:

create table temp_t1

as

select * from t1

sql server:

select * into temp_t1 from t1

如果temp_t1存在,

oracle:

insert into table temp_t1

select * from t1

sql server:

insert into table temp_t1

select * from t1 ......

选择10g是因为对网格技术比较好奇,好像还没得到广泛应用,也就无所谓与前面版本有很大区别了。

在迅雷上下了个软件,运行sqlplusw,然后照着书,狂敲了一翻,有在网上下了个视频教程(MLDN魔乐科技_Oracle课堂),讲得挺好的,就是时间长了点,不如看书来得快。反正现在只是想熟悉一下基本语句。

看了两天书了。了解了一 ......

列出配置的所有数据库

[root@node1 ~]# srvctl config database

NOVADB

所有实例和服务的状态

[root@node1 ~]# srvctl status database -d NOVADB

Instance NOVADB1 is running on node node1

Instance NOVADB2 is running on node node2

单个实例的状态

[root@node1 ~]# srvctl status instance -d NOVADB -i NOVA ......

Oracle数据库字符集问题解析(本文系整理他人帖子形成)

经常看到一些朋友问ORACLE字符集方面的问题,我想以迭代的方式来介绍一下。

第一次迭代:掌握字符集方面的基本概念

有些朋友可能会认为这是多此一举,但实际上正是由于对相关基本概念把握不清,才导致了诸多问题和疑问。

首先是字符集的概念。

我们知道, ......

刚才在逛一个网友的博客的时候发现了一篇关于REDO、UNDO、COMMIT、ROLLBAKC的文章。虽然内容可能不是特别全面,可是还是总结的挺好的,转过来方便将来学习。

==================================================================================

redo--> undo-->datafile

insert一条记录时,表跟undo的信息都会 ......

Oracle创建索引bitmap,Oracle编程高手箴言:位图索引(Bitmap Index)的故事相关推荐

  1. [《编程高手箴言》读后感]

    [<编程高手箴言>读后感] 毕业也有几年了,也看了和学了不少东西,<编程高手箴言>读后感.有时也想写点什么,但总是觉得头绪很多,一直没有动笔.最近翻了翻梁先生的<编程高手 ...

  2. oracle 创建日志文件,oracle创建日志文件

    一团网资讯 一团资讯 > oracle > oracle创建日志文件 oracle创建日志文件 2018-04-14 15:39:48     发布者:来源网络 创建日志文件的语法如下: ...

  3. 029_《编程高手箴言》

    <编程高手箴言> Delphi 教程 系列书籍 (029) <编程高手箴言> 网友(邦)整理 EMail: shuaihj@163.com 下载地址: Part1 Part2 ...

  4. 梁肇新 编程高手箴言 书评

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 引用地址 ...

  5. Oracle 之索引,妙不可言(四)——位图索引

    位图索引​​​ CREATE BITMAP INDEX index_name ON table_name(column_list); 卓越性能展现 统计条数奋勇夺冠 count() 性能 在非空列有B ...

  6. oracle创建数据库总结,oracle创建数据库和用户方法总结

    以前开发的时候用得比较多的是mysql和sql server,oracle用的比较少,用起来比较生疏,mysql和sql server用起来比较类似,就oracle的使用方式和他们不同,oracle在 ...

  7. centos oracle创建库,CentOS Oracle安装必要的软件创建数据库

    CentOS Oracle安装系统的特性,既可作为高校计算机专业CentOS Oracle安装学习,也可以作为CentOS系统开源爱好者.CentOS系统用户 CentOS Oracle安装系统的特性 ...

  8. oracle 创建备份目录,Oracle rman创建和自动化备份

    数据库版本:Oracle 10.2.0.5  x86_64 操作系统版本:Oracle Linux 5.7  x86_64 注:#表示为root用户下输入该命令, $表示为oracle用户下输入该命令 ...

  9. oracle 创建nchar类型,Oracle NChar类型

    本篇文章帮大家学习Oracle NChar类型,包含了Oracle NChar类型使用方法.操作技巧.实例演示和注意事项,有一定的学习价值,大家可以用来参考. 在本教程中,您将了解Oracle NCH ...

最新文章

  1. Google Chrome 72 丢弃HPKP,不再支持TLS1.0和TLS1.1!
  2. LeetCode 121:买卖股票的最佳时机 思考分析
  3. java中同步嵌套引起的死锁事例代码
  4. Lily have a dog
  5. DEDE常见的错误(转)
  6. [原译]实现IEnumerable接口理解yield关键字
  7. 游戏帧数对比测试监控软件,8款游戏帧数对比实测 5800X多数超越11900K
  8. unity5.x游戏开发指南示例下载
  9. Android动态生成答题卡,好分数网怎么制作答题卡
  10. 服务器节点数及系统数量,计算节点服务器数量16.docx
  11. 产品读书《演讲的力量》
  12. 神奇的e——Python编程算e
  13. 瞳孔中的视觉刺激提取大脑中ERD/ERS
  14. word转pdf的几种方法
  15. 7、purge_haplogs 基因组去冗余
  16. CAD制图神器-CAD专用键盘
  17. 系统引导盘制作与Windows系统安装
  18. 领先大厂股价大跌,半导体行业形势不妙
  19. 语音特征提取 matlab,基于matlab的语音信号特征提取方法研究
  20. 黑马程序员—对话框Dialog小例子

热门文章

  1. 蓝桥杯单片机省赛第五届简易温度采集与控制装置(第六届模拟赛)
  2. 嵌入式系统中的EEPROM和FRAM
  3. Linux - 第8节 - 进程信号
  4. Python语言实现信用评分卡建模分析
  5. CST 2018详细安装教程
  6. mac连接网线遇到的坑(最后还是成功了)
  7. 运维发布版本步骤_版本发布流程规范
  8. 基于JAVA的宠物销售网站设计与实现
  9. Cesium快速上手10-Viewer/Entities组合
  10. 游戏配音需要做哪些工作?