![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据库理论
文章平均质量分 82
idber
这个作者很懒,什么都没留下…
展开
-
B 树、B- 树、B+ 树和B* 树
B树即二叉搜索树:1. 所有非叶子结点至多拥有两个儿子(Left和Right);2. 所有结点存储一个关键字;3. 非叶子结点的左指针指向小于其关键字的子树,右指针指向大于其关键字的子树;如:B树的搜索,从根结点开始,如果查询的关键字与结点的关键字相等,那么就命中;否则,如果查询关键字比结点关键字小,就进入左儿子;如果比结点关键字大,就进入右儿子;如果左儿子或右儿子转载 2012-10-18 21:40:10 · 6466 阅读 · 0 评论 -
在 DB2 优化器中使用分布统计信息
在 DB2 优化器中使用分布统计信息简介为了执行查询或 DML 语句(INSERT、UPDATE、DELETE),DB2 必须创建一个访问计划(access plan)。访问计划定义按什么顺序访问表,使用哪些索引,以及用何种连接(join)方法来关联数据。好的访问计划对于 SQL 语句的快速执行至关重要。DB2 优化器可以创建访问计划。这是一种基于成本的优化转载 2012-11-17 12:50:49 · 3371 阅读 · 0 评论 -
DB2数据库查询过程(Query Processing)----复合索引的匹配索引扫描(Matching Index Scans with Composite Indexs)
在《DB2数据库查询过程(Query Processing)----简单索引访问(Simple Indexed Access)》一文中已经对索引访问的各种形式作了详细介绍,本文重点讨论匹配索引扫描对于复合索引的种种情况应该如何进行索引的选择。复合索引(Composite Index)索引列(搜索码)由多个表列共同组成的索引称为复合索引,相对的,索引列仅是单个表列的索引称为单列索引。原创 2012-11-17 12:58:39 · 6858 阅读 · 0 评论 -
DB2数据库查询过程(Query Processing)----多索引访问(Multiple Index Access)
引言考虑下面的情况:一张表T,有列C1,C2,C3,C4,C5。其中C1上有索引C1X,C2上有索引C2X,C3,C4,C5上有索引C345X。表中有100000000行数据。查询语句:Select * From T Where C1=20 And C2=5 And C3=11;前面介绍过,对于一张表,只能使用它的一个索引进行索引扫描,上面查询的三个谓词都是可索引谓词,假设这三原创 2012-11-17 15:42:15 · 3950 阅读 · 0 评论 -
DB2数据库查询过程(Query Processing)----简单索引访问(Simple Indexed Access)
索引对于数据库的性能有着举足轻重的作用。上一篇文章已经介绍了没有索引的情况下表扫描访问相关知识,本文讨论有索引的情况下数据库系统如何使用索引进行数据访问,内容会比较复杂,强烈建议参看《深入理解DB2索引(Index)》,理解DB2索引的结构,特别是B+树后再阅读本文,否则看起来可能会比较吃力。由于“基于索引的访问”内容比较庞杂,现在只准备介绍对于一张表使用索引的情况,不考虑多表连接的问题。分三原创 2012-11-13 16:07:43 · 5875 阅读 · 2 评论 -
DB2数据库查询过程(Query Processing)----统计信息与过滤因子(Statistics and Filter Factors)
关于统计信息和过滤因子在《DB2数据库查询过程(Query Processing)----概述》一文中已经作了大致介绍。本文再详细讨论一下。过滤因子(Filter Factor)过滤因子是一个间接参数,表示满足特定条件的行占表中所有行的比例,,记作FF(P),P表示条件谓词。过滤因子的值可以根据系统编目中的统计信息计算得出,它的主要作用是在存在多种数据访问方式的时候提供选择参考。考原创 2012-11-14 14:54:38 · 4176 阅读 · 0 评论 -
深入理解DB2索引(Index)
索引(Index)是数据库管理系统中一个非常重要的数据结构,索引的合理使用能够极大提高数据库系统的性能。那么,什么是索引?索引有时如何提高数据库系统性能的呢?阅读本文时建议参考:《深入理解数据库磁盘存储(Disk Storage)》索引概念以一本书为例,通常一本书开头会有目录,而后才是正文,通过目录中每行左侧的标题和右侧的页码,我们可以快速定位到需要阅读的页面,而无需一页一页翻阅到原创 2012-10-23 17:36:50 · 40390 阅读 · 0 评论 -
DB2数据库查询过程(Query Processing)----表扫描与I/O(Table Scan and I/O)
表扫描开销在《DB2数据库查询过程(Query Processing)----概述》一文中已经介绍过,表扫描是数据访问方式中最简单,最低效的一种。在所有的关系型数据库中都会有这种数据访问方式,不同系统中叫法可能不同(如direct search 、 data scan 、 tables scan),由于存在不同的表共用同一个Extent的情况,有时候人们认为将这种扫描方式称为表空间扫描(T原创 2012-11-11 20:59:19 · 4882 阅读 · 0 评论 -
深入理解数据库磁盘存储(Disk Storage)
数据库管理系统将数据存储在磁盘、磁带以及其他的裸设备上,虽然这些设备的访问速度相比内存慢很多,但其非易失性和大容量的特点使他们成为数据存储的不二之选。本文主要讨论大型数据库产品的磁盘存储内部结构,这对于深入理解数据库各种数据结构具有至关重要的作用。数据库磁盘存储的体系结构以上两图分别展示了存储器分级结构以及磁盘内部物理结构,不是本文重点,不赘述。需要强调的是:一次完整的输入输出原创 2012-10-18 21:21:04 · 39624 阅读 · 7 评论 -
由浅入深理解索引的实现
这篇文章是介绍MySQL数据库中的索引是如何根据需求一步步演变最终成为B+树结构的以及针对B+树索引的查询,插入,删除,更新等操作的处理方法。Oracle和DB2数据库索引的实现基本上也是大同小异的。文章写得很通俗易懂,就转在这了。关于B+树和索引内部结构可以参考:《B 树、B- 树、B+ 树和B* 树》和《深入理解DB2索引(Index)》。00 – 背景知识-转载 2012-10-25 10:33:11 · 13862 阅读 · 1 评论 -
DB2数据库查询过程(Query Processing)----概述
引言我们知道,目前通用的数据库查询语言是SQL语言(Structured Query Language)。SQL语言也是一种编译型语言,需要SQL编译器编译后才能执行,但它与C、C++、Java等语言不同,SQL语言是一种非过程化语言,这意味着使用SQL进行操作的时候,你只需要指定你要达到什么目的,而无需指明要怎样达到目的。比如要查询EMPLOYEE的所有行,使用语句“Select * F原创 2012-11-10 14:26:45 · 8697 阅读 · 1 评论