数据库 执行计划的基本名词解释

来源:互联网 发布:华为交换机mac过滤 编辑:程序博客网 时间:2024/05/16 07:02


1. 基于成本的优化器(cost-based plan);

        它是看语句的代价(cost),这里的代价主要指Cpu和内存;优化器在判断是否使用这种方式的时候,主要参照的是表及索引的统计信息;
    统计信息给出表的大小、多少行、每行的长度等信息。这些统计信息起初在库内是没有的,是做analyze后才出现的,很多的时侯过期统计
    信息会令优化器做出一个错误的执行计划,因些应及时更新这些信息。

2. 基于规则的优化器(rule-based plan):
    
        优化器在分析SQL语句时,所遵循的是Oracle内部预定的一些规则。比如我们常见的,当一个where子句中的一列有索引时去走索引。

    查考:http://www.poluoluo.com/jzxy/200812/54048.html


3.  explain (analyze,verbose,costs,buffers,timing) select * from xxxx;

    explain参数解释:

    > ANALYZE :执行命令并显示执行事件,默认false
    > VERBOSE :对执行计划提供额外的信息,如查询字段信息等,默认false
    > COSTS :显示执行计划的,默认true
    > BUFFERS :默认false,前置条件是analyze
    > FORMAT :默认格式是text

    PostgreSQL的cost常量如下 :

    > seq_page_cost  -- 连续块扫描操作的单个块的cost. 例如全表扫描
    > random_page_cost  -- 随机块扫描操作的单个块的cost. 例如索引扫描
    > cpu_tuple_cost  -- 处理每条记录的CPU开销(tuple:关系中的一行记录)
    > cpu_index_tuple_cost  -- 扫描每个索引条目带来的CPU开销
    > cpu_operator_cost  -- 操作符或函数带来的CPU开销.(需要注意函数以及操作符对应的函数的三态, 执行计划会根据三态做优化, 关系到多条记录时三态对应的调用次数是需要关心的)


4. 执行计划中的一些术语和关键字。

    执行计划运算类型     操作说明                         是否有启动时间
    -------------------------------------------------------------------
    Seq Scan             扫描表                             无启动时间
    Index Scan           索引扫描                         无启动时间
    Bitmap Index Scan     索引扫描                         有启动时间
    Bitmap Heap Scan    索引扫描                         有启动时间
    Subquery Scan       子查询                             无启动时间
    Tid Scan             ctid = …条件                     无启动时间
    Function Scan         函数扫描                         无启动时间
    Nested Loop         循环结合                         无启动时间
    Merge Join             合并结合                         有启动时间
    Hash Join             哈希结合                         有启动时间
    Sort                 排序,ORDER BY操作                有启动时间
    Hash                 哈希运算                         有启动时间
    Result                 函数扫描,和具体的表无关         无启动时间
    Unique                DISTINCT,UNION操作             有启动时间
    Limit                LIMIT,OFFSET操作                 有启动时间
    Aggregate             count, sum,avg, stddev聚集函数     有启动时间
    Group                GROUP BY分组操作                 有启动时间
    Append                UNION操作                         无启动时间
    Materialize         子查询                             有启动时间

    SetOp                 INTERCECT,EXCEPT                有启动时

  

    参考地址:http://my.oschina.net/congqian/blog/135872

    

0 0
原创粉丝点击