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. [转载] K3 K3c 最简单无损开壳方法
  2. ASM - 条件判断
  3. 成功解决ValueError: Invalid format string
  4. SQL SERVER 通用分页存储过程
  5. ubuntu12.04 安装 coreseek 4.1beta (转)
  6. 关于extern的使用
  7. dell 工作站装linux_个人电脑只装Linux是怎样的体验?
  8. 利用python在word文档中查找关键字(支持多个文档和多个关键字)
  9. airpods安卓延迟怎么解决_穿越火线手游网络延迟怎么解决,开黑最管用的手游加速工具就在这!...
  10. 计算机木材染色 配色技术的应用技术,木材怎么染色?木材染色剂电脑配色方法...
  11. PhotoshopPS软件快捷键教程
  12. 如何利用Photoshop制作电子签名
  13. linux截屏 保存目录,linux设置截屏图片的保存路径
  14. 新浪公司总裁兼首席执行官 曹国伟
  15. linux解决笔记本pwm背光,担心PWM调光屏幕闪瞎眼?联想这些ThinkPad笔记本要注意...
  16. SQLSERVER2005发送邮件
  17. ecshop打开手机端QQ对话窗口
  18. 少有人走的路 - 读书笔记
  19. 大话数据结构二十二:图的存储结构之边集数组
  20. 为什么4个反斜杠(\)输出1个反斜杠(\)?

热门文章

  1. Linux IO模式及select、poll、epoll实现nio详解
  2. react:仿BOSS直聘写的一个移动端招聘APP
  3. java毕业生设计中小学图书馆管理计算机源码+系统+mysql+调试部署+lw
  4. 【SDS1122E+】设备升级教程
  5. c语言学校系统,基于C语言的学校书管理系统.doc
  6. Unity3d 在HDRP项目中更换天空球
  7. 如何创建虚拟机以及安装linux操作系统
  8. 这次不怕撕坏了,区块链电子公告来了
  9. 工业机器人焊接实操工作站
  10. AlexNet网络的搭建以及训练花分类