buffer sort Oracle,[转]BUFFER SORT是BUFFER却不是SORT
用AUTOTRACE查看执行的计划的同学常问到执行计划里的BUFFER SORT是什么意思,这里为什么要排序呢?
BUFFER SORT不是一种排序,而是一种临时表的创建方式。
BUFFER是执行计划想要表达的重点,是其操作: 在内存中存放一张临时表。
SORT修饰BUFFER,表示具体在内存的什么地方存放临时表: 在PGA的SQL工作区里的排序区。
至少有一种方法可以说服对此表示怀疑的人们,就是查询V$SQL_PLAN_STATISTICS_ALL.PROJECTION字段。
将STATISTICS_LEVEL设置为ALL先,然后执行真-排序命令,比如:select hire_date,salary from hr.employees order by hire_date
然后查看其V$SQL_PLAN_STATISTICS_ALL.PROJECTION字段:
SYS@br//scripts> select projection from v$sql_plan_statistics_all where
sql_id=(select sql_id from v$sql where sql_text='select hire_date,salary from hr.employees order by hire_date')
and operation='SORT' and options='ORDER BY';
PROJECTION
----------------------------------------------------------------
(#keys=1) "HIRE_DATE"[DATE,7], "SALARY"[NUMBER,22]
1 row selected.
其中开头的#keys表示返回的结果中排序的字段数量。
再执行一句真-排序命令:select hire_date,salary from hr.employees order by salary,hire_date
然后查看其V$SQL_PLAN_STATISTICS_ALL.PROJECTION字段,#keys因该为2:
SYS@br//scripts> select projection from v$sql_plan_statistics_all where
sql_id=(select sql_id from v$sql where sql_text='select hire_date,salary from
hr.employees order by salary,hire_date') and operation='SORT' and options='ORDER BY';
PROJECTION
------------------------------------------------------------------------------------
(#keys=2) "SALARY"[NUMBER,22], "HIRE_DATE"[DATE,7]
1 row selected.
来看看我们萌萌的BUFFER SORT的表现吧~
执行下面这个查询,它使用了所谓的BUFFER SORT:
select ch.channel_class,c.cust_city,sum(s.amount_sold) sales_amount
from sh.sales s,sh.customers c,sh.channels ch
where s.cust_id=c.cust_id and s.channel_id=ch.channel_id and
c.cust_state_province='CA' and
ch.channel_desc='Internet'
group by ch.channel_class,c.cust_city
附上其执行计划,Id为5的Operation是BUFFER SORT:
execution Plan
----------------------------------------------------------
Plan hash value: 3047021169
----------------------------------------------------------------------------------------------------
| Id
buffer sort Oracle,[转]BUFFER SORT是BUFFER却不是SORT相关推荐
- Oracle性能调优之--Buffer cache 的调整与优化
Oracle性能调优之--Buffer cache 的调整与优化 Buffer Cache是SGA的重要组成部分,主要用于缓存数据块,其大小也直接影响系统的性能.当Buffer Cache过小的时候, ...
- Scattering:将数据写入到buffer时,可以采用buffer数组,依次写入 [分散] || Gathering: 从buffer读取数据时,可以采用buffer数组,依次读
package com.atguigu.nio;import java.net.InetSocketAddress; import java.nio.ByteBuffer; import java.n ...
- buffer pool mysql_理解Mysql中的Buffer pool
Buffer Pool在数据库里的地位 1.回顾一下Buffer Pool是个什么东西? 数据库中的Buffer Pool是个什么东西?其实他是一个非常关键的组件,数据库中的数据实际上最终都是要存放在 ...
- sort函数降序排列matlab,详解Matlab中 sort 函数用法
(1)B=sort(A) 对一维或二维数组进行升序排序,并返回排序后的数组,当A为二维时,对数组每一列进行排序. eg: A=[1,5,3],则sort(A)=[1,3,5] A=[1,5,3;2,4 ...
- sort函数排序字母c语言,c语言数组用sort函数排序?
c语言运用sort 排序函数,需要的头文件是什么? sort不属于C语言的标准函数,所以也没有相应的头文件,但是可以自定义. sort 函数为将整型数组从小到大排序. voidsort(int*a,i ...
- ORACLE (5): buffer cache(CBC LATCH实验)
什么是cache buffers chains latch 当用户执行一条select语句的过程如下: 1.根据记录找到对应的DBA: 比如: SQL> select dbms_rowid.RO ...
- linux配置内存buffer,调整Linux的网络栈(Buffer Size)来提升网络性能
注:如需转载,请注明来源,谢谢! 本文基于CENTOS .DEBIAN/UBUNTU 编写 . 我有两台位于不同数据中心的服务器,都用来处理很多并行的大文件传输.但是处理大文件,网络性能非常差.并且涉 ...
- c语言sort函数排序二维数组,c++ - 如何使用stl sort函数根据第二列对二维数组进行排序? - 堆栈内存溢出...
stl排序要求迭代器的rvalue作为参数传递. 如果你想使用sort函数,你必须在c ++ 11中编译并使用数组stl来存储数组. 代码如下 #include "bits/stdc++.h ...
- c语言sort函数排序二维数组,js 二维数组排序sort()函数
一.按数值排序 var arr = [[1, 2, 3], [7, 2, 3], [3, 2, 3]]; arr.sort(function(x, y){ return x[0] – y[0]; }) ...
最新文章
- MATLAB实现微积分基础知识(求导,积分,插值,曲线拟合,最小二乘)
- C#高性能大容量SOCKET并发(十):SocketAsyncEventArgs线程模型
- 【报名】与阿里云一同探索视频云的新技术与新场景
- linux3.4 内核裁剪,05-S3C2440学习之内核(移植)linux3.4.2移植(2)之yffs2文件系统移植+内核裁剪+内核制作补丁...
- php自动加载指定目录下的类文件
- C++——面向对象设计原则
- Python读取文件内容的三种方式并比较
- 原来华为手机音量键这么厉害!除了调声音,还有5个隐藏功能
- lua tonumber
- Ubuntu 12.04无法识别华为U8500
- 学生成绩字典、获取最高分科目分数python_实例:找出分数最高的学生
- 论游戏中Buff的实现
- 2023微信手机号筛选器,快速检测出开通微信的号码,检测国外号码过滤微信状态,判断qq是否开通微信软件
- rviz显示矩形框BoundingBox
- 5410 ACM 杭电 01+完全背包
- 苹果公司CEO:混蛋乔布斯
- Type ‘HTMLElement | null‘ is not assignable to type ‘HTMLElement‘
- 前端报504错误如何定位
- 一个公务员的编程人生
- 通过ContentProvider实现获取手机联系人