数据库系统概论 学习笔记(三)第五部分
2011-04-03 10:19
393 查看
第四章关系系统及其查询优化 |
摘要: 这一章主要讲述两个内容,一是关系系统(关系数据库系统),二是关系系统的查询优化。 关键词:关系系统、查询、优化 4.1关系系统 4.1.1关系系统的定义 当且仅当一个系统:(1)支持关系数据库(关系数据库结构);(2)支持选择、投影和(自然)连接运算,对这些运算不必要求定义任何物理存取路径。 4.1.2关系系统的分类 1、表式系统(不能算是关系系统) 2、(最小)关系系统,如FoxBase、FoxPro等 3、关系完备的系统,20世纪90年代初的多种关系数据库管理系统都属于这一类 4、全关系系统 4.1.3全关系系统的十二条基本准则 准则0:一个关系型的DBMS必须能完全通过它的关系能力来管理数据库。这是基础。 准则1:信息准则。关系型DBMS的所有信息都应在逻辑一级上用一种方法即表中的值显式地表示。 准则2:保证访问准则。依靠表名、主码和列名的组合,保证能以逻辑方式访问关系数据库中的每个数据项(分量值)。 准则3:空值的系统化处理。全关系型的DBMS应支持空值的概念,并用系统化的方式处理空值。 准则4:基于关系模型的动态的联机数据字典。数据库的描述在在逻辑级上应该和普通的数据采用同样的表示方式,使得授权用户可以使用查询一般数据所用的关系语言来查询数据库的描述信息。 准则5:统一的数据子语言准则。 准则6:视图更新准则。所有理论上可更新的视图也应该允许由系统更新。 准则7:高级的插入、修改和删除操作。 准则8:数据物理独立性。无论数据库的数据在存储表示或存取方法上作任何变化,应用程序和终端活动都保持逻辑上的不变性。 准则9:数据逻辑独立性。当对基本关系进行理论上信息不受损害的任何改变时,应用程序和终端活动都保持逻辑上的不变性。 准则10:数据完整性的独立性。关系数据库的完整性约束条件必须是用数据库语言定义并存储在数据字典中的,而不是在应用程序中加以定义的。 准则11:分布独立性。 准则12:无破坏准则。 4.2关系数据库系统的查询优化 注意:这里所讲的查询优化是指RDBMS自身的查询优化技术,而不是我们平常写SQL语句时的查询优化。 关系数据库查询优化的总目标是:选择有效的策略,求得给定关系表达式的值。 一、查询优化的一般步骤: 1、将查询转换成某种内部表示,通常是语法树。 2、根据一定的等价变换规则把语法树转换成标准(优化)形式。 3、选择低层的操作算法。对于语法树中的每一个操作需要根据存取路径、数据的存储分布、存储数据的聚簇等信息来选择具体的执行算法。 4、生成查询计划。 集中式数据库中查询的执行开销主要包括:总代价=I/O代价+CPU代价 多用户数据库的查询的执行开销主要包括:总代价=I/O代价+CPU代价+内存代价 4.2.3查询优化的一般准则 1、选择运算应尽可能先做。 2、在执行连接前对关系适当地预处理。分为两种:在连接属性上建立索引和对关系排序,然后执行连接。 3、把投影运算和选择运算同时进行。 4、把投影同其前或其后的双目运算结合起来。 5、把某些选择同在它前面要执行的笛卡尔积结合起来成为一个连接运算。 6、找出公共子表达式。 4.2.4关系代数等价变换原则 1、定义:所谓关系代数表达式的等价是指用相同的关系代替两个表达式中相应的关系所得到的结果是相同的。 2、常用的等价变换规则: (1)连接、笛卡乐积交换律 (2)连接、笛卡乐积结合律 (3)投影的串连定律 (4)选择的串连定律 (5)选择与投影的交换律 (6)选择与笛卡尔积的交换律 (7)选择与并的交换 (8)选择与差运算的交换 (9)投影与笛卡尔积的交换 (10)投影与并的交换 4.2.5关系代数表达式的优化算法 (略) 4.2.6优化的一般步骤 (1)把查询转换成某种内部表示 (2)把语法树转换成标准(优化)形式 (3)选择低层的存取路径 (4)生成查询计划,选择代价最小的 小结: 查询处理是数据库管理系统的核心(注意是数据库管理系统而不是我们平时写的那些查询语句哟),而查询优化技术又是查询处理的关键技术。 |
相关文章推荐
- 数据库系统概论 学习笔记(三)第五部分
- Linux Unix shell 编程指南学习笔记(第五部分)
- 数据库系统概论 学习笔记(三)第一部分
- sql 入门经典(第五版) Ryan Stephens 学习笔记 第五部分: 性能调整
- Linux Unix shell 编程指南学习笔记(第五部分)
- 数据库系统概论 学习笔记(三)第二部分
- 数据库系统概论 学习笔记(三)第三部分
- 数据库系统概论 学习笔记(三)第四部分
- Linux 学习笔记 -- 第五部分 Linux 系统管理员 -- 第23章 软件安装:RPM、SRPM 与 YUM 功能
- (2011.10.02)《C++ Primer》第五部分学习笔记汇总——高级主题
- Linux 学习笔记 -- 第五部分 Linux 系统管理员 -- 第25章 Linux 备份策略
- Linux 学习笔记 -- 第五部分 Linux 系统管理员 -- 第24章 X Window 设置介绍
- Linux 学习笔记 -- 第五部分 Linux 系统管理员 -- 第21章 系统设置工具(网络与打印机)与硬件检测
- Linux 学习笔记 -- 第五部分 Linux 系统管理员 -- 第20章 启动流程、模块管理与 Loader
- Linux 学习笔记 -- 第五部分 Linux 系统管理员 -- 第22章 软件安装:源码与 Tarball
- Memcached学习笔记 — 第五部分-Memcached分布式实现
- IOS 学习笔记14 内存管理(3) 有效的内存管理 前半部分
- OCP学习笔记[一]概念部分
- 学习struts2的笔记--顺便学习博客写法---struts2的一些拦截器(部分)
- iOS开发学习笔记 2-6 C语言部分 函数及变量的作用域