美文网首页数据库知识点程序员
《数据库系统概念》16-位图索引和查询处理

《数据库系统概念》16-位图索引和查询处理

作者: zhixin9001 | 来源:发表于2018-01-09 22:08 被阅读19次

一、位图索引

位图索引(bitmap indices)是一种专为多个键的简单查询而设计的。应用位图索引的前提是记录必须被按顺序编号,一般从0开始。给出编号n,必须能够很容易的找到对应的记录,如果记录被存放在连续的块,可以将编号n转换成块编号+块内偏移的表示以快速定位记录位置。

位图索引的结构

位图索引用一个位来对应一条记录,这便是记录需要被编号的原因。instructor_info表如上图,性别的值有男、女两种,收入等级则划分为5级,既有5种值。在给性别属性建立位图索引时,就会分别为male和female建立,对于male位图来说,如果一条记录的性别为male,则位图上对应的位会置1,female、收入等级位图也采用相同的做法。

位图索引的优势体现在根据多个键的查询的时候,比如查询where gender=’f’ and income_level=’L2’,只需将f的bitmap和L2的bitmap取交集即可。

此外,在进行数据分析时经常需要统计符合某些条件的记录的数量,使用bitmap也可以很方便地实现,只需统计交集中值为1的位的数目。

删除记录的时候会使数据序列产生间隙,但逐个移动数据消除间隙开销很大,所以引入一个新的存在位图(existence bitmap),在间隙对应的位置1。新增的数据将被追加到尾部,这样不会影响已有记录的顺序。

二、查询处理

在从数据库提取数据的过程中,查询处理要做的操作有:语法分析与翻译、优化、评估与执行。

查询代价的度量

使用传送磁盘块数(number of block transfers)和搜索磁盘次数(number of disk seeks)来衡量查询的代价。假设磁盘子系统传输一个块的数据需要t

T秒,搜索数据需要ts秒,则传送b个块并进行S次磁盘搜索的操作将消耗b*tT+s*ts秒。现在磁盘的典型数值为tT =0.1毫秒,ts=4毫秒,假定磁盘块的大小是4KB,传输率为40MB/秒。

通过将读操作与写操作区分开可以做出更精细地估算,写操作花费的时间约为读操作的两倍,因为写完数据后,磁盘系统会再次读取该扇区以验证写入是否成功。

学习资料:Database System Concepts, by Abraham Silberschatz, Henry F.Korth, S.Sudarshan

相关文章

  • 《数据库系统概念》16-位图索引和查询处理

    一、位图索引 位图索引(bitmap indices)是一种专为多个键的简单查询而设计的。应用位图索引的前提是记录...

  • Mysql | 索引 (一)

    今天我们来聊聊索引,索引是数据库系统里面最重要的概念之一。索引的出现是为了提高数据查询的效率。实现索引的方式有很多...

  • 索引及分区表5

    一、索引 索引的目的: 索引的类型: 1、Btree索引: 2、位图索引: 3、全文索引:就是模糊查询,解决模糊查...

  • 索引

    索引是数据库系统里面最重要的概念之一,它的出现就是为了提高数据查询的效率。 索引的常见模型 索引的出现是为了提高查...

  • mysql 建立索引的原则

    索引查询是数据库中重要的记录查询方法,要不要进入索引以及在那些字段上建立索引都要和实际数据库系统的查询要求结合来考...

  • 数据库查询优化入门: 代数与物理优化基础

    一. 关系数据库系统的查询处理过程 要做优化, 首先理解查询处理过程.查询处理: 把用户提交给RDBMS的查询语句...

  • ES操作

    查询有哪些索引 创建索引 关闭和打开索引在处理elasticsearch的时候,通常需要不断地调整索引的配置,以期...

  • 第二章 定义和构建索引(三)

    第二章 定义和构建索引(三) 位图索引 位图索引是一种特殊类型的索引,它使用一系列位串来表示与给定索引数据值相对应...

  • Mysql 什么时候需要创建索引

    虽然索引可以加快查询速度,提高 MySQL 的处理性能,但是过多地使用索引也会造成以下弊端: 创建索引和维护索引要...

  • 《数据库系统概念》中的数据查询

    1. 数据库系统的功能部件大致可分为存储管理器、查询处理器、事物管理部件。 查询处理组件包括DDL解释器:解释DD...

网友评论

    本文标题:《数据库系统概念》16-位图索引和查询处理

    本文链接:https://www.haomeiwen.com/subject/uotnnxtx.html