数据库 执行计划的基本名词解释
来源:互联网 发布:华为交换机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
- 数据库 执行计划的基本名词解释
- 什么是数据库的执行计划?
- Sourcetree的基本名词解释
- Oracle数据库执行计划的一些基本概念
- Oracle数据库执行计划的一些基本概念
- Oracle数据库执行计划的一些基本概念
- ORACLE数据库查看执行计划的方法
- ORACLE数据库查看执行计划的方法
- ORACLE数据库查看执行计划的方法
- ORACLE数据库查看执行计划的方法
- ORACLE数据库查看执行计划的方法
- ORACLE数据库查看执行计划的方法
- ORACLE数据库查看执行计划的方法
- ORACLE数据库查看执行计划的方法
- ORACLE--数据库查看执行计划的方法
- ORACLE数据库查看执行计划的方法
- Oracle数据库执行计划
- 数据库索引 + 执行计划
- SVN还原已删除文件
- 什么是“沙箱”技术?
- 求利用邻接矩阵求多有节点最短路径的java程序 可运行
- Hadoop 默认排序
- android EditText软键盘的隐藏和显示
- 数据库 执行计划的基本名词解释
- spring的context:property-placeholder属性
- 如何使用Guava的缓存管理
- (精)软件架构设计
- Java-泛型编程-使用通配符? extends 和 ? super
- chromium flash player issue
- 父类引用指向子类对象
- error MSB6006: "cmd.exe" exited with code 3 错误的解决方法
- 正则校验