如何操控Oracle优化排序

    作者:Oracle数据库学习更新于: 2015-10-29 16:35:24

    今天,小编的Oracle数据库学习助手要分享给大家的是如何操作Oracle优化排序。具体内容皆如下,大家如果有兴趣的话,可以多学习学习。

    ORACLE 是以高级结构化查询语言(SQL)为基础的大型关系数据库,通俗地讲它是用方便逻辑管理的语言操纵大量有规律数据的集合。是目前最流行的客户/服务器(CLIENT/SERVER)体系结构的数据库之一。

    服务器首先在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、将临时表空间文件分散到多个磁盘上

    更多相关的Oracle数据库视频尽在课课家官方网,有空的朋友可前去查看。

     

课课家教育

未登录