`
letitbe
  • 浏览: 239368 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

bitmap位图索引

阅读更多
1,Oracle数据库的位图索引(Bitmap Index)确实是针对那些数值稀疏(low-cardinality,低基数)的字段,但是还应记住的一点是,它是针对那些值不经常改变的字段的。在实际应用中,如果某个字段的值需要频繁更新,那么就不适合在它上面创建位图索引。在位图索引中,如果你更新或插入其中一条数值为N的记录,那么相应表中数值为N的记录(可能成百上千条)全部被Oracle锁定,这就意味着其它用户不能同时更新这些数值为N的记录,其它用户必须要等第一个用户提交后,才能获得锁,更新或插入数据。
http://blog.ccidnet.com/blog-htm-do-showone-uid-4092-itemid-291252-type-blog.html

在我们的系统里,不仅不是在一个column上创建bitmap index,而是在多个column上联合起来创建bitmap index,从而可以想见,几乎等同于每个bitmap index entry对应的只有极少数的rowid,即只对应极少数的row,而且每个bitmap都要创建一个或多个bitmap segment,相应的,DML操作可能需要频繁的lock很多rows,影响并发性(影响也需要修改同样bitmap entry的用户),同时,由于pctfree等存储参数影响index空间的分配及管理,和由于数据操作导致物理地址更改从而修改index entry,扩展,链接bitmap index entry,频繁修改导致的磁盘碎片,block分配链接等。这是空间增长和系统性能下降的部分原因。

bitmap主要用于数据仓库,table有大量的数据并且列上基数很小(一般是column的distinct values占rows总数的1%以下,或重复出现超过100次以上,Oracle建议此时才可以把该column列为创建bitmap index的侯选字段),同时,还由于数据仓库上并行访问的事务非常少。bitmap index并不适用于OLTP业务,OLTP一般都是有大量的并发事务来修改同样的数据。bitmap主要就是设计来为数据仓库服务的,即应用于低基数超 级大数据量查询服务,而且只用在where clause里包含and ,or,not,或equality queries(比如在and和or条件的查询,在把bit转换成rowid以前,就能很快的得到相应的boolean操作)。
http://bigboar.itpub.net/post/8411/225321

2,位图索引占用的空间很大.一个466万行记录的只有两个字段的表,占用空间约 88M,在该两个字段上建有一个位图索引,这个位图索引占用空间约168M
http://bigboar.itpub.net/post/8411/225321

查看各个表(包括索引)占用空间大小的sql:
Select Segment_Name,Sum(bytes)/1024/1024 From User_Extents Group By Segment_Name

http://space.itpub.net/193161/viewspace-50292
http://www.ixdba.com/html/y2007/m05/102-bitmap-index-deadlock.html

3,Oracle强烈建立,任何一个应用程序的库表至少需要创建两个表空间,其中之一用于存储表数据,而另一个用于存储表索引数据。因为如果将表数据和索引数 据放在一起,表数据的I/O操作和索引的I/O操作将产生影响系统性能的I/O竞争,降低系统的响应效率。将表数据和索引数据存放在不同的表空间中(如一 个为APP_DATA,另一个为APP_IDX),并在物理层面将这两个表空间的数据文件放在不同的物理磁盘上,就可以避免这种竞争了。
拥有独立的表空间,就意味着可以独立地为表数据和索引数据提供独立的物理存储参数,而不会发生相互影响,毕竟表数据和索引数据拥有不同的特性,而这些特性又直接影响了物理存储参数的设定。
此外,表数据和索引数据独立存储,还会带来数据管理和维护上的方面。如你在迁移一个业务数据库时,为了降低数据大小,可以只迁出表数据的表空间,在目标数据库中通过重建索引的方式就可以生成索引数据了。
http://blog.ccidnet.com/blog-htm-do-showone-uid-19759-itemid-341747-type-blog.html

4,B-Tree索引即normal普通索引
分享到:
评论

相关推荐

    位图索引简单实验

    ### 位图索引简单实验知识点详解 #### 一、实验背景与目的 在数据库管理领域,索引是提高查询效率的重要工具之一。常见的索引类型包括B*树索引和位图索引等。本实验旨在通过创建并比较B*树索引和位图索引,探究...

    数据库索引那些事(数据库索引原理)

    数据库索引的实现方式有多种,常见的有 B-Tree 索引、Hash 索引、fulltext 全文索引、bitmap 位图索引等。其中,B-Tree 索引是最常用的索引类型,例如 MsSql 使用的是 B+Tree 索引,Oracle 使用的是 B-Tree 索引。...

    bitmap_indexes bitmap索引的相关知识整理

    ### Bitmap Indexes (位图索引)在Oracle数据库中的应用 #### 1. 概念与背景 在Oracle数据库优化中,索引的管理和使用是非常关键的一环。尤其是在处理大量数据时,合理的索引设计可以极大地提高查询效率,降低系统...

    位图索引与 B-tree 索引:选择与时间

    **位图索引**(Bitmap Index)是一种特殊类型的索引,它使用位图来表示数据。每个位对应数据库表中的一个特定值,如果某个记录包含这个值,那么相应的位就被设置为1,否则为0。例如,如果表中有100万行,有三个不同...

    oracle位图索引

    oracle位图索引,讲解oracle的bitmap索引。

    CcoWzh#Interview-Of-Programmer#MySQL索引原理1

    MySQL索引原理查找算法:二叉查找树BitMap位图索引分类主键索引唯一索引普通索引全文索引索引原理解析B+树聚集索引和非聚集索引建立索引创建表时指定组合索引

    c# 实现位图算法(BitMap)

    C# 实现位图算法(BitMap) 位图算法(BitMap)是一种高效的数据结构,主要用于快速查询和存储大规模数据。下面将详细介绍 C# 中如何实现位图算法(BitMap)。 什么是 BitMap BitMap 的基本思想就是用一个 bit 位...

    bitmap_in_sql.zip_位图 数据库

    位图索引是一种在数据库中存储和检索大数据量、低基数(low cardinality)列的高效方式。在SQL Server中,位图索引主要用于优化查询性能,尤其在处理布尔值或具有有限数量不同值的列时,如性别、是否启用等。本教程...

    Better bitmap performance with Roaring bitmaps

    但是,位图索引也可以占用大量内存空间,于是压缩位图索引是非常必要的。Oracle公司率先使用RLE对位图索引进行压缩,然而本文提出了Roaring压缩位图格式,使用打包数组进行压缩而不是RLE。 2. Roaring位图格式 ...

    大数据位图索引压缩算法研究

    在ITAS的三项关键技术中,我们重点研究位图索引压缩算法,并在本文中进行了详细的调查。 当前最新的位图索引编码方案包括:BBC,WAH,PLWAH,EWAH,PWAH,CONCISE,COMPAX,VLC,DF-WAH和VAL-WAH。 基于分段,分块...

    Encoded Bitmap Indexing for Data Warehouses

    在这样的背景下,“Encoded Bitmap Indexing for Data Warehouses”这篇论文提出了一种创新的索引技术——编码位图索引(Encoded Bitmap Indexing),旨在解决数据仓库领域中的高基数属性查询优化问题。 位图索引...

    B-tree bitmap index

    ### B-树索引与位图索引的深入解析 #### B-树索引概述 B-树索引是Oracle数据库中最常用的索引类型之一,它利用B-树的数据结构来组织索引项,以便快速查找数据。B-树是一种自平衡的树形数据结构,每个节点最多可以...

    BitmapIndexInternal

    BitmapIndexInternal是一个深入探讨位图索引内部结构的主题。位图索引是Oracle数据库系统中的一种特殊索引类型,自Oracle 7.3版本引入,主要用于处理低基数(即具有少量不同值)的列,以及在数据修改量小或几乎没有...

    oracle和sql server区别

    Oracle 的索引包括:B+树索引、Bitmap 位图索引、函数索引、反序索引、主键索引、散列索引、本地索引。 数据类型 -------- Oracle 的数据类型比较复杂,有基本数据类型、衍生型、列对象型、表对象型、结构体型;...

    Bitmap Fonts位图字体的添加.doc

    Bitmap Fonts位图字体是计算机图形学中用于在OpenGL环境下绘制文本的一种方法。它们不是系统默认的TrueType或OpenType字体,而是将每个字符作为一个位图图像处理,通过OpenGL的显示列表来快速显示。位图字体通常用于...

    bitmap 索引和 B-tree 索引在使用中如何选择

    Bitmap 索引是一种特殊的索引结构,它使用位图来表示每个索引值的出现情况。在位图索引中,每个位对应数据库表中的一行,如果某行具有特定的索引值,那么对应的位就会被设置为 1。当查询涉及多个条件时,Bitmap 索引...

    BtreeVsBitMapIndex:Btree 与 BitMap 索引的比较

    本文将深入探讨两种常见的索引结构:B树(Btree)和位图索引(Bitmap Index),并对比它们的特性和适用场景。 首先,我们来了解B树。B树是一种自平衡的多路搜索树,适用于大量数据的存储系统。它的每个节点可以有多...

    bitmap join indexes

    位图索引本身是一种特殊类型的索引,它将每个值编码为位图,从而节省空间并允许快速的多列组合查询。 在传统的位图索引中,当执行涉及多个维度表和事实表的查询时,Oracle会首先通过位图星形转换来处理。这个过程...

Global site tag (gtag.js) - Google Analytics