设为首页 加入收藏

TOP

闪回事务查询Flashback Transaction Query(四)
2015-11-10 12:17:38 来源: 作者: 【 】 浏览:15
Tags:事务 查询 Flashback Transaction Query
;


060016002F060000? ? 1940047? ? 1940079 AAAV4EAABAAARfpAAE? DELETE? ? ? ? ? ? ? ? ? ? ? ? ? insert into "SYS"."TEST"("EMPNO","SAL") values ('7654','1250');


060016002F060000? ? 1940047? ? 1940079 AAAV4EAABAAARfpAAD? DELETE? ? ? ? ? ? ? ? ? ? ? ? ? insert into "SYS"."TEST"("EMPNO","SAL") values ('7566','2975');


060016002F060000? ? 1940047? ? 1940079 AAAV4EAABAAARfpAAC? DELETE? ? ? ? ? ? ? ? ? ? ? ? ? insert into "SYS"."TEST"("EMPNO","SAL") values ('7521','1250');


060016002F060000? ? 1940047? ? 1940079 AAAV4EAABAAARfpAAB? DELETE? ? ? ? ? ? ? ? ? ? ? ? ? insert into "SYS"."TEST"("EMPNO","SAL") values ('7499','1600');


060016002F060000? ? 1940047? ? 1940079 AAAV4EAABAAARfpAAA? DELETE? ? ? ? ? ? ? ? ? ? ? ? ? insert into "SYS"."TEST"("EMPNO","SAL") values ('7369','800');


07000500D6050000? ? 1940035? ? 1940037 AAAV4EAABAAARfpAAA? UPDATE? ? ? ? ? ? ? ? ? ? ? ? ? update "SYS"."TEST" set "SAL" = '100' where ROWID = 'AAAV4EAABAAARfpAAA';


0900130035060000? ? 1939850? ? 1939857 AAAV4EAABAAARfpAAA? UPDATE? ? ? ? ? ? ? ? ? ? ? ? ? update "SYS"."TEST" set "SAL" = '800' where ROWID = 'AAAV4EAABAAARfpAAA';


16 rows selected


3、xid检索


最后我们聊聊查询flashback_transaction_query视图使用XID事务唯一标记特点。视图中xid类型是一个RAW类型,表现出来通常是一个字符串。


在实际中,我们常常发现使用字符串标记进行检索的时候速度比较慢。


SQL> select xid, start_scn, commit_scn, row_id, operation,undo_sql from flashback_transaction_query where xid='060016002F060000';


XID? ? ? ? ? ? ? START_SCN COMMIT_SCN ROW_ID? ? ? ? ? ? ? OPERATION? ? ? ? ? ? ? ? ? ? ? ? UNDO_SQL


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


060016002F060000? ? 1940047? ? 1940079 AAAV4EAABAAARfpAAN? DELETE? ? ? ? ? ? ? ? ? ? ? ? ? insert into "SYS"."TEST"("EMPNO","SAL") values ('7934','1300');


(篇幅原因,有省略……)


15 rows selected


Executed in 10.686 seconds


在官方推荐的查询方式中,建议使用hextoraw函数对字符串进行处理一下。


SQL> select xid, start_scn, commit_scn, row_id, operation,undo_sql from flashback_transaction_query where xid=hextoraw('060016002F060000');


XID? ? ? ? ? ? ? START_SCN COMMIT_SCN ROW_ID? ? ? ? ? ? ? OPERATION? ? ? ? ? ? ? ? ? ? ? ? UNDO_SQL


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


060016002F060000? ? 1940047? ? 1940079 AAAV4EAABAAARfpAAN? DELETE? ? ? ? ? ? ? ? ? ? ? ? ? insert into "SYS"."TEST"("EMPNO","SAL") values ('7934','1300');


060016002F060000? ? 1940047? ? 1940079 AAAV4EAABAAARfpAAM? DELETE? ? ? ? ? ? ? ? ? ? ? ? ? ?


(篇幅原因,有省略……)


15 rows selected


Executed in 0.094 seconds


从10s到0.09s,这就是巨大的性能差异。我们可以从执行计划角度分析一下原因。


SQL> explain plan for select xid, start_scn, commit_scn, row_id, operation,undo_sql from flashback_transaction_query where xid='060016002F060000';


Explained


Executed in 0.172 seconds


SQL> select * from table(dbms_xplan.display);


PLAN_TABLE_OUTPUT


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


Plan hash value: 1115820779


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


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


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


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


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


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

首页 上一页 1 2 3 4 下一页 尾页 4/4/4
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇闪回版本查询Flashback Version Q.. 下一篇SQLite3 设置插入触发器

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: