用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相关推荐

  1. Oracle性能调优之--Buffer cache 的调整与优化

    Oracle性能调优之--Buffer cache 的调整与优化 Buffer Cache是SGA的重要组成部分,主要用于缓存数据块,其大小也直接影响系统的性能.当Buffer Cache过小的时候, ...

  2. Scattering:将数据写入到buffer时,可以采用buffer数组,依次写入 [分散] || Gathering: 从buffer读取数据时,可以采用buffer数组,依次读

    package com.atguigu.nio;import java.net.InetSocketAddress; import java.nio.ByteBuffer; import java.n ...

  3. buffer pool mysql_理解Mysql中的Buffer pool

    Buffer Pool在数据库里的地位 1.回顾一下Buffer Pool是个什么东西? 数据库中的Buffer Pool是个什么东西?其实他是一个非常关键的组件,数据库中的数据实际上最终都是要存放在 ...

  4. 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 ...

  5. sort函数排序字母c语言,c语言数组用sort函数排序?

    c语言运用sort 排序函数,需要的头文件是什么? sort不属于C语言的标准函数,所以也没有相应的头文件,但是可以自定义. sort 函数为将整型数组从小到大排序. voidsort(int*a,i ...

  6. ORACLE (5): buffer cache(CBC LATCH实验)

    什么是cache buffers chains latch 当用户执行一条select语句的过程如下: 1.根据记录找到对应的DBA: 比如: SQL> select dbms_rowid.RO ...

  7. linux配置内存buffer,调整Linux的网络栈(Buffer Size)来提升网络性能

    注:如需转载,请注明来源,谢谢! 本文基于CENTOS .DEBIAN/UBUNTU 编写 . 我有两台位于不同数据中心的服务器,都用来处理很多并行的大文件传输.但是处理大文件,网络性能非常差.并且涉 ...

  8. c语言sort函数排序二维数组,c++ - 如何使用stl sort函数根据第二列对二维数组进行排序? - 堆栈内存溢出...

    stl排序要求迭代器的rvalue作为参数传递. 如果你想使用sort函数,你必须在c ++ 11中编译并使用数组stl来存储数组. 代码如下 #include "bits/stdc++.h ...

  9. 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]; }) ...

最新文章

  1. MATLAB实现微积分基础知识(求导,积分,插值,曲线拟合,最小二乘)
  2. C#高性能大容量SOCKET并发(十):SocketAsyncEventArgs线程模型
  3. 【报名】与阿里云一同探索视频云的新技术与新场景
  4. linux3.4 内核裁剪,05-S3C2440学习之内核(移植)linux3.4.2移植(2)之yffs2文件系统移植+内核裁剪+内核制作补丁...
  5. php自动加载指定目录下的类文件
  6. C++——面向对象设计原则
  7. Python读取文件内容的三种方式并比较
  8. 原来华为手机音量键这么厉害!除了调声音,还有5个隐藏功能
  9. lua tonumber
  10. Ubuntu 12.04无法识别华为U8500
  11. 学生成绩字典、获取最高分科目分数python_实例:找出分数最高的学生
  12. 论游戏中Buff的实现
  13. 2023微信手机号筛选器,快速检测出开通微信的号码,检测国外号码过滤微信状态,判断qq是否开通微信软件
  14. rviz显示矩形框BoundingBox
  15. 5410 ACM 杭电 01+完全背包
  16. 苹果公司CEO:混蛋乔布斯
  17. Type ‘HTMLElement | null‘ is not assignable to type ‘HTMLElement‘
  18. 前端报504错误如何定位
  19. 一个公务员的编程人生
  20. 通过ContentProvider实现获取手机联系人

热门文章

  1. 让隔壁同事哇塞的IDEA主题!
  2. Java 中的 BigDecimal,你真的会用吗?
  3. 如果你想成为年入 50w+ 的架构师,我建议你先看看这个...
  4. 七夕保命攻略,各位兄弟请收好!
  5. php打印pre,php 打印格式化显示利器 pre
  6. TORCH MAXIMUM
  7. ncnn tensorrt
  8. opencv mat与avframe互转
  9. python dict排序 reduce函数
  10. 结构体在多线程中用法