一次数据库优化全过程分析

联系:手机/微信(+86 17813235971) QQ(107644445)

标题:一次数据库优化全过程分析

作者:惜分飞©版权所有[未经本人同意,不得以任何形式转载,否则有进一步追究法律责任的权利.]

最近对客户的一个数据库进行了优化,在本次优化过程中,主要涉及以下方面:
1. 确保系统有足够的内存,处理方法配置Hugepage,减小SGA
2. 优化因为主键表频繁插入引起的user$,con$,cdef$递归查询sql

SQL> select c.name, u.name from con$ c, cdef$ cd, user$ u where
   2 c.con# = cd.con# and cd.enabled = :1 and c.owner# = u.user#;
Execution Plan
----------------------------------------------------------
Plan hash value: 2409458995
-----------------------------------------------------------------------------
| Id  | Operation           | Name  | Rows  | Bytes | Cost (%CPU)| Time     |
-----------------------------------------------------------------------------
|   0 | SELECT STATEMENT    |       |  3820 |   164K|    38   (6)| 00:00:01 |
|*  1 |  HASH JOIN          |       |  3820 |   164K|    38   (6)| 00:00:01 |
|   2 |   TABLE ACCESS FULL | USER$ |    64 |   896 |     3   (0)| 00:00:01 |
|*  3 |   HASH JOIN         |       |  3820 |   111K|    34   (3)| 00:00:01 |
|*  4 |    TABLE ACCESS FULL| CDEF$ |  3820 | 34380 |    25   (0)| 00:00:01 |
|   5 |    TABLE ACCESS FULL| CON$  |  6368 |   130K|     8   (0)| 00:00:01 |
-----------------------------------------------------------------------------

具体见:一次数据库优化全过程分析

One thought on “一次数据库优化全过程分析

  1. 有意思,不过我觉得sql profile应该可以固定.
    没有环境,无法做这个测试.

  2. 第一次优化后,session数下降的可真大呀,
    未优化前,活动的会话数是多少?

  3. 惜分飞,
    抱歉,我没说准确。
    “DB Time 总时间=Elapsed*cpu数” 我想表达的应该是 “CPU总时间=Elapsed*cpu(核)数”
    “DB Time”应该小于等于“CPU总时间”的。
    我看到PDF里:DB Time:108,269.34 (mins) 远远大于 “CPU总时间”
    想请教一下,是什么回事?

  4. 惜分飞,
    抱歉,我没说准确。
    “DB Time 总时间=Elapsed*cpu数”我想表达的应该是“CPU总时间=Elapsed*cpu(核)数”
    “DB Time”应该小于等于“CPU总时间”的。
    我看到PDF里:DB Time:108,269.34 (mins)远远大于“CPU总时间”
    想请教一下,是什么回事?

    cpu的总时间指的是cpu number* awr收集的时间

发表评论

邮箱地址不会被公开。 必填项已用*标注

9 + 9 =