加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

CTAS优化FLASHBACK_TRANSACTION_QUERY查询使用

发布时间:2020-12-15 18:19:16 所属栏目:百科 来源:网络整理
导读:CTAS 优化 FLASHBACK_TRANSACTION_QUERY 查询使用 ? 问题: FLASHBACK_TRANSACTION_QUERY 使用 where 的查询,执行很慢近 8 分钟( 00:07:58.76 )、 consistent gets 近 3 百万( 3260345 )。每次查询竟然需要 8 分钟,实在不能忍受。 答案: 优化视图,不

CTAS优化FLASHBACK_TRANSACTION_QUERY查询使用

?

问题:

FLASHBACK_TRANSACTION_QUERY 使用where的查询,执行很慢近8分钟(00:07:58.76)、consistent gets3百万(3260345)。每次查询竟然需要8分钟,实在不能忍受。

答案:

优化视图,不了解。最后采取了ctas建立临时表doudou_test的方式解决问题。同样的查询仅仅需要0.12秒,consistent gets仅仅5632从等待时间上优化4000

总结:

1、? 主观矛盾解决不了,可以转换为客户矛盾进行解决!思路要灵活!优化视图会是以后研究的课题。这里暂不深研究了。

2、?视图查询是可以使用基表索引

http://docs.oracle.com/cd/E11882_01/server.112/e25789/schemaob.htm#autoId11?

前后调整性能如下图

?

FLASHBACK_TRANSACTION_QUERY视图

create or replace view flashback_transaction_query as

select xid,start_scn,start_timestamp,

????????? decode(commit_scn,commit_scn,281474976710655,NULL,commit_scn)

????????? commit_scn,commit_timestamp,

????????? logon_user,undo_change#,operation,table_name,table_owner,

????????? row_id,undo_sql

from sys.x$ktuqqry;

?

SQL> select? UNDO_SQL from FLASHBACK_TRANSACTION_QUERY? where table_name='INQUIRYSENDCASE'

? 2? AND TO_CHAR(COMMIT_TIMESTAMP,'YYYY/MM/DD HH24:MI:SS')>'2013/1/10 23:59:00';

?

no rows selected

?

Elapsed: 00:07:58.76

?

Execution Plan

----------------------------------------------------------

Plan hash value: 1115820779

?

------------------------------------------------------------------------------

| Id? | Operation??????? | Name????? | Rows? | Bytes | Cost (%CPU)| Time???? |

------------------------------------------------------------------------------

|?? 0 | SELECT STATEMENT |?????????? |???? 1 |? 2141 |???? 0?? (0)| 00:00:01 |

|*? 1 |? FIXED TABLE FULL| X$KTUQQRY |???? 1 |? 2141 |???? 0?? (0)| 00:00:01 |

------------------------------------------------------------------------------

?

Predicate Information (identified by operation id):

---------------------------------------------------

?

?? 1 - filter("TABLE_NAME"='INQUIRYSENDCASE' AND

????????????? TO_CHAR(INTERNAL_FUNCTION("COMMIT_TIMESTAMP"),'YYYY/MM/DD

????????????? HH24:MI:SS')>'2013/1/10 23:59:00')

?

?

Statistics

----------------------------------------------------------

???? 607172? recursive calls

????????? 0? db block gets

???3260345?consistent gets

?????? 2958? physical reads

????????? 0? redo size

??????? 325? bytes sent via SQL*Net to client

??????? 457? bytes received via SQL*Net from client

????????? 1? SQL*Net roundtrips to/from client

??????? 379? sorts (memory)

????????? 0? sorts (disk)

????????? 0? rows processed

????? ????

DOUDOU_TEST测试表的建立doudou_test 267975行)??????

create table doudou_test as select * from FLASHBACK_TRANSACTION_QUERY

?

SQL> select? UNDO_SQL from doudou_test? where table_name='INQUIRYSENDCASE'

? 2? AND TO_CHAR(COMMIT_TIMESTAMP,'YYYY/MM/DD HH24:MI:SS')>'2013/1/10 23:59:00';

?

no rows selected

?

Elapsed: 00:00:00.12

?

Execution Plan

----------------------------------------------------------

Plan hash value: 1163728840

?

--------------------------------------------------------------------------------

-

?

| Id? | Operation???????? | Name??????? | Rows? | Bytes | Cost (%CPU)| Time

|

?

--------------------------------------------------------------------------------

-

?

|?? 0 | SELECT STATEMENT? |???????????? |?? 123 |?? 257K|? 1519?? (1)| 00:00:19

|

?

|*? 1 |? TABLE ACCESS FULL| DOUDOU_TEST |?? 123 |?? 257K|? 1519?? (1)| 00:00:19

|

?

--------------------------------------------------------------------------------

-

?

?

Predicate Information (identified by operation id):

---------------------------------------------------

?

?? 1 - filter("TABLE_NAME"='INQUIRYSENDCASE' AND

????????????? TO_CHAR(INTERNAL_FUNCTION("COMMIT_TIMESTAMP"),'YYYY/MM/DD

????????????? HH24:MI:SS')>'2013/1/10 23:59:00')

?

Note

-----

?? - dynamic sampling used for this statement

?

?

Statistics

----------------------------------------------------------

???????? 88? recursive calls

????????? 0? db block gets

? ?????5632?consistent gets

?????? 5547? physical reads

????????? 0? redo size

??????? 325? bytes sent via SQL*Net to client

??????? 457? bytes received via SQL*Net from client

????????? 1? SQL*Net roundtrips to/from client

????????? 0? sorts (memory)

0???????? sorts (disk)

?

?

寄语:

???????? 本文,仅是个人记录一下应用思路,整体实验可能存在遗漏,竟请各位大师指点。但是对视图FLASHBACK_TRANSACTION_QUERY进行条件查询是不可取的,性能超低!(提醒自己)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读