`

Oracle排序(转)

阅读更多
1、概念
     服务器首先在sort_area_size指定大小的内存区域里排序,如果所需的空间超过sort_area_size,排序会在临时表空间里进行。在专用服务器模式下,排序空间在PGA中,在共享服务器模式下,排序空间在UGA中。如果没有建立large pool,UGA处于shared pool中,如果建立了large pool,UGA就处于large pool中,而PGA不在sga中,它是与每个进程对应单独存在的。




  PGA:program global area,为单个进程(服务器进程或后台进程)保存数据和控制信息的内存区域。PGA与进程一一对应,且只能被起对应的进程读写,PGA在用户登录数据库创建会话的时候建立。
  有关排序空间自动管理的两个参数:
  Pga_aggregate_target: 10M-4000G,等于分配给oracle instance的所有内存减去SGA后的大小。
  Workarea_size_policy: auto/manual,只有Pga_aggregate_target已定义时才能设置为auto。
  这两个参数会取代所有的*_area_size参数。
  措施:
  尽可能避免排序;尽可能在内存中排序;分配合适的临时空间以减少空间分配调用。

2、需要进行排序的操作:
  A、创建索引;
  B、涉及到索引维护的并行插入
  C、order by或者group by(尽可能对索引字段排序)
  D、Distinct
  E、union/intersect/minus
  F、sort-merge join
  G、analyze命令(仅可能使用estamate而不是compute)

3、诊断和措施
  Select * from v$sysstat where name like ‘%sort%’;
  Sort(disk):要求Io去临时表空间的排序数目
  Sort(memory):完全在memory中完成的排序数目
  Sort(rows):被排序的行数合计
  Sort(disk)/ Sort(memory)<5%,如果超过5%,增加sort_area_size的值。
  SELECT disk.Value disk,mem.Value mem,(disk.Value/mem.Value)*100 ratio FROM v$sysstat disk,v$sysstat mem WHERE mem.NAME='sorts (memory)' AND disk.NAME='sorts (disk)';

4、监控临时表空间的使用情况及其配置
  Select tablespace_name,current_users,total_extents,used_extents,extent_hits,max_used_blocks,max_sort_blocks FROM v$sort_segment ;    
Column
Description
CURRENT_USERS
Number of active users
TOTAL_EXTENTS
Total number of extents
USED_EXTENTS
Extents currently allocated to sorts
EXTENT_HITS
Number of times an unused extent was found in the pool
MAX_USED_BLOCKS
Maximum number of used blocks
MAX_SORT_BLOCKS
Maximum number of blocks used by an individual sort

临时表空间的配置:
A、initial/next设置为sort_area_size的整数倍,允许额外的一个block作为segment的header
B、pctincrease=0
C、基于不同的排序需要建立多个临时表空间
D、将临时表空间文件分散到多个磁盘上
http://tech.it168.com/a2009/0504/274/000000274713.shtml
  • 大小: 27.7 KB
分享到:
评论

相关推荐

    oracle排序

    "Oracle 排序" Oracle 排序是指在 Oracle 数据库中对数据进行排序的操作。排序是数据库查询语言中最基本的操作之一,它可以根据不同的条件对数据进行排序,实现数据的有序排列。 一、按字符方式排序 在 Oracle 中...

    Oracle对排序操作的优化措施

    ### Oracle对排序操作的优化措施 #### 一、PGA与SGA的区别 在理解Oracle数据库对排序操作的优化措施之前,我们首先需要了解两个重要的内存结构:PGA(Program Global Area,程序全局区)与SGA(System Global Area...

    浅谈Oracle优化排序的操作

    在探讨Oracle排序操作的优化之前,我们首先需要理解Oracle数据库中的排序是如何发生的以及它所依赖的资源。Oracle的排序操作通常发生在以下几种情况下:创建索引、索引维护、ORDER BY、GROUP BY、DISTINCT、UNION/...

    ORACLE排序优化

    ORACLE 排序优化

    oracle排序方法拼音,部首,笔画

    ### Oracle排序方法:拼音、部首、笔画 在Oracle数据库中,为了适应不同语言环境下的数据处理需求,提供了一套强大的多语言支持工具。其中,“NLS_SORT”参数允许用户按照不同的规则对数据进行排序,这对于处理中文...

    如何解决Oracle分页查询中排序与效率问题

    Oracle 分页查询优化与排序解决方案 本文主要解决 Oracle 分页查询中排序与效率问题,通过实践和分析,提供了两种解决方案,并对比了两种方法的优缺点。 知识点 1: Oracle 分页查询的基本概念 Oracle 分页查询是...

    对Oracle 排序中的几种常用排序的介绍

    Oracle数据库在处理排序时提供了多种方法,以满足不同的需求。本文将详细介绍Oracle中常见的几种排序方式,包括按拼音、部首、笔画排序,以及如何处理NULL值,使用DECODE和NVL函数,以及实现高效的分页查询。 1. **...

    oracle汉字转拼音函数整理大全

    ### Oracle汉字转拼音函数知识点详解 #### 一、概述 在Oracle数据库中,有时需要将汉字转换成拼音,尤其是在处理中文数据时。本篇文档详细介绍了两种用于转换汉字到拼音的自定义函数:`fn_getpyKGJG` 和 `fn_...

    oracle处理的类型 oracle行排序

    Oracle还支持多列排序,可以同时按照多个列进行排序,先按第一列排序,再按第二列排序,以此类推。例如: ```sql SELECT * FROM table_name ORDER BY column1 ASC, column2 DESC; ``` 在处理大量数据时,Oracle...

    oracle通过sql实现字符串转数字oracle函数

    在Oracle数据库中,将字符串转换为数字是一项常见的操作,特别是在处理包含数字的字符串列时,可能需要进行数值计算或按照数值大小进行排序。本篇文章将深入探讨如何在SQL查询中利用Oracle提供的函数来实现这一目标...

    Oracle数据库中ORDER BY排序和查询按IN条件的顺序输出

    在Oracle数据库中,排序操作是数据库查询中非常关键的一部分,特别是在数据分析、报表生成以及用户界面展示时。本文将深入探讨`ORDER BY`子句在Oracle中的排序机制,以及查询时根据`IN`条件顺序输出的方法。 首先,...

    oracle姓名中文转全拼函数

    Oracle姓名中文转全拼函数是解决在Oracle数据库中处理中文姓名时的一个常见需求,特别是考虑到汉字的多样性和复杂性,包括生僻字和多音字的处理。此函数旨在将中文姓名转换为全拼,方便进一步的数据处理或搜索。下面...

    oracle 中文转拼音工具包

    该工具包包含两个主要文件:`sql/oracle汉字转拼音package.sql`和`oracle汉字转拼音说明.txt`。 `sql/oracle汉字转拼音package.sql`是一个SQL脚本,它创建了一个Oracle数据库中的存储过程或者包(package),用于...

    oracle分组排序统计高级用法

    ### Oracle 分组排序统计高级用法详解 #### 一、Oracle分组排序和统计概述 在Oracle数据库中,实现分组排序和统计是一项常见的需求,主要用于处理大量的数据,并从中提取有价值的信息。通过合理运用SQL语句,特别...

    oracle数据库中汉字排序方法

    ### Oracle数据库中汉字排序方法 在Oracle数据库中处理中文数据时,经常需要对包含中文字符的数据表进行排序操作。为了确保排序结果符合预期并能够满足实际业务需求,我们需要掌握几种有效的汉字排序方法。本文将...

    Oracle外排序研究

    #### 二、Oracle排序区概述 Oracle数据库的内存结构主要包括软件代码区、系统全局区(SGA)、程序全局区(PGA)以及用于排序的特定内存区域——排序区。排序区位于请求排序的用户进程的内存中,其大小可以根据排序数据...

    ORACLE汉字转拼音

    在Oracle数据库环境中,有时我们需要对汉字字段进行处理,例如转换为拼音,以便于搜索、排序或者与其他系统集成。"ORACLE汉字转拼音"这个主题就聚焦于如何在Oracle数据库中实现这一功能。以下是对这个知识点的详细...

    带排序的oracle分页存储过程

    ### 带排序的Oracle分页存储过程 在开发Web应用程序的过程中,分页是一个非常常见的需求。为了提高系统的性能及可维护性,采用存储过程来实现分页逻辑是一种较为推荐的做法。下面将详细介绍如何利用Oracle数据库中...

    解决Oracle分页查询中排序与效率问题

    ### 解决Oracle分页查询中排序与效率问题 在Oracle数据库中进行分页查询时,经常会出现性能瓶颈,尤其是在处理大数据量的情况下。本篇文章将详细探讨如何优化Oracle分页查询中的排序与效率问题。 #### 一、理解...

    oracle 根据部门求和排序

    上面语句表示,根据col1分组,在分组内部根据col2排序,这里的“别名”的值就是每组内部排序后的序列号(组内连续的、唯一的),“[partition by col1] ”可以省略。

Global site tag (gtag.js) - Google Analytics