我使用oracle cdc 的同步模式,反复打开关闭窗口,同步50万条数据,每次重新打开窗口前,都会清除ChangeTable中的过期数据,但是效率非常低,我发现大部分时间都消耗在了删除过期数据和打开窗口上面。
并且在同步完这50W条数据后,查询ChangeTable的count(*),需要很长时间才能返回结果(这时ChangeTable中已经没有数据了)。
 COUNT(*)
----------
         0执行计划
----------------------------------------------------------
Plan hash value: 155902971-----------------------------------------------------------------------------------------------| Id  | Operation               | Name          | Rows  | Cost (%CPU)| Time
| Pstart| Pstop |-----------------------------------------------------------------------------------------------|   0 | SELECT STATEMENT        |               |     1 | 27359   (1)| 00:05:2
|       |       ||   1 |  SORT AGGREGATE         |               |     1 |            |
|       |       ||   2 |   PARTITION RANGE SINGLE|               |     1 | 27359   (1)| 00:05:2
|     1 |     1 ||   3 |    TABLE ACCESS FULL    | CDCSOURCE20$1 |     1 | 27359   (1)| 00:05:2
|     1 |     1 |-----------------------------------------------------------------------------------------------
Note
-----
   - dynamic sampling used for this statement (level=2)
统计信息
----------------------------------------------------------
          0  recursive calls
          0  db block gets
     100149  consistent gets
      76178  physical reads
          0  redo size
        422  bytes sent via SQL*Net to client
        415  bytes received via SQL*Net from client
          2  SQL*Net roundtrips to/from client
          0  sorts (memory)
          0  sorts (disk)
          1  rows processed发现consistent gets和physical reads异常高,是不是ChangeTable出了什么问题,导致与此表相关的操作都非常慢。