Oracle数据库数据恢复、性能优化

找回密码
注册
搜索
热搜: 活动 交友 discuz
发新帖

0

积分

2

好友

1

主题
1#
发表于 2013-7-24 13:55:42 | 查看: 5493| 回复: 18
本帖最后由 hotdog04 于 2013-7-25 10:46 编辑

如下10053事件的部分内容:
全表扫描的cost明显大于索引但是它还是选择了全表扫描。
数据库版本11.2.01

Access path analysis for CPS_EFFECT_TEMP_LOG
***************************************
SINGLE TABLE ACCESS PATH
  Single Table Cardinality Estimation for CPS_EFFECT_TEMP_LOG[C]

  Table: CPS_EFFECT_TEMP_LOG  Alias: C
    Card: Original: 14300372.000000  Rounded: 8  Computed: 7.75  Non Adjusted: 7.75
  Access Path: TableScan
    Cost:  206784.98  Resp: 206784.98  Degree: 0
      Cost_io: 206274.00  Cost_cpu: 16292112239
      Resp_io: 206274.00  Resp_cpu: 16292112239
kkofmx: index filter:SYS_OP_UNDESCEND(SYS_OP_DESCEND("C"."END_DATE"))>='2013-07-24 10:52:05'

kkofmx: index filter:SYS_OP_UNDESCEND(SYS_OP_DESCEND("C"."END_DATE"))<='2013-07-24 10:55:05'

  Using prorated density: 0.000000 of col #69 as selectvity of out-of-range/non-existent value pred
  Access Path: index (FullScan)
    Index: IND_CETL_CID_ED
    resc_io: 128232.00  resc_cpu: 3887031044
    ix_sel: 1.000000  ix_sel_with_filters: 0.000000
***** Logdef predicate Adjustment ******
Final IO cst 0.00 , CPU cst 50.00
***** End Logdef Adjustment ******
***** Logdef predicate Adjustment ******
Final IO cst 0.00 , CPU cst 100.00
***** End Logdef Adjustment ******
    Cost: 128400.55  Resp: 128400.55  Degree: 1
  Best:: AccessPath: TableScan
         Cost: 206784.98  Degree: 1  Resp: 206784.98  Card: 7.75  Bytes: 0

***************************************

10053.zip

17.47 KB, 下载次数: 1178

10053

2#
发表于 2013-7-24 22:43:36
描述不清 , 甚至不如你直接 把10053 trace上传

回复 只看该作者 道具 举报

3#
发表于 2013-7-25 10:44:28
Maclean Liu(刘相兵 发表于 2013-7-24 22:43
描述不清 , 甚至不如你直接 把10053 trace上传

之前以为oralce只考虑cost来选择路径,不知道其它的因素,请帮忙解释一下这个sql选择路径的过程,谢谢,附件上传

回复 只看该作者 道具 举报

4#
发表于 2013-7-25 22:41:36

-----------------------------
SYSTEM STATISTICS INFORMATION
-----------------------------
  Using NOWORKLOAD Stats
  CPUSPEEDNW: 2657 millions instructions/sec (default is 100)
  IOTFRSPEED: 4096 bytes per millisecond (default is 4096)
  IOSEEKTIM: 10 milliseconds (default is 10)
  MBRC: -1 blocks (default is 8)

***************************************
BASE STATISTICAL INFORMATION
***********************
Table Stats::
  Table: CPS_EFFECT_TEMP_LOG  Alias:  C  (Using composite stats)
    #Rows: 14300372  #Blks:  761619  AvgRowLen:  360.00
Index Stats::
  Index: IDX_CPS_ETL_SD_DESC  Col#: 68
    LVLS: 3  #LB: 104916  #DK: 3603712  LB/K: 1.00  DB/K: 2.00  CLUF: 8927884.00
  Index: IDX_CPS_ETL_WID_ON_PN_CT  Col#: 17 15 9 18 20
    USING COMPOSITE STATS
    LVLS: 2  #LB: 136367  #DK: 14554833  LB/K: 1.00  DB/K: 1.00  CLUF: 7977146.00
  Index: IND_CETL_CID_ED  Col#: 9 69
    USING COMPOSITE STATS
    LVLS: 3  #LB: 128228  #DK: 2370283  LB/K: 1.00  DB/K: 1.00  CLUF: 2017374.00
  Index: IND_CPS_ETL_WID_SD  Col#: 15 28
    USING COMPOSITE STATS
    PARTITION [0]    LVLS: 2  #LB: 19441  #DK: 1158406  LB/K: 1.00  DB/K: 1.00  CLUF: 1104556.00
    PARTITION [1]    LVLS: 2  #LB: 12400  #DK: 594897  LB/K: 1.00  DB/K: 1.00  CLUF: 645889.00
    PARTITION [2]    LVLS: 2  #LB: 12238  #DK: 716163  LB/K: 1.00  DB/K: 1.00  CLUF: 829822.00
    PARTITION [3]    LVLS: 2  #LB: 14494  #DK: 780384  LB/K: 1.00  DB/K: 1.00  CLUF: 927927.00
    PARTITION [4]    LVLS: 2  #LB: 14421  #DK: 876665  LB/K: 1.00  DB/K: 1.00  CLUF: 935147.00
    PARTITION [5]    LVLS: 2  #LB: 28617  #DK: 1444643  LB/K: 1.00  DB/K: 1.00  CLUF: 1538202.00
    PARTITION [6]    LVLS: 2  #LB: 29002  #DK: 1382720  LB/K: 1.00  DB/K: 1.00  CLUF: 1537306.00
    PARTITION [7]    LVLS: 2  #LB: 16095  #DK: 905870  LB/K: 1.00  DB/K: 1.00  CLUF: 934340.00
    PARTITION [8]    LVLS: 2  #LB: 7706  #DK: 437691  LB/K: 1.00  DB/K: 1.00  CLUF: 511919.00
    PARTITION [9]    LVLS: 2  #LB: 7594  #DK: 417511  LB/K: 1.00  DB/K: 1.00  CLUF: 487428.00
    (NOT ANALYZED)
    LVLS: 2  #LB: 169658  #DK: 9269238  LB/K: 1.00  DB/K: 1.00  CLUF: 10255135.00
  Index: PK_CPS_EFFECT_TEMP_LOG  Col#: 1
    LVLS: 2  #LB: 73569  #DK: 13901786  LB/K: 1.00  DB/K: 1.00  CLUF: 3271299.00
Access path analysis for CPS_EFFECT_TEMP_LOG
***************************************
SINGLE TABLE ACCESS PATH
  Single Table Cardinality Estimation for CPS_EFFECT_TEMP_LOG[C]

  Table: CPS_EFFECT_TEMP_LOG  Alias: C
    Card: Original: 14300372.000000  Rounded: 8  Computed: 7.75  Non Adjusted: 7.75
  Access Path: TableScan
    Cost:  206784.98  Resp: 206784.98  Degree: 0
      Cost_io: 206274.00  Cost_cpu: 16292112239
      Resp_io: 206274.00  Resp_cpu: 16292112239
kkofmx: index filter:SYS_OP_UNDESCEND(SYS_OP_DESCEND("C"."END_DATE"))>='2013-07-24 10:52:05'

kkofmx: index filter:SYS_OP_UNDESCEND(SYS_OP_DESCEND("C"."END_DATE"))<='2013-07-24 10:55:05'

  Using prorated density: 0.000000 of col #69 as selectvity of out-of-range/non-existent value pred
  Access Path: index (FullScan)
    Index: IND_CETL_CID_ED
    resc_io: 128232.00  resc_cpu: 3887031044
    ix_sel: 1.000000  ix_sel_with_filters: 0.000000
***** Logdef predicate Adjustment ******
Final IO cst 0.00 , CPU cst 50.00
***** End Logdef Adjustment ******
***** Logdef predicate Adjustment ******
Final IO cst 0.00 , CPU cst 100.00
***** End Logdef Adjustment ******
    Cost: 128400.55  Resp: 128400.55  Degree: 1
  Best:: AccessPath: TableScan
         Cost: 206784.98  Degree: 1  Resp: 206784.98  Card: 7.75  Bytes: 0

***************************************


OPTIMIZER STATISTICS AND COMPUTATIONS
***************************************
GENERAL PLANS
***************************************
Considering cardinality-based initial join order.
Permutations for Starting Table :0
Join order[1]:  CPS_EFFECT_TEMP_LOG[C]#0
***********************
Best so far:  Table#: 0  cost: 206784.9785  card: 7.7531  bytes: 704
***********************
(newjo-stop-1) k:0, spcnt:0, perm:1, maxperm:2000

*********************************
Number of join permutations tried: 1
*********************************
Trying or-Expansion on query block SEL$335DD26A (#0)
Transfer Optimizer annotations for query block SEL$335DD26A (#0)
id=0 fptrnum predicate=ROWNUM<=3000
id=0 frofand predicate="C"."END_DATE"<='2013-07-24 10:55:05' AND "C"."END_DATE">='2013-07-24 10:52:05'
Final cost for query block SEL$335DD26A (#0) - All Rows Plan:
  Best join order: 1
  Cost: 206784.9785  Degree: 1  Card: 8.0000  Bytes: 704
  Resc: 206784.9785  Resc_io: 206274.0000  Resc_cpu: 16292112239
  Resp: 206784.9785  Resp_io: 206274.0000  Resc_cpu: 16292112239
kkoqbc-subheap (delete addr=0x2b6d4408d978, in-use=16832, alloc=21632)
kkoqbc-end:
        :
    call(in-use=82784, alloc=114552), compile(in-use=115976, alloc=119424), execution(in-use=5584, alloc=8088)

kkoqbc: finish optimizing query block SEL$335DD26A (#0)
kkoqbc: optimizing query block SEL$1 (#0)
        
        :
    call(in-use=82784, alloc=114552), compile(in-use=115976, alloc=119424), execution(in-use=5584, alloc=8088)

kkoqbc-subheap (create addr=0x2b6d4408d978)
****************
QUERY BLOCK TEXT
****************
select *
  from (select A.*, ROWNUM RN
          from (select c.advertiser_id,
                       c.campaign_id,
                       c.order_no,
                       c.product_no,
                       c.product_name,
                       c.act
---------------------
QUERY BLOCK SIGNATURE
---------------------
signature (optimizer): qb_name=SEL$1 nbfros=1 flg=0
  fro(0): flg=1 objn=0 hint_alias="from$_subquery$_001"@"SEL$1"

-----------------------------
SYSTEM STATISTICS INFORMATION
-----------------------------
  Using NOWORKLOAD Stats
  CPUSPEEDNW: 2657 millions instructions/sec (default is 100)
  IOTFRSPEED: 4096 bytes per millisecond (default is 4096)
  IOSEEKTIM: 10 milliseconds (default is 10)
  MBRC: -1 blocks (default is 8)

***************************************
BASE STATISTICAL INFORMATION
***********************
Table Stats::
  Table: from$_subquery$_001  Alias: from$_subquery$_001  (NOT ANALYZED)
    #Rows: 0  #Blks:  0  AvgRowLen:  0.00
Access path analysis for from$_subquery$_001

***************************************


OPTIMIZER STATISTICS AND COMPUTATIONS
***************************************
GENERAL PLANS
***************************************
Considering cardinality-based initial join order.
Permutations for Starting Table :0
Join order[1]:  from$_subquery$_001[from$_subquery$_001]#0
***********************
Best so far:  Table#: 0  cost: 206784.9785  card: 8.0000  bytes: 5472
***********************
(newjo-stop-1) k:0, spcnt:0, perm:1, maxperm:2000

*********************************
Number of join permutations tried: 1
*********************************
Trying or-Expansion on query block SEL$1 (#0)
Transfer Optimizer annotations for query block SEL$1 (#0)
id=0 frofand predicate="from$_subquery$_001"."RN">=1
Final cost for query block SEL$1 (#0) - All Rows Plan:
  Best join order: 1
  Cost: 206784.9785  Degree: 1  Card: 8.0000  Bytes: 5472
  Resc: 206784.9785  Resc_io: 206274.0000  Resc_cpu: 16292112239
  Resp: 206784.9785  Resp_io: 206274.0000  Resc_cpu: 16292112239
kkoqbc-subheap (delete addr=0x2b6d4408d978, in-use=13288, alloc=21264)
kkoqbc-end:
        :
    call(in-use=89360, alloc=114552), compile(in-use=116304, alloc=119424), execution(in-use=5584, alloc=8088)

kkoqbc: finish optimizing query block SEL$1 (#0)
apadrv-end
          :
    call(in-use=89360, alloc=114552), compile(in-use=119640, alloc=123568), execution(in-use=5584, alloc=8088)


Starting SQL statement dump

user_id=97 user_name=YIQIFA_BS_PRO module=SQL*Plus action=
sql_id=b3b0uhr6j4vn6 plan_hash_value=662673090 problem_type=3
----- Current SQL Statement for this session (sql_id=b3b0uhr6j4vn6) -----
select *
  from (select A.*, ROWNUM RN
          from (select c.advertiser_id,
                       c.campaign_id,
                       c.order_no,
                       c.product_no,
                       c.product_name,
                       c.action_price,
                       c.total_amount,
                       c.product_type,
                       c.commision_type,
                       c.data_type,
                       c.website_id
                  from cps_effect_temp_log c
                 where 1 = 1
                   AND c.end_Date >= '2013-07-24 10:52:05'
                   AND c.end_Date <= '2013-07-24 10:55:05') A
         where ROWNUM <= 3000)
where RN >= 1
sql_text_length=699
sql=select *
  from (select A.*, ROWNUM RN
          from (select c.advertiser_id,
                       c.campaign_id,
                       c.order_no,
                       c.product_no,
                       c.product_name,
                       c.act
sql=ion_price,
                       c.total_amount,
                       c.product_type,
                       c.commision_type,
                       c.data_type,
                       c.website_id
                  from cps_effect_temp_log c
         
sql=        where 1 = 1
                   AND c.end_Date >= '2013-07-24 10:52:05'
                   AND c.end_Date <= '2013-07-24 10:55:05') A
         where ROWNUM <= 3000)
where RN >= 1
----- Explain Plan Dump -----
----- Plan Table -----

============
Plan Table
============
---------------------------------------------------+-----------------------------------+---------------+
| Id  | Operation             | Name               | Rows  | Bytes | Cost  | Time      | Pstart| Pstop |
---------------------------------------------------+-----------------------------------+---------------+
| 0   | SELECT STATEMENT      |                    |       |       |  202K |           |       |       |
| 1   |  VIEW                 |                    |     8 |  5472 |  202K |  00:41:22 |       |       |
| 2   |   COUNT STOPKEY       |                    |       |       |       |           |       |       |
| 3   |    PARTITION LIST ALL |                    |     8 |   704 |  202K |  00:41:22 | 1     | 111   |
| 4   |     TABLE ACCESS FULL | CPS_EFFECT_TEMP_LOG|     8 |   704 |  202K |  00:41:22 | 1     | 111   |
---------------------------------------------------+-----------------------------------+---------------+
Predicate Information:
----------------------
1 - filter("RN">=1)
2 - filter(ROWNUM<=3000)
4 - filter(("C"."END_DATE"<='2013-07-24 10:55:05' AND "C"."END_DATE">='2013-07-24 10:52:05'))

Content of other_xml column
===========================
nodeid/pflags: 4 17nodeid/pflags: 3 17  db_version     : 11.2.0.1
  parse_schema   : YIQIFA_BS_PRO
  plan_hash      : 662673090
  plan_hash_2    : 1220428092
  Outline Data:
  /*+
    BEGIN_OUTLINE_DATA
      IGNORE_OPTIM_EMBEDDED_HINTS
      OPTIMIZER_FEATURES_ENABLE('11.2.0.1')
      DB_VERSION('11.2.0.1')
      ALL_ROWS
      OUTLINE_LEAF(@"SEL$335DD26A")
      MERGE(@"SEL$3")
      OUTLINE_LEAF(@"SEL$1")
      OUTLINE(@"SEL$2")
      OUTLINE(@"SEL$3")
      NO_ACCESS(@"SEL$1" "from$_subquery$_001"@"SEL$1")
      FULL(@"SEL$335DD26A" "C"@"SEL$3")
    END_OUTLINE_DATA
  */



从哪里看出  全表扫描的cost明显大于索引?

回复 只看该作者 道具 举报

5#
发表于 2013-7-25 22:43:06
另 分页写法一般是如下 这样, 和你的并不一样


SELECT * FROM (
  SELECT * FROM (
    SELECT name, population,
      rownum AS rn
    FROM cities
    WHERE state='Florida'
  ) WHERE rownum <= 20
) WHERE rn > 10;

回复 只看该作者 道具 举报

6#
发表于 2013-7-25 23:03:17
Maclean Liu(刘相兵 发表于 2013-7-25 22:41
-----------------------------
SYSTEM STATISTICS INFORMATION
-----------------------------

***************************************
SINGLE TABLE ACCESS PATH
  Single Table Cardinality Estimation for CPS_EFFECT_TEMP_LOG[C]

  Table: CPS_EFFECT_TEMP_LOG  Alias: C
    Card: Original: 14300372.000000  Rounded: 8  Computed: 7.75  Non Adjusted: 7.75
  Access Path: TableScan
    Cost:  206784.98  Resp: 206784.98  Degree: 0
      Cost_io: 206274.00  Cost_cpu: 16292112239
      Resp_io: 206274.00  Resp_cpu: 16292112239
kkofmx: index filter:SYS_OP_UNDESCEND(SYS_OP_DESCEND("C"."END_DATE"))>='2013-07-24 10:52:05'

kkofmx: index filter:SYS_OP_UNDESCEND(SYS_OP_DESCEND("C"."END_DATE"))<='2013-07-24 10:55:05'

  Using prorated density: 0.000000 of col #69 as selectvity of out-of-range/non-existent value pred
  Access Path: index (FullScan)
    Index: IND_CETL_CID_ED
    resc_io: 128232.00  resc_cpu: 3887031044
    ix_sel: 1.000000  ix_sel_with_filters: 0.000000
***** Logdef predicate Adjustment ******
Final IO cst 0.00 , CPU cst 50.00
***** End Logdef Adjustment ******
***** Logdef predicate Adjustment ******
Final IO cst 0.00 , CPU cst 100.00
***** End Logdef Adjustment ******
    Cost: 128400.55  Resp: 128400.55  Degree: 1
  Best:: AccessPath: TableScan
         Cost: 206784.98  Degree: 1  Resp: 206784.98  Card: 7.75  Bytes: 0

***************************************

不太懂10053,不过从这段文字可以得出全表扫描的cost为206784.98,index (FullScan)的cost为128400.55,好像真的是索引扫描的代价要低一点,求刘大解惑。

回复 只看该作者 道具 举报

7#
发表于 2013-7-26 09:58:42
  Access Path: index (FullScan)
    Index: IND_CETL_CID_ED
    resc_io: 128232.00  resc_cpu: 3887031044
    ix_sel: 1.000000  ix_sel_with_filters: 0.000000
***** Logdef predicate Adjustment ******
Final IO cst 0.00 , CPU cst 50.00
***** End Logdef Adjustment ******
***** Logdef predicate Adjustment ******
Final IO cst 0.00 , CPU cst 100.00
***** End Logdef Adjustment ******
    Cost: 128400.55  Resp: 128400.55  Degree: 1


Cost: 128400.55仅仅是  index (FullScan)的成本,如果加上FETCH ROW BY ROWID FROM TABLE的成本呢?

回复 只看该作者 道具 举报

8#
发表于 2013-7-26 10:57:15
Maclean Liu(刘相兵 发表于 2013-7-26 09:58
Access Path: index (FullScan)
    Index: IND_CETL_CID_ED
    resc_io: 128232.00  resc_cpu: 3887031 ...

哦,原来如此,为什么10053里面没有计算FETCH ROW BY ROWID FROM TABLE的成本呢?

回复 只看该作者 道具 举报

9#
发表于 2013-7-26 11:04:47
你帮他算算呗

回复 只看该作者 道具 举报

10#
发表于 2013-7-26 11:10:01
还要结合stopkey计算,呵呵

回复 只看该作者 道具 举报

11#
发表于 2013-7-26 11:20:40
呵呵,优化器偷懒了,算到一半就不算下去了。。。

回复 只看该作者 道具 举报

12#
发表于 2013-7-26 15:08:07
Maclean Liu(刘相兵 发表于 2013-7-25 22:43
另 分页写法一般是如下 这样, 和你的并不一样

恩,这个分页是可以省去一层,实际上这个分页是可能有错的,因为它没有对内层查询排序,很有可能两次查询结果不同。

回复 只看该作者 道具 举报

13#
发表于 2013-7-26 15:18:32
Maclean Liu(刘相兵 发表于 2013-7-26 09:58
Access Path: index (FullScan)
    Index: IND_CETL_CID_ED
    resc_io: 128232.00  resc_cpu: 3887031 ...

这个问题是解决了,通过建了一个全局索引,
原来那个索引是本地分区的。
索引只能通过加hint来重现当时的cost情况。
从输出结果上对比,全表的cost大于当时
的那个本地分区索引,但是oracle却取了全表扫描:


SQL> set linesize 200
SQL> /

1646 rows selected.


Execution Plan
----------------------------------------------------------
Plan hash value: 3327869365

----------------------------------------------------------------------------------------------------------------------------
| Id  | Operation                            | Name                | Rows  | Bytes | Cost (%CPU)| Time     | Pstart| Pstop |
----------------------------------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT                     |                     |     8 |  5472 |     6   (0)| 00:00:01 |       |       |
|*  1 |  VIEW                                |                     |     8 |  5472 |     6   (0)| 00:00:01 |       |       |
|*  2 |   COUNT STOPKEY                      |                     |       |       |            |          |       |       |
|   3 |    TABLE ACCESS BY GLOBAL INDEX ROWID| CPS_EFFECT_TEMP_LOG |     8 |   704 |     6   (0)| 00:00:01 | ROWID | ROWID |
|*  4 |     INDEX RANGE SCAN                 | IND_CETL_ED         |     8 |       |     4   (0)| 00:00:01 |       |       |
----------------------------------------------------------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

   1 - filter("RN">=1)
   2 - filter(ROWNUM<=3000)
   4 - access("C"."END_DATE">='2013-07-24 10:52:05' AND "C"."END_DATE"<='2013-07-24 10:55:05')


Statistics
----------------------------------------------------------
          0  recursive calls
          0  db block gets
        405  consistent gets
          0  physical reads
          0  redo size
      74514  bytes sent via SQL*Net to client
       1719  bytes received via SQL*Net from client
        111  SQL*Net roundtrips to/from client
          0  sorts (memory)
          0  sorts (disk)
       1646  rows processed

SQL> select *
  2    from (select A.*, ROWNUM RN
  3            from (select /*+full(c)*/c.advertiser_id,
                       c.campaign_id,
                       c.order_no,
                       c.product_no,
                       c.product_name,
  8                         c.action_price,
                       c.total_amount,
                       c.product_type,
                       c.commision_type,
                       c.data_type,
                       c.website_id
                  from cps_effect_temp_log c
                 where 1 = 1
16                     AND c.end_Date >= '2013-07-24 10:52:05'
                   AND c.end_Date <= '2013-07-24 10:55:05') A
         where ROWNUM <= 3000)
19  where RN >= 1;

1646 rows selected.


Execution Plan
----------------------------------------------------------
Plan hash value: 662673090

------------------------------------------------------------------------------------------------------------
| Id  | Operation            | Name                | Rows  | Bytes | Cost (%CPU)| Time     | Pstart| Pstop |
------------------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT     |                     |     8 |  5472 |   207K  (1)| 00:41:30 |       |       |
|*  1 |  VIEW                |                     |     8 |  5472 |   207K  (1)| 00:41:30 |       |       |
|*  2 |   COUNT STOPKEY      |                     |       |       |            |          |       |       |
|   3 |    PARTITION LIST ALL|                     |     8 |   704 |   207K  (1)| 00:41:30 |     1 |   111 |
|*  4 |     TABLE ACCESS FULL| CPS_EFFECT_TEMP_LOG |     8 |   704 |   207K  (1)| 00:41:30 |     1 |   111 |
------------------------------------------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

   1 - filter("RN">=1)
   2 - filter(ROWNUM<=3000)
   4 - filter("C"."END_DATE"<='2013-07-24 10:55:05' AND "C"."END_DATE">='2013-07-24 10:52:05')


Statistics
----------------------------------------------------------
          3  recursive calls
          2  db block gets
     767138  consistent gets
     760962  physical reads
     104248  redo size
      73759  bytes sent via SQL*Net to client
       1719  bytes received via SQL*Net from client
        111  SQL*Net roundtrips to/from client
          0  sorts (memory)
          0  sorts (disk)
       1646  rows processed

SQL> select *
  2    from (select A.*, ROWNUM RN
  3            from (select /*+index(c IND_CETL_CID_ED)*/c.advertiser_id,
                       c.campaign_id,
                       c.order_no,
  6                         c.product_no,
                       c.product_name,
                       c.action_price,
                       c.total_amount,
                       c.product_type,
                       c.commision_type,
                       c.data_type,
13                         c.website_id
                  from cps_effect_temp_log c
                 where 1 = 1
                   AND c.end_Date >= '2013-07-24 10:52:05'
17                     AND c.end_Date <= '2013-07-24 10:55:05') A
         where ROWNUM <= 3000)
19  where RN >= 1;


1646 rows selected.


Execution Plan
----------------------------------------------------------
Plan hash value: 3352369341

----------------------------------------------------------------------------------------------------------------------------
| Id  | Operation                            | Name                | Rows  | Bytes | Cost (%CPU)| Time     | Pstart| Pstop |
----------------------------------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT                     |                     |     8 |  5472 |   120K  (1)| 00:24:01 |       |       |
|*  1 |  VIEW                                |                     |     8 |  5472 |   120K  (1)| 00:24:01 |       |       |
|*  2 |   COUNT STOPKEY                      |                     |       |       |            |          |       |       |
|   3 |    PARTITION LIST ALL                |                     |     8 |   704 |   120K  (1)| 00:24:01 |     1 |   111 |
|   4 |     TABLE ACCESS BY LOCAL INDEX ROWID| CPS_EFFECT_TEMP_LOG |     8 |   704 |   120K  (1)| 00:24:01 |     1 |   111 |
|*  5 |      INDEX FULL SCAN                 | IND_CETL_CID_ED     |     1 |       |   120K  (1)| 00:24:01 |     1 |   111 |
----------------------------------------------------------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

   1 - filter("RN">=1)
   2 - filter(ROWNUM<=3000)
   5 - access(SYS_OP_DESCEND("END_DATE")>=HEXTORAW('CDCFCECCD2CFC8D2CDCBDFCECFC5CACAC5CFCAFF')  AND
              SYS_OP_DESCEND("END_DATE")<=HEXTORAW('CDCFCECCD2CFC8D2CDCBDFCECFC5CACDC5CFCAFF') )
       filter(SYS_OP_UNDESCEND(SYS_OP_DESCEND("END_DATE"))<='2013-07-24 10:55:05' AND
              SYS_OP_UNDESCEND(SYS_OP_DESCEND("END_DATE"))>='2013-07-24 10:52:05')


Statistics
----------------------------------------------------------
          1  recursive calls
          0  db block gets
     135306  consistent gets
     132810  physical reads
      94092  redo size
      71726  bytes sent via SQL*Net to client
       1719  bytes received via SQL*Net from client
        111  SQL*Net roundtrips to/from client
          0  sorts (memory)
          0  sorts (disk)
       1646  rows processed

回复 只看该作者 道具 举报

14#
发表于 2013-7-26 15:28:06
你在13楼给出的 global index成本确实 是低的, 但就10053 里看到的dex (FullScan)
    Index: IND_CETL_CID_ED  我认为并不比FULL TABLE SCAN低

回复 只看该作者 道具 举报

15#
发表于 2013-7-26 15:37:49
Maclean Liu(刘相兵 发表于 2013-7-26 15:28
你在13楼给出的 global index成本确实 是低的, 但就10053 里看到的dex (FullScan)
    Index: IND_CETL_CI ...


但是在输出的执行计划里面,显示的走ind_cetl_cid_ed,的cost是120K,
走全表的cost是200K。全表的cost值明显大于索引的

13楼里面贴的包括了使用hint强制全表和ind_cetl_cid_ed的执行计划对比

回复 只看该作者 道具 举报

16#
发表于 2013-7-26 15:38:43
hotdog04 发表于 2013-7-26 15:37
但是在输出的执行计划里面,显示的走ind_cetl_cid_ed,的cost是120K,
走全表的cost是200K。全表的cost值 ...

如7楼的回复

Cost: 128400.55仅仅是  index (FullScan)的成本

并不是 FULLSCAN之后就好了 还需要Fetch by rowid

回复 只看该作者 道具 举报

17#
发表于 2013-7-26 15:52:07
Maclean Liu(刘相兵 发表于 2013-7-26 15:38
如7楼的回复

Cost: 128400.55仅仅是  index (FullScan)的成本

     这个是不是可以理解成,set autot on的执行计划和10053没有完全显示cost信息,但是oracle自己在判断的时候引用了完整的cost?

回复 只看该作者 道具 举报

18#
发表于 2013-7-26 15:52:25
全表扫描的物理读次数怎么这么高和表的blocks数接近了

回复 只看该作者 道具 举报

19#
发表于 2013-7-26 15:57:59
kevinlin.ora 发表于 2013-7-26 15:52
全表扫描的物理读次数怎么这么高和表的blocks数接近了

这个也没什么奇怪的吧。。

回复 只看该作者 道具 举报

您需要登录后才可以回帖 登录 | 注册

QQ|手机版|Archiver|Oracle数据库数据恢复、性能优化

GMT+8, 2024-12-29 19:49 , Processed in 0.058714 second(s), 23 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部
TEL/電話+86 13764045638
Email service@parnassusdata.com
QQ 47079569