位图索引

记一次位图索引“BITMAP CONVERSION FROM ROWIDS”引起的问题

独自空忆成欢 提交于 2020-03-11 18:26:00
一般的经验OLTP不建议使用位图索引,虽然位图索引可能会提高查询速度,但是如果修改有索引的数据,那索引指向的所有行都会被锁定,这是由于oracle不能锁定位图索引条目中单独的一行,而是锁定整个位图索引条目。 今天研发告诉我一个系统数据总是有问题,排查到某个查询的时候,我看了下执行计划,竟然发现了bitmap,开始还以为是建了位图索引,后来仔细一看是BITMAP CONVERSION FROM ROWIDS,才知道是在一个选择性非常差的列上建了普通索引,导致oracle优化器自动将索引转换成位图索引了。那个列上的索引其实没啥用处,仅仅是由于工程师觉得要用到这个列。如果选择性差的列需要建索引,建议 建联合索引 也能避免这个问题。 来源: CSDN 作者: 肖雪松 链接: https://blog.csdn.net/xiaofeng_rui/article/details/104796398

常见图片格式了解

依然范特西╮ 提交于 2019-12-31 04:48:37
前言 作为一个客户端开发,对于图片格式一直没有一个清晰的了解,这里简单的罗列出各种图片格式的区别,文章中有部分是他人的引用,会在底部放上链接,望轻喷。 概念了解 有损压缩 & 无损压缩 有损压缩(lossy compression) : 有损压缩算法是一种数据压缩方法,经过此方法压缩、解压的数据会 与原始数据不同但是非常接近。它是与无损数据压缩相对的压缩方法。有损数据压缩又称破坏性资料压缩、有损压缩、有损压缩、不可逆压缩 。其原理是借由将次要的信息数据舍弃,牺牲一些质量来减少数据量、提高压缩比。这种方法经常用于压缩多媒体数据(音频、视频、图片)。根据各种格式设计的不同,有损数据压缩都会有代间损失——每次压缩与解压文件都会带来渐进的质量下降。 无损压缩(Lossless Compression) : 指数据经过压缩后,信息不受损失,还能完全恢复到压缩前的原样 。无损压缩通常用于严格要求“经过压缩、解压缩的数据必须与原始数据一致”的场合。典型的例子包括文字文件、程序可执行文件、程序源代码。有些图片文件格式,例如PNG和GIF,使用的是无损压缩。 索引色 & 直接色 索引色 : 索引颜色是一种以有限的方式管理数字图像颜色的技术,以节省计算机内存和文件存储,同时加速显示刷新和文件传输。即 用一个数字来代表(索引)一种颜色,在存储图片的时候,存储一个数字的组合,同时存储数字到图片颜色的映射

仅此一次对BMP文件做详细分析的机会,想了解的朋友千万不能错过

倾然丶 夕夏残阳落幕 提交于 2019-12-11 17:43:04
什么是BMP? BMP是一种与硬件设备无关的图像文件格式,使用非常广。它采用位映射存储格式,除了图像深度可选以外,不采用其他任何压缩,因此,BblP文件所占用的空间很大。BMP文件的图像深度可选lbit、4bit、8bit及24bit。BMP文件存储数据时,图像的扫描方式是按从左到右、从下到上的顺序。 由于BMP文件格式是Windows环境中交换与图有关的数据的一种标准,因此在Windows环境中运行的图形图像软件都支持BMP图像格式。 典型的BMP图像文件由三部分组成:位图文件头数据结构,它包含BMP图像文件的类型、显示内容等信息;位图信息数据结构,它包含有BMP图像的宽、高、压缩方法,以及定义颜色等信息 具体数据举例: 如某BMP文件开头: BMP文件可分为四个部分:位图文件头、位图信息头、彩色板、图像数据阵列,在上图中已用*分隔。 一、图像文件头 1)1:图像文件头。424Dh=”BM”,表示是Windows支持的BMP格式。 2)2-3:整个文件大小。4690 0000,为00009046h=36934。 3)4-5:保留,必须设置为0。 4)6-7:从文件开始到位图数据之间的偏移量。4600 0000,为00000046h=70,上面的文件头就是35字=70字节。 5)8-9:位图图信息头长度。 6)10-11:位图宽度,以像素为单位。8000 0000

[转帖]B树索引、位图索引和散列索引

送分小仙女□ 提交于 2019-12-04 10:10:46
B树索引、位图索引和散列索引 https://blog.csdn.net/huashanlunjian/article/details/84460436 索引在数据结构上可以分为三种B树索引、位图索引和散列索引 B树索引 结构: 特点: 1.索引不存储null值。 更准确的说,单列索引不存储null值,复合索引不存储全为null的值 索引不能存储Null,所以对这列采用is null条件时,因为索引上根本没Null值,不能利用到索引,只 能全表扫描。 为什么索引列不能存Null值呢?将索引列值进行建树,其中必然涉及到诸多的比较操作。Null值 的特殊性就在于参与的运算大多取值为null。这样的话,null值实际上是不能参与进建索引的 过程。也就是说,null值不会像其他取值一样出现在索引树的叶子节点上。 B树索引测试1:NULL是否存在索引上。 create table btree_test(id number,code varchar2(10)); create index idx_btree_test_id on btree_test(id,code); select object_id from user_objects where object_name='IDX_BTREE_TEST_ID'; alter session set events 'immediate

[转帖]B树索引和位图索引的结构介绍

丶灬走出姿态 提交于 2019-12-04 10:10:46
B树索引和位图索引的结构介绍 http://blog.itpub.net/12679300/viewspace-1174236/ 一 前言:? ROWID :包含键值的行的行ID,( 查找块的最快方法,类似于门牌号 )? 因为所有行属于同一个段,所以要使用受限的ROWID 指向表行 索引是数据库为了提高查询效率提供的一种冗余结构,保守计算数据库50%以上的调优可以通过调整索引来进行优化; 引用国内一位资深的ORACLE专家的话:"我其实只懂点(挨踢)知识,IT里面其实只懂点甲骨文,甲骨文里面其实只懂点数据库,数据库里面其实只懂点SQL,SQL里面其实只懂点索引"——"你才是真正的专家!" 根据个人的浅薄的经验,作为DBA的日常运维会越来越少,从数据库的每个版本的更新来看,数据库系统已经趋向越来越智能话,DBA能干的活也越来越少了,如果一个DBA只能做做日常的表空间扩容、数据库的备份恢复、启停、系统的更新,那么将是很危险的一件事。而调优自古以来就是一门很高深的学问,如果能把这个做好了,那么DBA能够创造的价值和在公司的作用中,将越来越显著; 说了这么多,应该引入主题了,如果要做好调优,先从索引入手吧。 后续的章节中将陆续更新索引的一些知识,第一章从索引的类别开始吧; 二 索引在结构上的类别可划分如下:B树索引、位图索引、散列索引、反转索引等 三 索引的介绍: 1、B树索引(BTREE

ORACLE表、索引和分区

|▌冷眼眸甩不掉的悲伤 提交于 2019-11-30 13:44:14
ORACLE 表、索引和分区 一、数据库表 每种类型的表都有不同的特性,分别应用与不同的领域 • 堆组织表 • 聚簇表 ( 共三种 ) • 索引组织表 • 嵌套表 • 临时表 • 外部表和对象表 1. 行迁移 • 建表过程中可以指定以下两个参数: • PCTFREE :自由空间,默认值 10 • PCTUSED (只适用于 MSSM ):默认值 40 • 设置这两个参数很重要: • 一方面避免迁移过多的行,影响性能 • 一方面避免浪费太多的空间 • 当自由空间存不下更新后的某一行时,这一行将会发生行迁移,在两个块上存储这一行数据,如下图: 2. 堆组织表 • 基本上我们使用的表都是堆组织表( heap organized table ),堆是无序的数据结构,数据的存取都是随机的,想要排序必须使用 order by 子句 • 对于 ASSM 有三个重要的选项: • PCTFREE • INITRANS :默认值 2 ,高并发会设置更大一些 • COMPRESS/NOCOMPRESS :启用 / 禁用压缩 3. 索引组织表( IOT ) • 以索引结构存储的表 • 使用场景: • 信息检索 • 空间数据 • OLAP 应用 • 创建,使用 organization index 子句: create table tbl( name varchar2(20), age int )

演示DML操作导致位图索引锁定的简单示例

♀尐吖头ヾ 提交于 2019-11-26 20:37:45
一、实验说明: 操作系统:rhel 5.4 x32 数据库:Oracle 11g R2 二、实验步骤: 2.1、在没有位图索引进行DML操作的例子(该实验建立b-tree索引做对比): 1 SQL > select distinct sid from v$mystat; 2 3 SID 4 -- -------- 5 1 6 7 SQL > create table jack_test (id int ,name varchar2 ( 10 )); 8 9 Table created. 10 11 SQL > insert into jack_test values ( 1 , ' aa ' ); 12 13 1 row created. 14 15 SQL > insert into jack_test values ( 2 , ' bb ' ); 16 17 1 row created. 18 19 SQL > insert into jack_test values ( 3 , ' cc ' ); 20 21 1 row created. 22 23 SQL > insert into jack_test values ( 1 , ' dd ' ); 24 25 1 row created. 26 27 SQL > commit ; 28 29 Commit complete