ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 优化排序操作(2)

优化排序操作(2)

原创 Linux操作系统 作者:pennypengy 时间:2011-04-29 10:47:01 0 删除 编辑

          
1.PGA自动内存管理方式
2.利用动态性能视图调优:v$pgastat,v$sql_workerea_histogram(记录在不同工作区大小范围内,分别执行最优多少次,一次读取硬盘多少次,多次读取硬盘多少次)。
       SELECT low_optimal_size/1024 "Low_kb",(high_optimal_size+1)/1024 "High_kb",
              ROUND(100*optimal_executions/total_executions) "Optimal",
              ROUND(100*onepass_executions/total_executions) "One Pass",
              ROUND(100*multipasses_executions/total_executions) "Multi Pass"
        FROM v$sql_workerea_histogram
        WHERE total_execution != 0
        ORDER BY "Low_kb";
    v$sql_workerea_active,v$sql_workarea,v$sql,v$sql_plan,v$tempseg_usage,v$process_memory,v$sysstat

3.对于PGA的调整,可以用ORACLE提供的advice进行。可以参考两个动态性能视图v$pga_target_advice,基于当前的工作负荷,随着PGA的增大,分别计算命中率,读取磁盘的次数,重新分配PGA的次数等。
        SELECT ROUND(pga_target_for_estimate/1024/1024) AS target_mb,
               estd_pga_cache_hit_percentage AS hit_ratio,
               estd_overalloc_count
        FROM v$pga_target_advice
        ORDER BY target_mb;
       
4.如何去调优PGA:(1)首先根据v$pga_target_advice保证over_allocation=0;
                 (2)假设你只能分配X给PGA,如果X很大,超过了理想值,则最好设为理想值 ;
                (3)如果X小于理想值,则设为X
               
5.还有两个动态性能视图v$sysstat 和 v$sesstat,它们记录了三种模式(最优模式,一次扫描,多次扫描)的执行次数。

6.v$pga_target_advice_histogram  用来预测 v$sql_workarea_histogram 

7.以上讨论的情况都是在自动内存管理模式下的,如果将内存管理模式改为手动的,则需要手动设置排序或hash工作区的大小:
        SQL>alter session set workarea_size_policy = manual;
        SQL>alter session set sort_area_size = xxxx;
  手动管理方式只针对少量需做批量的用户。

8.对于dedicated server模式,排序工作区是放在PGA中的,对于shared server模式,排序工作区是放在SGA中的。
   两个参数:SORT_AREA_SIZE,SORT_AREA_RETAINED_SIZE
  
9.如果排序不能在内存里完成,它会在临时表空间中完成。一个临时表空间只有一个排序segment,不同的排序在这个segment中不同的extent中完成。
  当创建 临时表空间时,ORACLE并不真正占据磁盘的空间,它只分配一个头和一个尾,只有在真正使用到的时候才会分配磁盘。
  一个临时表空间只有一个segment,它在第一次使用的时候才会分配,根据需要它会不断的扩张,一个segment 可以被多个用户共享,这些用户使用不同的extent,extent不在数据字典中维护。
 
10.需要做排序的几种情况:(1)创建索引时;(2)执行并行插入操作,同时需要维护索引时;(3)做ORDER BY  和我GROUP BY操作时;(4)做DISTINCT操作时;
            (5)做集合操作UNION,UNION ALL,INTERSECT和MINUS操作时,(6)做SORT MERGE JOINS时;(7)用ANALYZE命令时。

11.监控临时表空间的几个动态性能视图:v$sort_segment,v$sort_usage,v$sysstat,Statspack,v$tempfile,dba_temp_files

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/22012035/viewspace-694067/,如需转载,请注明出处,否则将追究法律责任。

上一篇: SQL优化
下一篇: SQl 单行函数
请登录后发表评论 登录
全部评论

注册时间:2011-04-17

  • 博文量
    20
  • 访问量
    25052