美文网首页数据库知识点程序员
《数据库系统概念》17-查询优化

《数据库系统概念》17-查询优化

作者: zhixin9001 | 来源:发表于2018-01-15 20:21 被阅读17次

一、查询优化是为处理查询找出一个好的策略的过程。一个查询一般有多种方法可以计算出结果,系统负责将用户输入的查询转换成能够更有效执行的等价查询。

复杂的查询操作涉及多级存取磁盘的操作,由于从磁盘中传输数据比从内存中要慢得多,所以有必要进行查询优化,以选择一个能够最小化磁盘存取的方法。

有很多等价规则可供将一个表达式转化成等价表达式,可以使用这些规则系统地产生与所给查询等价的所有表达式。

选择查询处理策略的第一步就是找到一个关系代数表达式,使它与所给的表示是等价并且据估计有更小的执行代价。

二、数据库系统为执行一个操作所选择的策略依赖于每个关系的大小和列值的分布情况。数据库系统可以为每个关系r存储统计信息,从而能够基于这些可靠消息选择合适的策略。这些统计信息包括:关系r中的元组数;关系r中的一个记录的大小;关系r中某个特定属性中出现的不同取值的数目等。这些统计信息使得我们可以估计各种操作的结果集的大小和执行操作的代价。当处理一个查询的过冲中有多个索引可用于辅助的时候,关系的统计信息特别有用,这些信息对查询处理策略的选择有很大的影响。

三、对于每个表达式,可以用一些等价规则产生多个可选的执行计划,然后从中选择代价最小的执行计划。为了减少需要产生的可选表达式和执行计划的数量,产生了多种优化技术,比如可以使用启发式的方法,来减少优化的代价。用于关系代数查询转换的启发式规则包括“及早执行选择操作”、“及早执行投影操作”、“避免笛卡尔积操作”等。

还可以使用物化视图来加速查询处理。当原关系发生修改时,需要用增量的视图维护来高效地更新物化视图。利用包含一个操作的输入的变化量的代数表达式,能够完成对该操作的变化量的计算。其他与物化视图相关的问题还包括如何借助物化视图进行查询优化和如何选择需要待物化的视图。

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

相关文章

  • 《数据库系统概念》17-查询优化

    一、查询优化是为处理查询找出一个好的策略的过程。一个查询一般有多种方法可以计算出结果,系统负责将用户输入的查询转换...

  • 慢查询

    含义:可以让mysql记录一些查询超过限定时间的语句,通过开启慢查询,优化SQL语句进而优化数据库系统的性能。 参...

  • PostgreSQL 源码解读(17)- 查询语句#2(查询优化

    本文简单介绍了数据库系统实现中查询优化的关系代数基础,包括优化所基于的关系代数等价规则等.查询优化的主要目标是把表...

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

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

  • PostgreSQL 源码解读(29)- 查询语句#14(查询优

    本节简单介绍了PG查询逻辑优化中的子查询(subQuery)上拉优化,包括查询优化中子查询的基本概念,同时介绍了主...

  • Oracle查询优化器(一)

    本系列文章将会介绍Oracle数据库中核心组件之一的查询优化器,并尝试从SQL执行的角度来介绍查询优化器的基础概念...

  • RBO和CBO详解

    RBO和CBO的基本概念 Oracle数据库中的优化器又叫查询优化器(Query Optimizer)。它是SQL...

  • MySQL性能调优

    MYSQL查询语句优化 mysql的性能优化包罗甚广: 索引优化,查询优化,查询缓存,服务器设置优化,操作系统和硬...

  • Presto源码分析之IterativeOptimizer

    概要 查询优化是数据库系统里面特别关键的一个组件, 曾经有一个老外,我也不知道是谁说过: Query optimi...

  • mysql优化

    MYSQL优化 为查询缓存优化你的查询 EXPLAIN你的SELECT查询。根据结果给出分析相应的查询优化 当只要...

网友评论

    本文标题:《数据库系统概念》17-查询优化

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